我在将数据源动态分配给列表视图时遇到问题。
例如,我有 receivedBonuses(Bonus) 和 receivedLeaves(Leave) 列表,我希望 listview 根据用户单击的链接按钮显示这些列表项。
研究互联网和 stackoverflow.com 我发现了 3 个解决方案:
在列表视图中使用中继器。但就我而言,我无法将其应用于我的案例,我完全感到困惑
使用嵌套列表视图。我试着这样做:
<asp:ListView ID = "bonuses" runat="server" DataSource ='<%# Eval("received_bonuses") %>' >
<ItemTemplate>
<tr>
<td><%# Eval("bonus_desc")%></td>
<td><%# Eval("bonus_type")%></td>
</tr>
</ItemTemplate>
<LayoutTemplate>
<table>
<tr>
<th>Bonus Description</th>
<th>Bonus Received Date</th>
</tr>
<tr ID="itemPlaceholder" runat="server" />
</table>
</LayoutTemplate>
Run Code Online (Sandbox Code Playgroud)
<table>
<tr>
<th>Bonus Description</th>
<th>Bonus Received Date</th>
</tr>
<tr ID="itemPlaceholder" runat="server" />
</table>
</LayoutTemplate>
</asp:ListView>
<br />
Run Code Online (Sandbox Code Playgroud)
在后面的代码中,我试着这样写:
protected void dataBound(object sender, ListViewItemEventArgs e)
{
this.DataBindChildren();
}
Run Code Online (Sandbox Code Playgroud)
它没有给出任何错误,只是不起作用。
我不知道如何将它应用于我的案例。
任何帮助表示赞赏。
非常感谢。
您在服务器端要做的就是更改 DataSource 或 DataSourceID 属性并在 ListView 上调用 DataBind。
在使用 <%# Eval("") %> 语法时,您必须确保要绑定的对象具有在 Eval 中命名的那些属性。因此,当您的属性前面带有类型名和下划线时,您可能会遇到切换数据源的问题。话虽如此。有 2 个选项可以更改数据源。在按钮的单击事件或您使用的任何切换机制中,您可以编写类似的内容。
不在标记中使用数据源:
List<Bonus> bonusList = GetBonuses();
MyListView.DataSource = bonusList;
MyListView.DataBind();
Run Code Online (Sandbox Code Playgroud)
在标记中使用数据源:
//where bonus list would be the id of the datasource in the markup
MyListView.DataSourceID= "BonusList";
MyListView.DataBind();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12986 次 |
| 最近记录: |