Merhaba arkadaşlar,
Bu makalemde sizlere silverligth 2.0 da database den en kolay şekilde veri çekmeyi adım adım anlatacağım.
1.Visual studio 2008 i açıp File menüsünden New Project diyelim ve aşağıdaki gelen ekrandan silverlight application u seçelim.
(Not: Bu seçeneğin gelebilmesi içinbilgisayarınıza,
Microsoft®
Silverlight™ 2 Software Development Kit Beta 2 ,
Microsoft
Silverlight Tools Beta 2 for Visual Studio 2008
eklentilerini kurmanız gerekiyor. )

2.Daha sonra açılan pencereyede ok diyerek silverlight projemizi açmış oluyoruz.

3.Benim projemin ismi SilverlightApplication4 ,sizde farklı isimlerde olabilir. Solution Explorer da en üssten SilverlightApplicationWebe sağ tuş yapıp
Add New Item diyelim.

4.Gelen pencereden LINQ to SQL Classes nesnesini seçelim ve Add butonuna basalım.

5.Add dedikten sonra aşağıdaki gibi bir uyarı mesajı alırsınız.Burada bir App_Code klasörü oluşturup oluşturulmayacağı soruluyor.Buna Evet diyelim.

6. Gördüğünüz gibi App_Code klasörünün içerisine DataClasses.dbml dosyası oluşturuldu. Bunu açıyoruz ve server explorer penceresinden buraya bir tabloyu sürüklüyoruz. Benim YAZARLAR adında bir tablom vardı bunu bunu sürükleyip bıraktıktan sonra aşağıdaki gibi bir görüntü elde ettim.

7.Daha sonra yine SilverlightApplication4Web projemize sağ tuş yapıp Add New Item deyip Silverlight-enabled WCF Service nesnesini ekliyoruz.

8.Görüdüğünüz gibi App_Code klasörümde Service.cs adında bir class oluştu. Bunun içerisine aşağıdaki kodları yazdım. Burada LINQ ile datadan basit bir sorgu çekiyorum.

using System;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.Collections.Generic;
using System.Text;
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Service
{
[OperationContract]
public List<YAZARLAR> YazarlariVer()
{
DataClassesDataContext db = new DataClassesDataContext();
var mVendors = from vendor in db.YAZARLARs
select vendor;
return mVendors.ToList();
}
}
9.
SilverlightApplication4 projemizdeki References klasörüne sağtuş yapıp Add Service Reference diyelim. Karşımıza aşağıdaki ekran gelecektir. Buradan discover in yanındaki ok tuşuna basıp Services in Solution diyelin. Gördüğünüz gibi Address kutucuğu doldu.Burda localhosttan sonra yazan port numarası önemli.onu sabitlememiz gerekecek. Sonraki adımlarda bunu yapacağız. Buraya ok deyip kapatalım.

10.Şimdi Page.xaml dosyasını açıp toolbox tan datagrid nesnesini buraya sürükleyip bırakın.Datagridin son hali aşağıdaki gibi olacak.
Bunun kodlarını veriyorum ancak direk kopyala yapıştır yaparsanız datagrid nesnesi tanınmayacaktır. Mutlaka toolbox tan bir datagrid sürükleyin daha sonra veriğim datagrid kodunu yapıştırabilirsiniz.İşte datagrid kodumuz;
<UserControl xmlns:my="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" x:Class="SilverlightApplication4.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="869" Height="300" Loaded="UserControl_Loaded" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d">
<Grid x:Name="LayoutRoot" Background="White">
<my:DataGrid x:Name="DtGrid" AlternatingRowBackground="Beige" AutoGenerateColumns="False"
CanUserResizeColumns="True" RenderTransformOrigin="0.428999990224838,0.5" Margin="0,0,8,0"
d:LayoutOverrides="GridBox" HorizontalAlignment="Stretch">
<my:DataGrid.Columns>
<my:DataGridTextColumn Header="YAZARID" DisplayMemberBinding="{Binding YAZARID}" FontSize="11" />
<my:DataGridTextColumn Header="YAZARADI" DisplayMemberBinding="{Binding YAZARADI}" FontSize="11" />
</my:DataGrid.Columns>
</my:DataGrid>
</Grid>
</UserControl>
Burada dikkat etmeniz gereken bir noktada
<UserControl
xmlns:my="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"
x:Class="SilverlightApplication4.Page"
satırındaki SilverlightApplication4.Page yazan yeri kendi projenizin adı ile değiştirmeniz gerekiyor. örn: projem.Page

11.Page.xaml.cs dosyasınada aşağıdaki gibi kodlama yapmalıyız.Burada servise asenkron olarak erişip ve datagrid nesnesine gelen veriyi bağlıyoruz.

private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
ServiceReference1.ServiceClient webService = new ServiceReference1.ServiceClient();
webService.YazarlariVerCompleted += new EventHandler<SilverlightApplication4.ServiceReference1.YazarlariVerCompletedEventArgs>(webService_YazarlariVerCompleted);
webService.YazarlariVerAsync();
}
void webService_YazarlariVerCompleted(Object sender, ServiceReference1.YazarlariVerCompletedEventArgs e)
{
DtGrid.ItemsSource = e.Result;
}
12. Bu arada SilverlightApplication4Web e tıkladığınızda Properties penceresinde dinamik port true olarak işaretlidir bunu false yapmayı unutmayın.
13.Projeyi çalıştırdığımızda aşağıdaki gibi bir görüntü elde ettik.

Umarım makalem silverlight konusunda sizlere yardımcı olmuştur.Yorumlarınızı ve Sorularınızı bekliyorum.
Saygılar,
Mustafa KOÇER
mkocer@dotnetkosesi.com
3 kişi tarafından 2.3 olarak değerlendirildi
- Currently 2,333333/5 Stars.
- 1
- 2
- 3
- 4
- 5