ربط البيانات من قائمة إلى عنصر تحكم المستخدم في قالب البند في التعليمات البرمجية خلف
-
05-07-2019 - |
سؤال
ولدي Datalist على مثل أدناه:
<asp:DataList runat="server" ID="myDataList">
<ItemTemplate>
<uc:MyControl ID="id1" runat="server" PublicProperty='<%# Container.DataItem %>' />
</ItemTemplate>
</asp:DataList>
وقالب السلعة بسهولة وببساطة على UserControl المسجل، MyControl. مصدر البيانات لDatalist نسخة List<List<T>>
ويتم تمرير PublicProperty MyControl في List<T>
التي ثم peforms ربط البيانات الخاصة بها على. هذا يعمل بشكل جيد، ولكن لدي نفور العام لربط البيانات في صفحة aspx / ج. ما هي الطريقة الأكثر يتسم بفعالية لتعيين قيمة PublicProperty في التعليمات البرمجية خلف؟
المحلول
إذا جملة ملزم في خط البيانات ليست جيدة بما فيه الكفاية بالنسبة لك - يمكنك ربط دائما في الحدث ItemDataBound من Datalist على
<asp:DataList runat="server" ID="myDataList"
OnItemDataBound="DataList_ItemDataBound">
<ItemTemplate>
<uc:MyControl ID="id1" runat="server" />
</ItemTemplate>
</asp:DataList>
وبعد ذلك، في التعليمات البرمجية خلف صفحتك / تحتوي على السيطرة يمكنك إضافة الحدث ItemDataBound الخاص بك.
protected void DataList_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item
|| e.Item.ItemType == ListItemType.AlternatingItem)
{
DataListItem item = e.Item;
//List<string> or whatever your data source really is...
List<string> dataItem = item.DataItem as List<string>;
MyControl lit = (MyControl)item.FindControl("id1");
lit.PropertyName = dataItem;
}
}
لمزيد من المعلومات حول هذا الحدث DataList.ItemDataBound - <وأ href = "http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.datalist.itemdatabound.aspx" يختلط = "نوفولو noreferrer"> اقرأ هنا
إذا كنت لا ترغب في التصريح الخاص ItemDataBound مضمنة مندوب في ASPX يمكنك أيضا القيام بذلك في التعليمات البرمجية خلف - ربما في هذا الحدث الخاص بك تحميل الصفحة:
myDataList.ItemDataBound += DataList_ItemDataBound;
وعلى أمل أن يساعد