على الرغم من أن ASP.NET DataGrid معروف جيدًا بأنه عنصر تحكم جيد جدًا في الجدول، إلا أنه لا يمكننا الثناء على وظيفة التحرير في DataGrid بأخذ وظيفة إرسال البيانات في DataGrid كمثال، هناك بالفعل مشكلة كبيرة: في DataGrid، كل سطر واحد يحرر. ، يجب عليك إرسال سطر واحد، وهو ما يسمى "تحرير سطر واحد، إرسال سطر واحد". في هذه الحالة، إذا تم تحرير عدد كبير جدًا من الأسطر، فلن تكون عملية المستخدم مرهقة فحسب، بل ستتسبب أيضًا في الوصول المتكرر. إلى الخادم، مما يقلل بشكل كبير من كفاءة النظام.
بالطبع هناك حل متجدد وهو نقل المحتوى المراد تحريره إلى صفحات أخرى وتحريره في TextBox. ومع ذلك، إذا فكرت في الأمر بعناية، ألا تخدعك هذه الطريقة أيضًا، عندما نقوم بالتحرير في الشبكة، لا يمكننا دائمًا استخدام مفتاح Tab للتنقل بين الشبكة (مربع النص) إذا كانت الاستجابة تتطلب إدخال الأحداث المبرمجين يضيعون الكثير من الطاقة على التطوير.
كيفية حل المشاكل المذكورة أعلاه؟ الآن أوصيك باستخدام DataGrid المحلي الذي أستخدمه: SmartGrid (يمكن تنزيله من Sky Software Station: http://www.skycn.com/soft/23547.html ). أستخدم عنصر التحكم هذا لفترة طويلة الآن دعونا نناقش طريقة الإرسال متعدد الصفوف في SmartGrid: لا يحتوي SmartGrid على أعمدة الأزرار في DataGrid، وبدلاً من ذلك، يحتوي النموذج بأكمله على زر إرسال واحد فقط، سواء قمت بتغيير صف واحد أو صفوف متعددة، يمكنك إرسالها جميعًا مرة واحدة ، على النحو التالي دعونا نلقي نظرة على بعض الأمثلة:
مثال:
الصورة أعلاه هي مثال أفضل للتحرير، يوضح المثال أنه يمكنك تحرير عدة أسطر أو سطر واحد، ثم إرسالها معًا.
الرمز:
تعديل رمز الزر:
Private void btonSave_Click(object sender, System.EventArgs e)
{
this.DataGrid1.ReadOnly = false;// أدخل تحرير
this.DataGrid1.AllowAdd = true;// السماح بإضافة
this.DataGrid1.AllowDelete = true; //السماح بالحذف
}
هذا الرمز هو سمة فريدة للشبكة الذكية، يمكنك تعيين وظائف مختلفة لإضافة
رمز الزر وحذفه وتحريره وحفظه:
Private void Button2_Click(object sender, System.EventArgs e)
{
DataTable t = (DataTable)this.SmartGrid1.DataSource;
this.sqlDataAdapter1.Update(t)
;
this.sqlDataAdapter1.Fill(t)
; .SmartGrid1.DataSource = t;
}
هذا هو إرسال البيانات إلى قاعدة البيانات ككل. هذا الأسلوب مناسب لكميات كبيرة من البيانات.
هناك أيضًا طريقة لإرسال البيانات إلى
رمز الخادم سطرًا تلو الآخر:
الفراغ الخاص btonSave_Click(object sender, System.EventArgs e)
{
DataTable tb=(DataTable)this.SmartGrid1.DataSource;
SqlParameter[] بارامترات=new SqlParameter[5];
foreach(DataRow dr in tb.Rows)
{
بارامترات[0]=new SqlParameter("@customerId", ""+dr[1]+"");
بارامترات
[1]=new SqlParameter("@companyName"،"+dr[0]+"");
SqlParameter("@contactName", ""+dr[2]+"");
بارامترات[
3]=new SqlParameter("@contactTitle"،"+dr[3]+"");
SqlParameter("@address", ""+dr[4]+"");
//
EamPd هي فئة. Execute هي وظيفة لتنفيذ الإجراءات المخزنة. المعلمات المطلوبة للإجراءات المخزنة
"،حدود)؛
}
}