التحكم في بيانات DataGrid
يتيح لك التحكم في بيانات DataGrid إنشاء قائمة بتنسيق مصدر البيانات الغني. بالإضافة إلى ذلك ، فإنه يدعم أيضًا عناصر الاختيار مع عمليات أخرى.
تستخدم الأمثلة الأربعة لهذا القسم الجداول التي تتضمن معلومات العنوان (العنوان ، معرف العنوان ، المؤلف ، السعر وتاريخ النشر). يتم الحفاظ على جميع البيانات مع XML في THELSDB.XML. عند إنشاء صفحة لتمثيل محتوى هذا الجدول وتحديد الكتب ، تتبع هذه الأمثلة الطريقة الإضافية. تحتوي قائمة الكود على نص الجسم الأسود للإشارة إلى التغيير الذي تم إجراؤه بواسطة عينة مدمجة في المثال السابق.
اختبار من THELEDB.XML:
<rout>
<schema id = documentElement TargetNamesPace =
xmlns = http://www.w3.org/1999/xmlschema
Xmlns: msdata = جرة: Schemas-Microsoft-COM: XML-MSDATA>
<اسم العنصر = الجدول>
<complextype content = elementsonly>
<element name = title_id type = string> </element>
<element name = title type = string> </element>
<element name = au_name type = string> </element>
<اسم العنصر = السعر msdata: datatype = system.currency
minoccurs = 0
اكتب = string> </element>
<element name = pubdate type = timeInstant> </element>
</complextype>
<nique name = titleconstraint msdata: primarykey = true>
<selector>
<field> title_id </field>
</quispe>
</element>
</schema>
<ConductElement>
<title>
<title_id> bu1032 </itlect_id>
<title> دليل قاعدة بيانات المدير التنفيذي المزدحم </title>
<UM_NAME> Marjorie Green </au_name>
<price> 19.99 </Price>
<pubdate> 1991-06-12T07: 00: 00 </pubdate>
</title>
مرنة
</documentelement>
</root>
في تطبيق ويب نموذجي ، من أجل الحصول على أقصى قدر من قابلية التوسع والأداء ، من المحتمل أن يستخدم خدمات الويب أو كائنات الأعمال للوصول إلى البيانات. من أجل تبسيط هذه الأمثلة والتركيز على استخدام DataGrid بدلاً من الوصول إلى البيانات ، نختار تحميل البيانات في وقت واحد عند بدء التطبيق ، وفي حالة تطبيق ASP في Global.asax.
Trunk من Global.asax:
public void application_onstart () {) {)
FileStream fs = null ؛
مجموعة البيانات ds = null ؛
يحاول {
fs = new filestream (server.mappath (thetlesdb.xml) ، filemode.open ،
fileAccess.Read) ؛
ds = مجموعة بيانات جديدة () ؛
// قم بتحميل البيانات في ملف XML إلى مجموعة البيانات
ds.Readxml (FS) ؛
} أخيراً {
if (fs! = null) {
fs.close () ؛
fs = null ؛
}
}
// cchestrate مجموعة البيانات بسرعة عالية لحالة التطبيق بحيث يمكن استخدامها في صفحة واحدة
التطبيق [thetlesDatAset] = DS ؛
}
DataGrid1
يوضح DataGrid1 الاستخدام الأساسي لـ DataGrid ، وهو ما يفسر كيف يستخدم عنصر التحكم أقل رمز مستخدم لإنشاء وظيفة غنية.
تين
إدراج من dataGrid1.aspx:
<٪@page language = c# src = datagrid.cs errantits = samples.datagridPage ٪>
مرنة
<ASP: DataGrid Runat = معرف الخادم = TitleSGrid>
</asp: datagrid>
أظهر ملف .aspx أعلاه عبارة بدون أي سمات دون أي سمات للتحكم في بيانات البيانات.
datagrid.cs:
عينات مساحة الاسم {
مرنة
بيانات الفئة العامة: صفحة {
DataGrid المحمية TitleSgrid.
iCollection getTitlesList () {
// Retore قائمة العنوان من مجموعة بيانات ذاكرة التخزين المؤقت عالية السرعة في حالة التطبيق.
تطبيقات مجموعات البيانات Application = (DataSet)
if (thetlesdataset! = null) {
إرجاع ToolsDataset.tables [title] .DefaultView ؛
}
آخر {
العودة لاغية.
}
}
private void loadtitlesgrid () {) {)
// بيانات البحث من قاعدة البيانات
icollection tetleslist = getTitlesList () ؛
// قم بتعيين مصدر بيانات عنصر التحكم
TitleSgrid.datasource = TetlesList ؛
// وجعلها تستخدم مصدر البيانات هذا لإنشاء مشروعه
TitleSgrid.Databind () ؛
}
تجاوز الفراغ المحمي (eventArgs e) {{
base.onload (e) ؛
if (! ispostback) {
// انظر هذه الصفحة لأول مرة
loadtitlesgrid () ؛
}
}
}
}
يحتوي ملف .CS على الرمز المستخدم لهذه الصفحة. هذا الرمز هو نفسه وظيفة الكود المستخدمة في مثال Datalist1. في الطلب الأول لهذه الصفحة ، يغطي الطريقة عبر الإنترنت لاسترداد البيانات وتعيين خاصية مصدر البيانات لعنصر التحكم قبل استدعاء Databind. سيؤدي ذلك إلى جعل DataGrid إنشاء مشروعه ، وهو صفوف ضرورية في الجدول. في عملية إرجاع المعالجة ، أعادت DataGrid إنشاء المشروع من الحالة (تتضمن هذه الحالة محتوى الخلية المحفوظة في الطلب الأخير).
يوضح هذا المثال وظيفة خاصية AutogenerateColumns لعنصر DataGrid. القيمة الافتراضية لهذه السمة صحيحة. عند التعيين على True ، ستستخدم DataGrid الانعكاس للتحقق من مصدر البيانات وكائناتها وإنشاء عمود لكل سمة أو حقل عام. في هذا المثال ، يمثل التحكم جميع الحقول الحالية في جدول "العنوان". تتيح هذه الميزة قائمة أقل رمز المستخدم لإنشاء قائمة بأي مصدر للبيانات بسرعة وسهولة.
كل نوع من العمود الأوتوماتيكي ملزم. يحول نوع العمود هذا قيمة السمة المرتبطة به إلى سلسلة يجب استخدامها كنافذة.
DataGrid2
يشرح DataGrid2 تعيين بيانات البيانات بواسطة الأعمدة المحددة في ملف .aspx.
الشكل 5. الأمثلة التي تم إنشاؤها باستخدام DataGrid العمود المحدد
مقتطف من dataGrid2.aspx:
<٪@page language = c# src = datagrid.cs errantits = samples.datagridPage ٪>
مرنة
<ASP: DataGrid Runat = معرف الخادم = TitlesGrid
AutogenerateColumns = false>
<اسم poperty = الأعمدة>
<ASP: BoundColumn HeadeLtext = title datafield = title/>
<ASP: BoundColumn HeadeLtext = المؤلف datafield = au_name/>
<ASP: BoundColumn HeaderText = Date DataField = PubDate/>
<ASP: BoundColumn HeadeLtext = Price DataField = Price/>
</property>
</asp: datagrid>
أظهر ملف .aspx عنصر تحكم بيانات مع عمود تعيينه المستخدمون. يستخدم هذا المثال نفس الملفات المدعومة من التعليمات البرمجية مثل dataGrid1 لأنه لا يوجد رمز مطلوب.
تم تعيين خاصية AutoGenerateColumns الخاصة بـ DataGrid ، وذلك لمنع التحكم في الأعمدة تلقائيًا ، وتتيح للمستخدمين أن يكونوا مسؤولين عن تحديد الأعمدة التي سيتم تمثيلها في الجدول.
هناك العديد من الفوائد:
يمكنك التحكم في ترتيب الأعمدة. قائمة بترتيب بيان. من ناحية أخرى ، يتم تمثيل العمود التلقائي بالترتيب الذي تم استرداده بواسطة الصورة.
يمكنك تحديد رأس كل عمود باستخدام خاصية HeaderText للعمود. في المثال السابق ، يشير رأس التسمية إلى اسم الحقل ، والذي قد لا يكون مناسبًا. عند استخدام عناصر التحكم في هذا الوضع ، يوفر Columbns أيضًا سمات أخرى قابلة للتحديد.
يكون نوع العمود التلقائي دائمًا ملزمًا. حدد تعيين العمود بحيث يمكن للمستخدم التحكم في نوع كل عمود.
DataGrid3
تم تصميم DataGrid3 على DataGrid2 عن طريق إضافة التنسيق المرئي والتنسيق.
الشكل 6. الأمثلة التي تم إنشاؤها بواسطة DataGrid التي تحدد سمات النمط والتنسيق
مقتطف من dataGrid3.aspx:
<٪@page language = c# src = datagrid.cs errantits = samples.datagridPage ٪>
مرنة
<ASP: DataGrid Runat = معرف الخادم = TitlesGrid
AutogenerateColumns = خطأ
العرض = 80 ٪
ألوان خلفية = أبيض
عرض الحدود = 1px BordersTyle = cellpadding الصلبة = 2 cellpacing = 0
الحدود = تان
Font-Name = Song Style Font-Size = 8pt>
<اسم poperty = الأعمدة>
<ASP: BoundColumn HeadeLtext = title datafield = title/>
<ASP: BoundColumn HeadeLtext = المؤلف datafield = au_name/>
<ASP: BoundColumn HeaderText = Date DataField = PubDate
dataFormatString = {0: mmm yyyy}/>
<ASP: BoundColumn HeadeLtext = Price DataField = السعر
DataFormatString = {0: C}>
<name poperty = itemStyle>
<ASP: TableItemStyle أفقيًا = يمين/>
</property>
</asp: bounddcolumn>
</property>
<name poperty = HeadStyle>
أقل
Font-Black = true/>
</property>
<name poperty = itemStyle>
<ASP: TableItemStyle Predicolor = darkslateBlue/>
</property>
<name poperty = levedItemStyle>
<ASP: TableItemStyle BackColor = beige/>
</property>
</asp: datagrid>
أظهر ملف .aspx نفس بيان التحكم في بيانات البيانات مثل السمات السابقة ، وتعيين سمات نمط مختلفة. هذا سوف يؤدي إلى تمثيل أكثر جاذبية. لا تزال هناك حاجة لإجراء أي تغييرات على الرمز ، واستخدام الكود المدعوم من نفس الأمثلة مثل الأمثلة السابقة.
لأنه يتم الحصول عليه من WebControl ، يرث التحكم في البيانات سمات النمط مثل العرض ، والألوان الخلفية ، و BorderStyle ، و font.name. بالإضافة إلى ذلك ، يقدم DataGrid سمات مثل cellpadding ، والتي هي خاصة بالجدول. يُسمح لهذه السمات بتخصيص عناصر التحكم بشكل عام.
يعرض البيان أيضًا عدة مجموعات من أنماط المشروع ، مثل نمط الرؤوس و levelyingitemstyle. هذه الأنماط تتحكم في ظهور عناصرها المقابلة. يرجى ملاحظة أن نمط النمط يظهر في هذا المثال. المشاريع البديلة هي نفس آفاق المشاريع العامة ، لأن أنماطها هي مجموعات من leadingitemstyle و itemstyle. أخيرًا ، يشرح هذا المثال أيضًا نمط عمود معين من خلال النص في عمود سعر التقييم الأيمن.
يتيح لك DataGrid أيضًا تنسيق محتوى النص في خليةه. يتم الانتهاء من ذلك عن طريق تعيين قيمة خاصية DataFormatString من BoundColumn. يستخدم العمود تنسيقه لتنسيق محتوى الخلية من string.format. يمكن أن تكون هذه السمة مسبقًا أو إرفاقها بأي محتوى بنوع التنسيق (مثل التاريخ أو العملة). بالإضافة إلى ذلك ، نظرًا لأن التنسيق ينظر في الثقافة وطلبات الصفحة الحالية ، فإنه يدعم أيضًا العولمة. إذا لم يكن هناك تنسيق محدد ، فاستخدم طريقة tostring لهذه القيمة.
DataGrid4
يشرح DataGrid4 كيفية استخدام التحديد في DataGrid من خلال التعامل مع الحدث المحدد.
الشكل 7. الأمثلة التي تم إنشاؤها عن طريق السماح لعناصر تحتوي على بيانات البيانات
اختبار من dataGrid4.aspx:
<٪@page language = c# src = datagrid4.cs errantits = samples.datagrid4page ٪>
مرنة
<ASP: DataGrid Runat = معرف الخادم = TitlesGrid
AutogenerateColumns = خطأ
العرض = 80 ٪
ألوان خلفية = أبيض
عرض الحدود = 1px BordersTyle = cellpadding الصلبة = 2 cellpacing = 0
الحدود = تان
Font-Name = Song Style Font-Size = 8pt
DatakeyField = title_id
onselectedexchanged = onselectexchangededesgrid>
<اسم poperty = الأعمدة>
<asp: buttonColumn Text = SELECT = select/>
<ASP: BoundColumn HeadeLtext = title datafield = title/>
<ASP: BoundColumn HeadeLtext = المؤلف datafield = au_name/>
<ASP: BoundColumn HeaderText = Date DataField = PubDate
dataFormatString = {0: mmm yyyy}/>
<ASP: BoundColumn HeadeLtext = Price DataField = السعر
DataFormatString = {0: C}>
<name poperty = itemStyle>
<ASP: TableItemStyle أفقيًا = يمين/>
</property>
</asp: bounddcolumn>
</property>
<name poperty = HeadStyle>
أقل
Font-Black = true/>
</property>
<name poperty = itemStyle>
<ASP: TableItemStyle Predicolor = darkslateBlue/>
</property>
<name poperty = levedItemStyle>
<ASP: TableItemStyle BackColor = beige/>
</property>
<name poperty = selectDItemStyle>
<ASP: TableItemStyle BackColor = palegoldenrod font-Bold = true/>
</property>
</asp: datagrid>
مرنة
<asp: label runat = server id = selectInfolabel font-name = song style font-size = 8pt/>
في ملف .aspx ، تم تسجيل برنامج معالجة الأحداث لحدث حدث SelectionIndExchanged من DataGrid. يتم تنفيذ برنامج معالجة الحوادث هذا في ملف مدعوم رمز. A ButtonColumn ، الذي تمت إضافته إلى العمود تعيين "SELECT" ، يجعل DataGrid يمثل عمودًا إضافيًا يحتوي على زر تحديد لكل مشروع. في الوقت نفسه ، تم تحديد SelectionItemStyle. يستخدم هذا النمط لتمييز المشاريع بصريًا. أخيرًا ، تم تحديد سمة DataGrid's DatakeyField. سيتم وضع هذا الحقل في مجموعة بيانات DataGrid ، والتي سيتم استخدامها في الملفات ذات دعم الرمز.
datagrid4.cs:
عينات مساحة الاسم {
مرنة
الفئة العامة DataGrid4page: صفحة {
DataGrid المحمية TitleSgrid.
SearchInfolabel المحمي.
iCollection getTitlesList () {
// Retore قائمة العنوان من مجموعة بيانات ذاكرة التخزين المؤقت عالية السرعة في حالة التطبيق.
تطبيقات مجموعات البيانات Application = (DataSet)
if (thetlesdataset! = null) {
إرجاع ToolsDataset.tables [title] .DefaultView ؛
}
آخر {
العودة لاغية.
}
}
private void loadtitlesgrid () {) {)
// بيانات البحث من قاعدة البيانات
icollection tetleslist = getTitlesList () ؛
// قم بتعيين مصدر بيانات التحكم وإعادة ضبط اختياره ،
TitleSgrid.datasource = TetlesList ؛
TitleSgrid.SelectDindex = -1 ؛
// وجعل عنصر التحكم يستخدم مصدر البيانات هذا لإنشاء مشروعه
TitleSgrid.Databind () ؛
// تحديث معلومات العنوان المحددة
addateselecttitalInfo () ؛
}
تجاوز الفراغ المحمي (eventArgs e) {{
base.onload (e) ؛
if (! ispostback) {
// انظر هذه الصفحة لأول مرة
loadtitlesgrid () ؛
}
}
// معالجة حدث OnSelectIndIndIndExchanged من DataGrid
void onSelectedIndIndexChangedTitlesGrid المحمي (مرسل الكائن ،
EventArgs e) {
addateselecttitalInfo () ؛
}
updateseSelectTitistitItInfo () {{) {
// احصل على الفهرس المحدد
int selindex = TitleSgrid.SelectDindex ؛
سلسلة selfieid = فارغة ؛
سلسلة SelectInfo ؛
if (selindex! = -1) {{
// إظهار حقل المفتاح للعنوان المحدد
seltitleid = (String) TitleSgrid.data [selindex] ؛
selectInfo = معرف العنوان المحدد: + seltitleid ؛
}
آخر {
SELECTINFO = لا يتم اختيار أي عنوان حاليًا. ؛
}
SelectInfolabel.text = selectInfo ؛
}
}
}
يحتوي ملف .cs هذا على منطق التعامل مع الحدث المحدد ومنطق معرف العنوان المحدد في DataGrid. يعالج DataGrid حدث الأوامر ، الذي يتم تشغيله بواسطة الأزرار المدرجة في مشروعها. إنه يتعرف على الأمر القياسي "SELECT" ، مما يجعله يغير خاصية SelectIndex الخاصة به ويؤدي إلى هذا الحادث لتغيير رمز إخطار المستخدم.
في عملية تنفيذ برامج معالجة الأحداث ، يستدعي رمز المثال طريقة التحديثات. هذه الطريقة مسؤولة عن عرض المعلومات حول عنوان الكتاب المحدد. في مخطط أكثر واقعية ، يمكن استخدام هذا المعرف لربط صفحة لعرض المزيد من التفاصيل حول العنوان المحدد.
يتم استرداد المعرف من خلال زيارة مجموعة Dataakeys. تم تعيين المجموعة بسبب سمة DatakeYfield. عادةً ، قم بتعيينها على أنها الكلمة الرئيسية الرئيسية أو الحقول الأخرى التي يمكن تحديدها من قبل الأسرة ، واستخدام هذه المعلومات كإرشادات في استعلام قاعدة بيانات المتابعة أو بيانات التصفية.
يوضح هذا المثال كيفية دعم العمليات مثل اختيار الكائنات في مصدر البيانات بالإضافة إلى الكائنات فقط في مصدر البيانات. يحتوي DataGrid على دعم للعديد من الميزات الأخرى (مثل الفرز ، والترحيل ، والمحررين على الموقع ، و TemplateColumns). ومع ذلك ، فإن هذه الميزات المحددة تتجاوز نطاق مناقشة هذه المقالة وسيتم مناقشتها في المقالات المستقبلية.
مكرر أو طبيب بيانات أو بيانات؟
مكرر وأخصائي البيانات والتحكم في مخططات البيانات المشتركة. في الوقت نفسه ، تم تصميم كل عنصر تحكم للتركيز على مخطط معين. يصف هذا القسم وظيفة التسلسل الهرمي للسيطرة ووظيفة كل عنصر تحكم ، بالإضافة إلى مثال على الحل النموذجي الذي يمكن استخدام كل عنصر تحكم.
كما ترون في بنية الفصل أدناه ، فإن المكرر هو التحكم الصغير والضوء. يرث فقط وظائف فئة التحكم الأساسية ، مثل سمات المعرف ومجموعات التكسير الفرعي. من ناحية أخرى ، يرث عنصر التحكم في Dataalist و DataGrid وظيفة WebControl ، مثل سمات النمط وسمات المظهر.
الشكل 8. قائمة التحكم في بنية مستوى الفصل
من حيث نماذج الكائنات ، فإن التحكم في المكرر هو أبسط تحكم. إنه أيضًا أصغر عنصر تحكم في ربط البيانات ويختلف بشكل أساسي ، أي أنه لا يجبر أي تخطيط خاص واجهة المستخدم. تتبع طريقة الإشارة النهائية طريقة إنشاء النص. لا يوفر عنصر التحكم هذا أي دعم مبني للأساليب وسمات المظهر أو السلوكيات. إنه خيار ممتاز لحل يحتاج إلى التحكم بالكامل.
عنصر التحكم في Datalist هو مكرر مجبر على استخدام تخطيط العمود أو تخطيط الدفق. يرث سمات المظهر المنفذة في WebControl ويضيف سمات نمط أخرى مناسبة للعناصر التي أنشأتها. يتضمن التحكم في Dataalist أيضًا دعم عملياته القياسية للمشروع (مثل اختيار وتحرير وحذف). إنه مناسب جدًا لتيار التسلسل للمستوى أو المشاريع الرأسية الموزعة في صف أو صف.
يتم إجبار عنصر التحكم على بيانات DataGrid إلى استخدام القائمة أو تخطيط الخط. على غرار Datalist ، يوفر هذا التحكم أنماط وسمات المظهر. بالإضافة إلى اختيار وتحرير ، يدعم DataGrid أيضًا عمليات متقدمة في مجموعة المشروع بأكمله ، مثل الصفحات والفرز. أحد الاختلافات الرئيسية بين DataGrid و Dataalist هو أن DataGrid لا يحتوي على أي سمات قالب ، أي المشروع أو غير معتاد التحكم في بيانات DataGrid. ومع ذلك ، أضف TemplateColumn إلى DataGrid لاستخدام القالب في عمود معين.
الجدول التالي هو ملخص للوظيفة التي توفرها التحكم في الربط.
وظيفة DataGrid لأخصائي داعش تكرار وظيفة
القالب (مطلوب) أو داخل (مطلوب) أعمدة (اختيارية)
هل تخطيط القائمة؟
هل تخطيط الدفق
هل تخطيط نمط عمود التوزيع/الصحيفة؟
ما إذا كانت سمات النمط والمظهر
حدد ما إذا كانت نعم
يحرر
هل تم حذفه؟
لا ترقيم
هل تم فرزها؟
الموارد ذات الصلة
مع أمثلة QuickStart التي نشرتها Microsoft .NET Framework SDK ، كانت هناك العديد من الأمثلة على هذه الضوابط ، والأمثلة التي أوضحت البيانات التي تصل إلى البيانات مع XML وخدمات الويب. يتضمن المستند المرتبط بـ SDK البيانات المفاهيمية للموضوع ذي الصلة ، مثل إطار عمل ASP+ والتحكم في الخادم ، والمرجع المرجعي لنموذج الكائن كجزء من التحكم في هذا الإطار.