如何在Asp.net的Listview中绑定DataGrid
本文关键字:Listview 绑定 DataGrid net Asp | 更新日期: 2023-09-27 17:51:04
我有以下列表视图,它有两个主要部分,一个<table>
,里面有标签,一个datagrid
。我使用Datatable填充字段,但我不知道如何绑定datagrid。
<asp:ListView
ID="ListView1"
runat="server">
<LayoutTemplate>
<div id="itemPlaceholderContainer" runat="server" >
<div id="itemPlaceholder" runat="server" />
</div>
</LayoutTemplate>
<ItemTemplate>
<asp:Panel runat="server">
<table align="center">
<tr>
<td>
<cc1:SWCLabel runat="server"
Text='<%# Eval("field1") %>'
/>
</td>
<td>
<cc1:SWCLabel runat="server"
Text='<%# Eval("field2") %>'
/>
</td>
</tr>
</table>
<asp:DataGrid ID="datagrid_1" runat="server">
<Columns>
<asp:BoundColumn DataField="col1" HeaderText="column1 ">
</asp:BoundColumn>
<asp:BoundColumn DataField="col2" HeaderText="column2 ">
</asp:BoundColumn>
</Columns>
</cc1:SWCDataGrid>
</asp:Panel>
</ItemTemplate>
</asp:ListView>
我的后台代码:
DataTable table = new DataTable();
// GET DATA
// . . .
ListView1.DataSource = table;
ListView1.DataBind();
因为我们的gridview在item模板中,在listview的'item data bound'事件上执行
我想如果你能给我们一些关于你的数据结构的想法会有所帮助。因此,您正在尝试为ListView的每个元素显示一个DataGrid。对我来说,这意味着你的ListView的每个元素都有一组相关的数据,需要在它自己的DataGrid中显示。要做到这一点,除了你的Listview数据绑定代码,你需要这样的东西:(在VB中,应该很容易制作成c#)
Protected Sub ListView1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewItemEventArgs) Handles ListView1.ItemDataBound
Dim theDataGrid As DataGrid = e.Item.FindControl("datagrid_1")
Dim itemData As DataTable = GetTheItemData(e.Item.DataItem)
theDataGrid.DataSource = itemData
theDataGrid.DataBind()
End Sub
这个处理程序将在每次列表视图中的Item被绑定时调用。每次它都会获取该项的相关数据,并使用它来填充该项的DataGrid。