2013-01-08 19 views
0

我有以下列表視圖,它有兩個主要部分:<table>,裏面有標籤和datagrid。我使用Datatable填充字段,但我不知道如何綁定數據網格。如何在Asp.net中綁定ListView中的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

上面的DataBind僅在沒有在aspx中聲明數據網格時有效。 – anmarti

+0

如果你想綁定到DataGrid,爲什麼不設置datagrid_1.DataSource = table;而不是ListView1.DataSource = table; – prthrokz

+0

因爲我還需要綁定其他字段。 datagrid_1就在listview字段上。 – anmarti

回答

0

因爲烏拉圭回合的GridView是項模板, 做它 '綁定項數據' 列表視圖的事件。

+0

你可以嘗試改善你的答案嗎? – anmarti

0

我認爲這會對你給我們一些關於你的數據結構的想法有所幫助。所以你試圖爲ListView的每個元素顯示一個DataGrid。對我來說,這意味着ListView的每個元素都有一組需要在其自己的DataGrid中顯示的相關數據。要做到這一點,除了你的列表視圖的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 

該處理器將在每次調用列表視圖的項目是DataBound。每次獲取該項目的相關數據,並使用它填充該項目的DataGrid。