0

我有以下列表视图,它有两个主要部分,其中一个<table>带有标签,一个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();
4

2 回答 2

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。

于 2013-01-08T22:31:19.153 回答
0

因为您的网格视图在项目模板中,所以在列表视图的“项目数据绑定”事件中执行此操作。

于 2013-01-08T17:40:30.773 回答