如何在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();

如何在Asp.net的Listview中绑定DataGrid

因为我们的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。