如果行内数据绑定语法对您来说不够好 - 您始终可以挂钩 DataList 的 ItemDatabound 事件。
<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 事件的更多信息 -阅读此处
如果您不想在 ASPX 中内联声明您的 ItemDataBound 委托,您也可以在后面的代码中执行它 - 可能在您的 Page Load 事件中:
myDataList.ItemDataBound += DataList_ItemDataBound;
希望有帮助