ربط البيانات من قائمة إلى عنصر تحكم المستخدم في قالب البند في التعليمات البرمجية خلف

StackOverflow https://stackoverflow.com/questions/1207147

سؤال

ولدي 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;

وعلى أمل أن يساعد

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top