Estoy escribiendo un control compuesto, que contiene una vista de lista para mostrar una tabla de elementos. Normalmente, al usar un ListView en Asp.NET, definiría las plantillas en el código de avance.Cómo definir plantillas de vista de lista en el código
<asp:ListView runat="server" ID="ArticleList">
<LayoutTemplate>
<div class="ContentContainer">
<div runat="server" id="itemPlaceholder" />
</div>
</LayoutTemplate>
<ItemTemplate>
<div>
<div><%# Eval("Content") %></div>
</div>
</ItemTemplate>
</asp:ListView>
supongo que es algo así como:
ListView view = new ListView();
view.LayoutTemplate = .....
view.ItemTemplate = .....
// when do I call these?
view.DataSource = myDataSource;
view.DataBind();
Actualización: he creado 2 plantillas implementando la interfaz ITemplate:
private class LayoutTemplate : ITemplate
{
public void InstantiateIn(Control container)
{
var outer = new HtmlGenericControl("div");
var inner = new HtmlGenericControl("div") { ID = "itemPlaceholder" };
table.Rows.Add(row);
container.Controls.Add(table);
}
}
private class ItemTemplate : ITemplate
{
public void InstantiateIn(Control container)
{
var inner = new HtmlGenericControl("div");
container.Controls.Add(inner);
}
}
y puedo añadirlos usando:
dataList.LayoutTemplate = new LayoutTemplate();
dataList.ItemTemplate = new ItemTemplate();
Pero luego me quedo atascado, ya que container.DataItem es nulo.
Parece que podría. –
Devuelve el error 404. –