我有以下列表视图,它有两个主要部分<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();
答案 0 :(得分:0)
因为你的gridview在项目模板中, 在列表视图的“项目数据绑定”事件上执行此操作。
答案 1 :(得分:0)
如果您对我们的数据结构有所了解,我认为这会有所帮助。所以你试图为ListView的每个元素显示一个DataGrid。对我而言,这意味着ListView的每个元素都有一组需要在其自己的DataGrid中显示的相关数据。要做到这一点,除了Listview DataBind代码之外,还需要以下内容:(在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为DataBound时,都会调用此处理程序。每次获取该项目的相关数据,并使用它来填充该项目的DataGrid。