استخدم التحكم في الربط ASP+
نيخيل كوثاري
Microsoft Corporation
يوليو 2000
الخلاصة: اشرح عناصر التحكم في ASP+ ASP ، وأخصائي قواعد البيانات ، و DataGrid خادم. يمكن أن تحقق عناصر التحكم هذه مصدر بيانات ، واجهة مستخدم التطبيق المستند إلى HTML. ناقش المفاهيم المتعلقة بهذه الضوابط وتلخيص الأمثلة الأساسية لاستخدام هذه الضوابط.
جدول المحتويات
مقدمة موجزة
كيف تعمل التحكم في الربط؟
مراقبة مكرر
مراقبة Datalist
التحكم في بيانات DataGrid
مكرر أو طبيب بيانات أو بيانات؟
الموارد ذات الصلة
قم بتنزيل ملف المثال (56 كيلو بايت) المتعلق بهذه المقالة.
مقدمة موجزة
يشكل المكرر ، وأخصائي البيانات ، والتحكم في بيانات البيانات مجموعات التحكم في الويب ذات الصلة في مساحة الاسم في System.Web.WebControls في ASP+ Page Framework. تجعل عناصر التحكم هذه محتوى قائمة الربط أو مصدر البيانات لشاشة HTML. لذلك ، يشيرون إليهم بشكل جماعي على أنهم "ضوابط ملزمة قائمة".
على غرار عناصر تحكم الويب الأخرى في الإطار ، توفر عناصر التحكم هذه نماذج برمجة متسقة وتغلف منطق تمثيلي مستقل عن المتصفح. تمكن هذه الخصائص المطورين من البرمجة في نماذج الكائنات دون الحاجة إلى إتقان المعرفة الفنية غير المتسقة والمعقدة المتعلقة بـ HTML.
يمكن أن تمثل عناصر التحكم الثلاثة هذه محتوى مصدر البيانات المتعلق بمصادر البيانات ذات الصلة وفقًا لمجموعة متنوعة من التخطيطات (بما في ذلك القوائم والأعمدة/الأعمدة الصحفية وتخطيطات الدفق (تدفقات HTML)). بالإضافة إلى ذلك ، فإنها تتيح لك أيضًا إنشاء تصميم مختلف تمامًا أو مخصص تمامًا. بالإضافة إلى منطق العبوة ، فإنه يوفر أيضًا وظيفة معالجة البيانات المرسلة وإدارة حالة التنفيذ والأحداث التي تم تشغيلها. أخيرًا ، توفر أيضًا مستويات مختلفة من الدعم للعمليات القياسية مثل الاختيار والتحرير والترحيل والفرز. يمكن لهذه الضوابط تبسيط العديد من تطبيقات الويب الشائعة ، بما في ذلك التقارير وعربات التسوق وقوائم المنتجات ونتائج الاستعلام وقوائم التنقل.
سيوضح ما يلي عناصر التحكم هذه وكيفية استخدامها في تطبيقات الويب الخاصة بك وكيفية اختيار عناصر التحكم.
كيف تعمل التحكم في الربط؟
هذا القسم هو المواد الأساسية لبقية هذه المقالة. نظرة عامة على أساليب عمل هذه الضوابط الملزمة القائمة ، وخصائصها المشتركة ، وبعض المفاهيم ذات الصلة.
سمة مصدر البيانات
يحتوي كل عنصر تحكم على سمة مصدر بيانات مع نوعه هو System.Collections.icollection. في أبسط الكلمات ، مصادر البيانات هي قائمة أو مجموعة من الكائنات المماثلة.
توفر العديد من الكائنات في هذا الإطار تنفيذ iCollection. تتضمن هذه المجموعة system.data.dataview (عادة ما يتم استخدامها للوصول إلى قواعد البيانات العلائقية وبيانات XML) ، وتطبيق iCollection العام (مثل ArrayList و Hashtable) ، والصفيف.
على عكس عناصر التحكم في ربط البيانات التقليدية (عادة ما تحتاج إلى مجموعات سجلات ADO) ، باستثناء تنفيذ واجهة ICollection ، فإن عناصر التحكم في ربط القائمة هذه لا تعزز أي متطلبات أخرى لمصادر البيانات الخاصة بهم. وفقًا للتصميم ، فإن النوع وهيكل البيانات الذي يمكن استخدامه كقيمة سمة مصدر بيانات صالحة من خلال كمية كبيرة ، ويمكنهم زيادة البسيطة والمرونة لرمز التطبيق الخاص بك.
جمع المشروع
كل عنصر تحكم الربط يحتوي على مجموعة المشروع. يتم تعيين عنصر التحكم في جمع المشروع من خلال إدراج مصدر البيانات الحالي لهذه الكائنات. قم بإنشاء عنصر واحد لكل كائن واستخدمه لتمثيل الكائن. هذه العناصر هي جزء من الهيكل الهرمي للتحكم الوارد في القائمة التحكم في ربط.
يسرد الجدول أدناه نوع المشروع المرتبط بمصدر البيانات.
نوع المشروع الافتراضي الذي أنشأه المشروع
ThipedItem هو إنشاء المشروع مع مزايدة فردية في جمع المشروع
يتم إنشاء SelectionItem للمشروع المحدد (بغض النظر عما إذا كان المشروع مشروعًا بديلًا)
يتم إنشاء EditItem للمشاريع في وضع التحرير (سواء تم تحديده أو بديل)
سيتم إنشاء عنصر التحكم في نفس الوقت في العناصر التالية التي سيتم استخدامها. ومع ذلك ، فهي غير مرتبطة ببيانات مصدر البيانات.
يتم استخدام الرأس لتمثيل معلومات الرأس
يتم استخدام الحاشية للإشارة إلى المعلومات القابلة للتشغيل
تُستخدم الفواصل لتمثيل المحتوى بين كل عنصر موضح في الشكل 1 ، وهو ينطبق فقط على المكرر ومثني البيانات
يتم استخدام رمز الترحيل للإشارة إلى واجهة مستخدم ترقيم الصفحات المرتبطة بعنصر التحكم في البيانات
الشكل 1. مقارنة بمجموعة "Project" لمجموعة "التحكم"
ربط بيانات المشروع وإنشاءه
يتبع عنصر تحكم ربط القائمة نموذج ربط البيانات الصريح الذي تم تنفيذه في إطار ASP+ بالكامل. هذا يعني أن عنصر التحكم يحتاج فقط إلى إدراجه عند استدعاء طريقة Databind.
عندما يتم استدعاء طريقة Databind ، ستقوم عنصر تحكم القائمة بإدراج مصدر البيانات الخاص به ، وإنشاء مشروع ، وتهيئته عن طريق استخراج القيمة من مصدر البيانات الخاص بها. إذا تم تمكين إدارة الحالة ، فسيقوم عنصر التحكم أيضًا بحفظ جميع المعلومات المطلوبة لإعادة إنشاء مشروعها خلال فترة معالجة الإرجاع للصفحة دون إعادة تحديد مصدر البيانات.
يمكّن نموذج ربط البيانات الصريح رمز التطبيق الخاص بك من تحديد متى وأين يلزم مصدر البيانات في تسلسل المعالجة. تجعل هذه الميزة إمكانية الوصول إلى خوادم قاعدة البيانات أقل وأكثر كفاءة ، وعادة ما تكون هذه عمليات الوصول هي التشغيل الأكثر استهلاكًا لتطبيقات الويب.
القاعدة العامة هي أنه يجب استدعاء Databin كلما احتجت إلى إعادة إنشاء المشروع. في معظم الحالات ، ستتصل بـ Databind عندما يُطلب من صفحتك إنشاء مجموعة أولية للمشروع لأول مرة. أثناء تنفيذ هذه الصفحة ، ستحتاج إلى استدعاء هذه الطريقة في إجراءات معالجة الأحداث المختلفة التي يتم تغييرها بواسطة مجموعة المشروع. يحدث هذا عندما يحدث الاستعلام المستخدم لإنشاء مصدر البيانات الأولي. قد يحدث هذا أيضًا عندما تتغير حالة المشروع (مثل التغيير من وضع التحرير فقط).
أسلوب
باستخدام سمات النمط على نموذج الكائن ، يمكنك تحديد جميع عناصر التحكم في قواعد البيانات ومواد البيانات والتنسيقات والمظاهر التي تحتوي عليها. يُسمح لهذه السمات بتخصيص الخطوط والألوان والحدود وعوامل المظهر الأخرى. ستؤثر سمة نمط التحكم نفسها (مثل اللون الأمامي ولون الخلفية والخط والطرف الحدودي) على تمثيل التحكم بأكمله.
بالإضافة إلى ذلك ، يحتوي كل عنصر تحكم على عدد كبير من سمات النمط التي تتطابق مع أنواع العناصر التي أنشأتها ، مثل itemstyle و levediteMstyle و HeadersStyle. يوفر DataGrid سمات نمط ثالثة من المستويات التي تؤثر على جميع الخلايا في أعمدة محددة. يمكن أن يكون لكل عمود موجود في عنصر التحكم headldersstyle و footersstyle و itemstyte.
نموذج
يتم عرض تنسيق التحكم في النمط ، بينما يحدد القالب محتوى وتمثيل كل عنصر. يمكنك التفكير في القالب كورقة رمز HTML ، والتي تحدد الهيكل الهرمي للسيطرة المستخدمة لتمثيل المشروع.
يتم تحريك عناصر التحكم في المكرر وموظفات Dataal بواسطة قوالب محددة لتوفير خصائص قوالب مختلفة ، مثل itemTemplate و ThipTeMitemTemplate و HeaderTemplate. على غرار الأناقة ، يتوافق كل قالب مع نوع معين من المشروع.
التحكم في مخطط البيانات ليس قالب. ومع ذلك ، فإن TemplateColumns في مجموعة الأعمدة من عنصر التحكم تستخدم القوالب في DataGrid. يمكن أن تحتوي كل خلية في TemplateColum على قالب ، يشبه إلى حد كبير العناصر الموجودة في المكرر أو التحكم في أخصائي البيانات. هذا أيضًا يجعل التخصيص في بيانات DataGrid ممكنًا.
ربط البيانات في القالب
البنية الهرمية التحكم الواردة في عناصر تعريف القالب. باستخدام تعبيرات ربط البيانات ، يمكن ربط سمات التحكم في هذا المستوى بخصائص البيانات المرتبطة بهذا المشروع.
يسمى المشروع المنطقي للوالدين كقالب "حاوية" في تعبير ربط البيانات. كل حاوية لها سمة تسمى DataItem ، والتي تقتبس البيانات المرتبطة بها. نتيجة لذلك ، تربط معظم تعبيرات ربط البيانات النموذجية في القالب سمات التحكم على خاصية معينة من الحاوية. سيتم شرح هذا الربط في الأمثلة التالية.
مراقبة مكرر
كما ذكرنا سابقًا ، فإن التحكم في المكرر مدفوع تمامًا بواسطة القالب ، مما يسمح بتمثيل وتخطيط مخصص تمامًا. يوضح الشكل أدناه هذه الوظيفة.
الشكل 2. قائمة رابط رموز المشروع المرتبطة التي تم إنشاؤها باستخدام التحكم في المكرر
مقتطف من مكرر 1.aspx:
<٪@page language = c# src = repeater1.cs errantits = samples.repeter1page ٪>
مرنة
<ASP: Repeater Runat = معرف الخادم = LinkSlistrepeater
DataSource = '<٪# siteelinks ٪>'>
<اسم القالب = headertemplate>
<ul type = 1>
</template>
<اسم القالب = itemTemplate>
<li>
<ASP: Runat Runat = Server
text = '<٪# databinder.eval.eval (Container.dataitem ، site) ٪>' '
التنقل = '<٪# databinder.eval.eval.dataitem ، siteurl) ٪>'>
</asp: الارتباط التشعبي>
</li>
</template>
<اسم القالب = footertemplate>
</ul>
</template>
</ASP: مكرر>
أظهر ملف .aspx بيانًا لإنشاء عنصر تحكم مكرر لإنشاء قائمة برموز المشروع.
يوضح هذا المثال طريقة عبارة تعيين مصدر البيانات باستخدام بناء جملة ربط البيانات (<٪#... ٪>). عند استدعاء طريقة البيانات ، يتم تنفيذ التعبير في ربط البيانات. في هذه الحالة ، ترتبط خاصية DataSource of the Repeater بخاصية SiteLinks على الصفحة ، ويحتوي الأخير على مرجع URL الذي سيتم عرضه.
المكرر هو التحكم الوحيد الذي يسمح بوجود شظايا HTML في القالب. في هذا المثال ، تنقسم قائمة رموز المشروع إلى ثلاثة أجزاء:
بدأت بقائمة headertemplate (<ul type = 1>).
قم بإنهاء التسمية (</ul>) حسب القائمة التي يمثلها FooterTemplate.
يتم وضع الهيئة الرئيسية للقائمة من عنصر القائمة (<li>) الذي تم إنشاؤه عن طريق تكرار itemTemplate في كل كائن في مجموعة SiteLinks.
يمكنك أيضًا استخدام هذه القوالب لتحديد علامة البدء (<labl>) في الرأس ، وتحديد الملصق النهائي (</table>) الجدول في الحاشية ، وتحديد خط ساعة واحد في كل مشروع (<e>) جوهر سيؤدي خيار الاستبدال هذا إلى تمثيل القائمة.
يجب عليك تحديد itemTemplate. هذا هو القالب الوحيد الضروري. عندما لا يتم تحديد قوالب أخرى ، سيستخدم التحكم تلقائيًا هذا العنصر في القوالب الأخرى.
في المثال التالي ، يحتوي itemTemplate على تحكم على الويب التشعبي. ترتبط سمات نص التحكم وسمات التنقل في خصائص البيانات المرتبطة بكل مشروع مكرر. يتم الانتهاء من ذلك باستخدام تعبير ربط البيانات (يبحث على الفور عن التعبير بعد إنشاء مشروع).
Repeater1.CS:
عينات مساحة الاسم {
مرنة
مكرر الفئة العامة 1 صفحة: صفحة {
مكرر محمي LinkSlistrepeater ؛
Icollection siteelinks العامة {
يحصل {
مواقع ArrayList = new ArrayList () ؛
sites.add (موقع جديد (Microsoft Home ،
http://www.microsoft.com) ؛
Sites.Add (موقع جديد (MSDN Home ،
http://msdn.microsoft.com) ؛
Sites.Add (SiteInfo جديد (الصفحة الرئيسية MSN ،
http://www.msn.com)) ؛
sites.add (موقع جديد (Hotmail ،
http://www.hotmail.com)) ؛
مواقع العودة
}
}
تجاوز الفراغ المحمي (eventArgs e) {{
base.onload (e) ؛
if (! ispostback) {
// عند طلب الصفحة لأول مرة ، يتم تنفيذ ربط البيانات.
// سيؤدي هذا إلى استدعاء كل عنصر تحكم بشكل متكرر في الهيكل الهرمي للتحكم في هذه الصفحة.
databind () ؛
}
}
}
فئة مختومة عامة siteInfo {
موقع سلسلة خاصة ؛
سلسلة خاصة siteurl ؛
siteinfo العامة (سلسلة Sitename ، String siteurl) {{
this.siteName = sitename ؛
this.siteurl = siteurl ؛
}
موقع السلسلة العامة {
احصل على {موقع العودة ؛}
}
السلسلة العامة siteurl {
geturn siteurl ؛}
}
}
}
يحتوي ملف .cs هذا على الرمز الذي يظهر معًا في صفحة ASPX في القائمة السابقة.
تغطي فئة PreateD1page طريقة Onload لفئة الصفحة. يشير هذا إلى أن Databind يتم استدعاؤه في الطلب الأول من هذه الصفحة. سيؤدي ذلك إلى قيام تعبير ربط البيانات على هذه الصفحات بتقييم البيانات وجعل قائمة التحكم في المكرر مصدر البيانات وإنشاء مشاريعها. اتصل بالطريقة Databind فقط عند الطلب الأول. السبب في أن هذا يمكن أن يعمل هو أن المكرر يمكن أن يعيد إنشاء مشروعه في عملية إرجاع الحالة المحفوظة قبل ، دون الحاجة إلى مثيلات مصدر البيانات.
تكشف هذه الصفحة عن السمات العامة لنوع iCollection. سيتم استخدام هذا في تعبير ربط البيانات لقيمة سمة مصدر البيانات للمكرر. يستخدم الاستحواذ على السمات ArrayList يحتوي على مجموعة من تسلسل SiteInfo. هذه السمة عامة ، لأنه يمكن استخدام صفحات عامة فقط من أعضاء الحماية في تعبيرات ربط البيانات.
يحتوي كل كائن SietInfo على سمتين: sitename و siteurl. عندما يكون ربط البيانات للتحكم في الارتباط التشعبي في القالب ، يمكنك الوصول إلى هذه السمات. في التعبير الملزم لهذا التحكم ، قال container.dataitem إنه من الضروري ربط عنصر معين لكائن SietInfo واحد عليه. Databinder.eval (Container.Dataitem ، Sitename) يزور خاصية الاسم Sitename لكائن SiteInfo الحالي.
مثال Repeater1 يعرضك على العديد من المفاهيم الأساسية:
قالب تعريف
ترابط البيانات قواعد اللغة وتعبير ربط البيانات في القالب
استخدم iCollection من ArrayList كمصدر للبيانات
اتصل على طريقة Databind أثناء صفحة المعالجة الأولية
مراقبة Datalist
عنصر التحكم في Datalist هو عنصر تحكم موجه نحو القالب يوفر القدرة على استخدام سمات النمط لتنسيق قدرتها. يمكن أن تنتج أيضا أعمدة متعددة. يوضح الشكل 3 هذه الخصائص.
الشكل 3. الأمثلة التي تم إنشاؤها من الأعمدة المزدوجة لأخصائي داتال
مقتطف من Datalist1.aspx:
<٪@page language = c# src = datalist1.cs errinits = samples.datalist1page ٪>
مرنة
<ASP: Datalist Runat = معرف الخادم = peicaldatalist
REPERCOLUMNS = 2 تكرار الاتجاه = REPERTICAL REPERTMODE = الجدول
العرض = 100 ٪>
<name poperty = levedItemStyle>
<ASP: TableItemStyle BackColor =#elyeee/>
</property>
<اسم القالب = itemTemplate>
<ASP: لوحة Runat = Server Font-Size = 12pt font-Bold = True>
<٪# ((شخص) حاوية.
</asp: لوحة>
<ASP: Label Runat = عرض الخادم = 20 بكسل
BorderStyle = Solid Borderwidth = 1PX BorderColor = Black
BackColor = '<٪# (Person) Container.Dataitem)
</asp: label>
<asp: label runat = server font-size = 10pt
text = '<٪# getColorname ((person) container.dataitem)
</asp: label>
</template>
</ASP: Datalist>
أظهر ملف .aspx عبارة عن بيان لأخصائي داتير يستخدم لإنشاء هذا المثال.
في هذا المثال ، يتم تحقيق تخطيط Dataalist متعدد العدوى عن طريق تعيين خاصية REPERTCOLURTS إلى "2". سيؤدي تعيين التكرار على أنه "عمودي" إلى جعل المشروع يرتب من أعلى إلى أسفل ، ثم يتم ترتيبه من اليسار إلى اليمين. على العكس من ذلك ، فإن القيمة التي تم تعيينها على "الأفقي" ستؤدي إلى ترتيب المشروع من اليسار إلى اليمين ، ثم من أعلى إلى أسفل.
يحتوي بناء جملة ASPX على إعدادات لعدد قليل من سمات نمط Datalist. في هذا المثال ، يتم تعيين عرض Datalist على 100 ٪ من مستوى الأم. تتمثل levediteMstyle مع خلفية رمادية في الحصول على مظهر مخطط. يوضح هذا المثال أيضًا أن القالب يمكن أن يحتوي على أي تعريف تحكم معقد لتلبية احتياجات الحصول على التصميم المثالي في كل مشروع.
أخيرًا ، يكون تعبير ربط البيانات في هذا القالب ملزمًا في المرحلة المبكرة عن طريق تحويل الحاوية. dataitem إلى نوعه. لن يتسبب هذا في الارتباط اللاحق للربط اللاحق للربط اللاحق لاستخدام databinder.eval (كما هو موضح في Repeater1). ومع ذلك ، قد تنتج هذه الطريقة سوء قراءة. يعطي المثال التالي أيضًا مثالًا تعبيرًا يستدعي طريقة getColorname (يتم تنفيذ هذه الطريقة في ملف مدعوم في هذه الصفحة).
Datalist1.cs:
عينات مساحة الاسم {
مرنة
Dataalist1page Public Class: صفحة {
محمي Datalist PeopleDatalist.
سلسلة محمية getColorname (اللون C) {
يعود
typedescriptor.getConverter (typeof (color)).
}
prive void loadpeicallist () {
// إنشاء مصدر بيانات
شخص [] الناس = شخص جديد [] {
شخص جديد (نيخيل كوثاري ، color.green) ،
شخص جديد (Steve Millet ، color.purple) ، color.purple) ،
شخص جديد (كريس أندرسون ، color.blue) ، color.blue ،
شخص جديد (مايك بوب ، color.orange) ،
شخص جديد (أنتوني مور ، color.yllow) ،
شخص جديد (جون يونغ ، color.mediumaquamarine) ،
شخص جديد (سوزان وارن ، color.slateBlue) ،
شخص جديد (Izzy Gryko ، color.red)
} ؛
// قم بتعيين مصدر بيانات عنصر التحكم
peicaldatalist.datasource = pesple ؛
// وجعل عنصر التحكم يستخدم مصدر البيانات هذا لإنشاء مشروعه
peicaldatalist.databind () ؛
}
تجاوز الفراغ المحمي (eventArgs e) {{
base.onload (e) ؛
if (! ispostback) {
// انظر هذه الصفحة لأول مرة
LoadPeicallist () ؛
}
}
}
شخص فئة مختومة عامة {
اسم السلسلة الخاصة ؛
PRIVE COLL SOFFITECOLOR ؛
الشخص العام (اسم السلسلة ، اللون المفضل) {{
this.name = name ؛
this.favoriteColor = sfipiteColor ؛
}
اللون العام المفضل {
geturn sweariteColor ؛}
}
اسم السلسلة العامة {
اسم geturn ؛}
}
}
}
في هذه الصفحة ، يتم تعيين سمة DataSource لعنصر التحكم من خلال إعدادات البرنامج ، والتي يتم تسويتها في ملف ASPX. نتائج الطريقتين هي نفسها. ما هو نوع الطريقة التي لا يمكن تحديدها ، يجب عليك الاتصال بالطريقة التي يمكن أن تُدرج عليها عنصر التحكم في مصادر البيانات الخاصة به وإنشاء عناصر تريد الإشارة إليها.
مصدر البيانات المستخدم في هذا المثال هو مجموعة بسيطة من كائن الشخص. نظرًا لأن كل صفيف ينفذ طريقة iCollection ، فإن الصفيف مناسب لمصدر البيانات. يوضح هذا المرونة التي يمكن الحصول عليها عندما يمكن الحصول على بنية البيانات والنوع عندما يمكن الحصول على مصدر البيانات.
يقدم مثال Datalist1 المفاهيم التالية:
حدد واجهة المستخدم HTML الغنية في القالب
استخدم مجموعة بسيطة كمصدر للبيانات
قم بتعيين مصدر البيانات من خلال البرنامج
العديد من التعبيرات المسموح بها في بناء جملة ربط البيانات