السلام عليكم ورحمة الله وبركاتة .....
طريقة ربط السيلفر لايت بالداتابيز
اولا يجب التنبية على خطوة وهي اننا لن نقوم بربط الداتابيز بالسيلفر لايت مباشرتاً لكن عن طريق وسيط وهو WCF فلو تلاحظو في الUSING التي تتبع مشروع السيلفر لايت لايمكننا من إضافة
ال using التي تدعم الado وغيرها مثل المشروع معمول بMicrosoft Visual Studio 2010 طبعاً .
بسم الله نبداء....
اولا نقوم بإنشاء مشروع جديد SilverlightApplication ثم نقوم بإضافة textbox و Button
في الكود التالي
<StackPanel>
<TextBox Name="t1" Height="20" Width="300"></TextBox>
<Button Height="20" Width="100" Name="b1" Content="ok" Click="Button_Click" ></Button>
</StackPanel>ثم نقوم بأضافة silverlight-enabled WCF service
وهذا عن طريق النظر الى solution explore ونلاحظ ان المشروع يتكون من قسمين SilverlightApplication1 و SilverlightApplication1.Web نضغط باليمين على القسم الثاني
ونقومadd >new Item ثم من اليسار قسم السيلفر لايت نضيف silverlight-enabled WCF service .....
نلاحظ تكون ملف بأسم Service1.svc هذا هو الملف اللذي سوف يكون الوسيط ..... ثم نقوم بالضغط على الملف باليمين view in browse وسوف تفتح لنا صفحة نقوم بنسخ رابط تلك الصفحة .
وندهب الى القسم الاول من المشروع وهو SilverlightApplication1 ونضغط علية باليمين ايضا add Service References ونقوم بلصق الرابط في الخانة الاعلى ثم go ونلاحظ ظهور الدالة
التي موجودة في Service1.svc وهي dowork ...
بعدها نعود للService1.svc.cs ونقوم بعمل الusing
using System.Data; using System.Data.SqlClient;
ثم نقوم بالتعديل على الدالة طبعا تستطيع تغيير الاسم او إضافة دالة اخرى حسب الحاجة ....
نقوم بأنشاء الكنكشن والاستعلام وغيرة للأتصال بالداتا بيز
وهذا الكود كمثال بسيط ...
[OperationContract]
public string DoWork(int x)
{
// Add your operation implementation here
SqlConnection con = new SqlConnection("server=.;uid=sa;pwd=123;database=twd");
SqlDataAdapter da = new SqlDataAdapter("select name from stu where id=" + x, con);
DataSet ds = new DataSet();
da.Fill(ds, "stu");
return ds.Tables["stu"].Rows[0]["name"].ToString();
}بعدها نقوم بالرجوع للصفحة الرئيسية اي MainPage.xaml
ونقوم بعمل
using SilverlightApplication2.ServiceReference1;
في الusing للصفحة
لكي نستخدم الدالة dowrk طبعا ...
وبعدها نقوم بأنشاء كائن من نوع Service1Client
وهذا مثال للكود
private void Button_Click(object sender, RoutedEventArgs e)
{
Service1Client obj = new Service1Client();
obj.DoWorkCompleted += new EventHandler<DoWorkCompletedEventArgs>(obj_DoWorkCompleted);
obj.DoWorkAsync(1);
}ثم نقوم بأضافة الsender تبع الدالة ويكون الكود النهائي
private void Button_Click(object sender, RoutedEventArgs e)
{
Service1Client obj = new Service1Client();
obj.DoWorkCompleted += new EventHandler<DoWorkCompletedEventArgs>(obj_DoWorkCompleted);
obj.DoWorkAsync(1);
}
private void obj_DoWorkCompleted(object sender, DoWorkCompletedEventArgs e)
{
t1.Text = e.Result;
}طبعا الداتا بيز حسب الكود المعطى يمكنك من إنشاء داتابيز بأسم twd ولديها جدول يحوي ثلاثة اعمدة الاول id من نوع int والثاني name من نوع nvarchar والثالث mark من نوع int
واسم الجدول stu
وقم بتعبأتة بأي بيانات لتقوم بتسجيل رقم الطالب في الtextbox ويحظر لك اسمة
والحمد لله رب العالمين.......