UpDate in LINQ
بعد الحديث في اخر درس عن طريقة استخدام LinqDataSource , اليوم راح نتكلم عن عمل تحديث لقاعدة البيانات بأستخدام الـ LINQ .
طبعا كل شخص له طريقة خاصة في عمل التحديث على القاعدة اعتمادا على شكل عرض البيانات في موقعة لكن سأحاول انا اشرح الاساسيات لربما طريقة او طريقتين لفهم المبدأ وبعدها تعمل ما تريد .
اولآ: لنبدأ بطريقة التحديث بالكود لو نرجع الى درس الاضافة وطريقة عمله حيث اننا نعرف object من الجدول الذي نريد الاضافة له وبعدها نشير الى حقولة مع الادوات التي سوف ندخل بها البيانات.
في البداية راح نكتب كود بدون استخدام أي ادوات لأدخال البيانات :
- لنفتح صفحة جديدة ونضع Button ونضغط دبل كليك لتفعيل حدث الـ Click ونكتب بداخل الحدث
LinqtutorialDataContext db = new LinqtutorialDataContext();
var Emp = db.Employees.SingleOrDefault(p => p.EmpID == 1);
Emp.EmpName = "Ali";
db.SubmitChanges();بكل بساطة ما فعلته في الكود اخترت الموظف الذي يحمل ID رقم 1 وبعدها عملت تعديل على حقل الاسم الى Ali , اعمل هذا الكود والقي نظرة على الجدول .
انا ذكرت في السطور الاولية ان كل شخص له طريقتة الخاصة اعتمادا على شكلة عرض البيانات في موقعة لعملية التعديل لنقم نحن بطريقة نستطيع منها جلب بيانات الموظف اعتمادا على رقمة وبعدها نعمل تعديل للبيانات ونحفظ التعديل
اولآ: امسح كل ما موجود في الصفحة وضع هذا الشكل:
<table>
<tr>
<td colspan="3" align="center"><span style=" color:#555; font-size:20px;">Employee List</span></td>
</tr>
<tr>
<td>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False">
</asp:GridView>
</td>
<td>
<asp:LinqDataSource ID="LinqDataSource1" runat="server">
</asp:LinqDataSource>
</td>
</tr>
</table>
<br />
<table>
<tr>
<td><span style=" color:#555; font-size:17px;">Employee ID</span></td>
<td><asp:TextBox ID="TextBox_Id" runat="server"></asp:TextBox></td>
<td><asp:Button ID="Button_loadInfo" runat="server" Text="Load details"
onclick="Button_loadInfo_Click" /></td>
</tr>
<tr>
<td><span style=" color:#555; font-size:17px;">Employee Name</span></td>
<td><asp:TextBox ID="TextBox_Name" runat="server"></asp:TextBox></td>
</tr>
<tr>
<td><span style=" color:#555; font-size:17px;">Employee Age</span></td>
<td><asp:TextBox ID="TextBox_Age" runat="server"></asp:TextBox></td>
</tr>
<tr>
<td><span style=" color:#555; font-size:17px;">Employee Department</span></td>
<td>
<asp:DropDownList ID="DropDownList_Deprt" runat="server">
</asp:DropDownList>
</td>
<td>
<asp:LinqDataSource ID="LinqDataSource2" runat="server">
</asp:LinqDataSource>
</td>
</tr>
<tr>
<td colspan="3">
<asp:Button ID="Button_update" runat="server" onclick="Button1_Click" Text="UPDATE" />
</td>
</tr>
</table>لنقم بتعديل الـ LinqDataSource1 لتستعرض جدول الموظفين وربطها مع GridView1 .
لنقم بتعديل الـ LinqDataSource2 لتستعرض جدول الاقسام ونربطها مع اداة
DropDownList_Deprt
وطريقة الربط بـ DropDownList_Deprt بعد استعراض الجدول في LinqDataSource2 نحدد DropDownList_Deprt ونفتح السهم اعلى اليمين الموجود في الاداة ونختار Chooes Data Source , راح تظهر لنا ثلاث خيارات
الخيار الاول: نختار LinqDataSource2
الخيار الثاني: نختار DepName
الخيار الثالث: نختار DepID
وبعدها موافق.
الان لنفعل حدث الـ Click للـ Button_loadInfo ونكتب فيه
LinqtutorialDataContext db = new LinqtutorialDataContext();
int Id = Convert.ToInt32(TextBox_Id.Text);
Employee EmpInfo = db.Employees.Single(p => p.EmpID == Id);
TextBox_Name.Text = EmpInfo.EmpName.ToString() ;
TextBox_Age.Text = EmpInfo.EmpAge.ToString();
DropDownList_Deprt.SelectedValue = EmpInfo.DepID.ToString();قبل شرح الكود المكتوب اعلى لنستعرض الصفحة ونكتب في الـ textbox المقابل لي
EmployeeID رقم 1 وبعدها نضغط على رز Load details ولاحظ ماذا يحدث.
نلاحظ ان بيانات الموظف تعرض في الـ textboxs و الـ DropDownList تعرض ماهو القسم الذي ينتمي له هذا الموظف
شرح الكود: بكل بساطة استخدمت طريقة تعريف object لكن في هذا الكود عملت العكس حيث اني جعلت الادوات تستعرض ببيانات الحقول اعتمادا على رقم الـ ID المكتوب.
لننتقل الى اخر مرحلة وهي مرحلة التعديل على البيانات , طبعا اخر شيئ عملناه هو استرجاع البيانات في الادوات والمقصد من الادوات هي Textboxs كل ماسنفعلة هو تغير هذه البيانات وحفظها مع العلم لن نعمل أي تغير في الـ textbox الخاص بـ ID ( يعني فقط سوف نعمل تعديل على الاسم – العمر – والقسم).
لنبدأ:
لنقم بتفعيل حدث الـ Click لل Button_update ونكتب الكود التالي:
LinqtutorialDataContext db = new LinqtutorialDataContext();
int Id = Convert.ToInt32(TextBox_Id.Text);
int age = Convert.ToInt32(TextBox_Age.Text);
var update = db.Employees.Single(p => p.EmpID == Id);
// TODO: take value from textboxs.
update.EmpName = TextBox_Name.Text;
update.EmpAge = age;
update.DepID = Convert.ToInt32(DropDownList_Deprt.SelectedValue);
db.SubmitChanges();
GridView1.DataBind();استعرض الصفحة ولنعمل تغير ونلاحظ ماذا يحدث بعد التعديل سنلاحظ التغير يظهر في الـ GridView .
مثل الطريقة عملنا object واشرنا الى الحقول بأنها تأخد البيانات من الادوات
اعتمادا على الـ ID الموجود في اول textbox
قبل مااختم الدرس اخواني انا اكتب امثلة بدون التحقق من المدخلات فعليك انت ان اردت استخدام الطرق التحقق من مدخلات المستخدم للحفاظ على امن موقعك
وفي النهاية اتمنى ان يكون الدرس مفهوم , واذا توجد ملاحظات على طريقة الشرح اخبروني .
good luck
