C# 将列表数据绑定到codebehind中项目模板中的usercontrol

C# 将列表数据绑定到codebehind中项目模板中的usercontrol,c#,asp.net,data-binding,itemtemplate,C#,Asp.net,Data Binding,Itemtemplate,我有如下数据列表: <asp:DataList runat="server" ID="myDataList"> <ItemTemplate> <uc:MyControl ID="id1" runat="server" PublicProperty='<%# Container.DataItem %>' /> </ItemTemplate> </asp:DataList> 项目模板只是一个注册的us

我有如下数据列表:

<asp:DataList runat="server" ID="myDataList">
   <ItemTemplate>
     <uc:MyControl ID="id1" runat="server" PublicProperty='<%# Container.DataItem %>' />
   </ItemTemplate>
</asp:DataList>


项目模板只是一个注册的usercontrol,MyControl。数据列表的数据源是一个
列表
,MyControl的PublicProperty被传递到
列表
,然后在其上形成自己的数据绑定。这很好,但我对aspx/c页面中的数据绑定有普遍的反感。在代码隐藏中设置PublicProperty值的最有效方法是什么

如果行内数据绑定语法对您来说不够好-您可以始终挂接到DataList的ItemDatabound事件

<asp:DataList runat="server" ID="myDataList" 
                OnItemDataBound="DataList_ItemDataBound">
    <ItemTemplate>
        <uc:MyControl ID="id1" runat="server" />
    </ItemTemplate>
</asp:DataList>

希望这会有所帮助

我希望有一些不太详细的东西…myDataList.Controls[0]。Controls[1]。FindControl(“control”)等。但由于这是唯一有效的答案,谢谢。
    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;
        }
    }
myDataList.ItemDataBound += DataList_ItemDataBound;