【发布时间】:2025-12-06 10:45:01
【问题描述】:
我正在尝试在 ASP.NET 中实现动态列表视图。为此,应从 List 动态生成列标题文本,并且数据应从 List 绑定到 listView。列标题的动态生成一直有效。但我无法将 List 绑定到 listView。
到目前为止我所做的如下:
aspx代码:
<asp:ListView ID="lvFriends" runat="server">
<LayoutTemplate> <%-- generated dynamically --%>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td id="itemTemplate">
<%# Eval("Name")%>
</td>
</tr>
</ItemTemplate>
</asp:ListView>
后面的代码:
private class LayoutTemplate : ITemplate
{
public List<String> ColumnNames { get; set; }
public LayoutTemplate ()
{
ColumnNames = new List<String>();
}
private class LayoutTemplate : ITemplate
{
ph.Controls.Add(new LiteralControl("<table>"));
ph.Controls.Add(new LiteralControl("<tr>"));
foreach (String columnName in ColumnNames)
{
ph.Controls.Add(new LiteralControl("<td>" + columnName + "</td>"));
}
ph.Controls.Add(new LiteralControl("</tr>"));
ph.Controls.Add(new LiteralControl("<tr></tr>") { ID = "ItemPlaceholder" });
ph.Controls.Add(new LiteralControl("</table>"));
container.Controls.Add(ph);
}
}
private class ItemTemplate : ITemplate
{
public void InstantiateIn(Control container)
{
PlaceHolder ph = new PlaceHolder();
ph.Controls.Add(new LiteralControl("<tr><td>"));
//ph.Controls.Add(<%# eval(\"Name\")%>));
ph.Controls.Add(new LiteralControl("</tr></td>"));
container.Controls.Add(ph);
}
}
public class Friends
{
public string Name { get; set; }
}
protected void Page_Load(object sender, EventArgs e)
{
LayoutTemplate myTemplate = new LayoutTemplate();
myTemplate.ColumnNames.Add("Name");
myTemplate.ColumnNames.Add("Date");
...
lvFriends.LayoutTemplate = myTemplate;
//lvFriends.ItemTemplate = new ItemTemplate();
List<Friends> dataList;
dataList = getData();
lvFriends.DataSource = dataList;
lvFriends.DataBind();
}
现在我还想为 listView 分配一个 itemTemplate。但我不知道如何将“" 实现为代码!
【问题讨论】: