2011-07-18 41 views
-1

參照下面提到的代碼塊(Designer- .ASPX),我試圖在運行時將內部網格視圖與List<>綁定。內部gridview的這個List<>是外部網格數據源的成員。如何爲網格列保存數據源

正如您從設計中所看到的,只有在用戶單擊嵌入的「+」圖像按鈕後,纔想將內部網格視圖與相應的數據源綁定。

我可以找到按鈕點擊內部的網格視圖,但不知道如何堅持同樣的數據源。每一列都有它自己的List<>數據源,所以我不能用會話或視圖狀態來完成。

任何人都可以讓我知道如何堅持它與內部網格視圖,並會在用戶點擊「+」號後在運行時綁定它?

<asp:GridView ID="gvMain" runat="server" AutoGenerateColumns="false"> 
    <Columns> 
     <asp:BoundField DataField="Name" HeaderText="Name" /> 
     <asp:TemplateField HeaderText="Lateral"> 
      <ItemTemplate> 
       <asp:CheckBox ID="chkLateral" runat="server" Checked='<%# Eval("Lateral") %>' /> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Types"> 
      <ItemTemplate> 
       <table> 
        <tr> 
         <td> 
          <asp:ImageButton OnClick="imgExpandbtn_OnClick" ID="imgExpandbtn" runat="server" ImageUrl="~/Styles/Images/Plus.png" /> 
          <asp:Label runat="server" ID="lblTypes" Text='<%# Eval("Types") %>'></asp:Label> 
         </td> 
        </tr> 
       </table> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField> 
      <ItemTemplate> 
       <asp:GridView ID="gvInner" runat="server" AutoGenerateColumns="false"> 
       </asp:GridView> 
      </ItemTemplate> 
     </asp:TemplateField> 
     <asp:TemplateField HeaderText="Active">  
      <ItemTemplate> 
       <%# (Boolean.Parse(Eval("IsActive").ToString())) ? "Y" : "N"%> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 
+0

我不確定你想問什麼。 「堅持數據源」是什麼意思?你只是想知道如何將內部網格視圖綁定到單擊該行上的按鈕時所在行的屬性? –

+0

@Telarian是的,這正是我需要知道的。 – Chat

+0

這將是非常有益的,你會發布代碼隱藏是做這項工作。我假設你已經在代碼隱藏中處理了「imgExpandbtn_OnClick」,並讓它將你的內部網格視圖綁定到它所在行的屬性上。 –

回答

0

你是否爲內層網格和外層網格獲取數據?如果是,那麼當綁定外部網格時,您應該綁定內部網格,即使用數據綁定表達式在設計時設置其數據源。然後,您應該使用java-script在展開/摺疊按鈕上單擊來顯示/隱藏內部網格 - 不僅此方法易於實現,還可以通過單擊展開/摺疊按鈕節省服務器行程。

或者,您可以選擇僅在單擊展開按鈕時綁定內部網格。然而,在這種情況下,預先獲取將內部網格的數據與外部網格一起存儲是沒有意義的。在這種情況下,當單擊展開按鈕時應該獲取內部網格的數據(因此,您不必「堅持數據源」,因爲數據將按需提取)。

+0

實際上外層網格的數據源是一個泛型列表,該列表包含另一個List <>作爲其成員。我必須將這個內部的GridView與內部的List <>綁定。所以我沒有在運行時僅爲內部網格視圖獲取數據的靈活性。儘管你的第一個選擇對我來說似乎合理。我嘗試設置數據源設計時間,如下所述。但是,我嘗試運行應用程序後,內部gridview完全不可見。 '> 如果您有任何代碼示例,請分享 – Chat

+1

@Chat ,假設'Lstbusinesstypes'是一個返回列表的屬性,那麼代碼應該可以工作。但是,我不確定在哪裏創建了列,因爲它們不存在於標記中(使用'AutoGenerateColumns = false') - 也許這就是您正面臨的確切問題,即無法查看列。我建議你添加一些列標記並檢查出來。 – VinayC

+1

或打開AutoGenerateColumns ... –

相關問題