Я не могу показаться, что это один, но я пытаюсь добавить элемент управления пользователя в DataList во время выполнения (поскольку фактический тип управления может отличаться). Так что, если я жесткий код ссылки управления в разметке, как это работает:Связывание управляет динамически в PlaceHolder в asp: DataList
<asp:DataList ID="myDL" runat="server" RepeatDirection="Horizontal" RepeatColumns="3" OnItemDataBound="myDL_Item_Bound">
<ItemTemplate>
<prefix:MyControl ID="myControl1" runat="server" />
</ItemTemplate>
</asp:DataList>
Но если я пытаюсь добавить его программно заполнителем, он не делает пользовательских элементов управления (только пустые теги тд):
<asp:DataList ID="myDL" runat="server" RepeatDirection="Horizontal" RepeatColumns="3" OnItemDataBound="myDL_Item_Bound">
<ItemTemplate>
<asp:PlaceHolder ID="ph" runat="server">
</asp:PlaceHolder>
</ItemTemplate>
</asp:DataList>
protected void myDL_Item_Bound(Object sender, DataListItemEventArgs e) {
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) {
PlaceHolder ph = (PlaceHolder)e.Item.FindControl("ph");
if (ph != null) {
MyControl ctrl = new MyControl();
ctrl.SomeProp = "xyz";
ph.Controls.Add(ctrl);
}
else {
MyControl ctrl = (MyControl)e.Item.FindControl("myControl1");
ctrl.SomeProp = "xyz";
}
}
}
Что мне не хватает?
@afzaluhl спасибо! Я знаю лучше этого, мне просто нужен был второй набор глаз, чтобы посмотреть на него и сказать, где я напортачил – snappymcsnap