2015-02-24 67 views
0

我已經爲每列使用Itemtemplate創建了一個批量編輯gridview。非編輯模式的標籤,編輯模式的文本框。但是,這隻有在gridview的結構已知的情況下才有效(在asp中定義模板)。當從下拉列表中選擇值時顯示可編輯的Gridview

<asp:TemplateField HeaderText="Name" ConvertEmptyStringToNull="True"> 
        <ItemTemplate> 
         <asp:Label ID="lblName" Visible='<%# !(bool) IsInEditMode %>' runat="server" Text='<%# Eval("name") %>' /> 
         <asp:TextBox ID="txtName" ControlStyle-CssClass="wide" Visible='<%# IsInEditMode %>' 
          runat="server" Text='<%# Eval("name") %>' /> 
        </ItemTemplate> 
    </asp:TemplateField> 

現在,我想實現的是當用戶選擇下拉值時,sql查詢被觸發並返回結果。這個結果顯示在gridview中。但是問題的產生是因爲從下拉菜單中選擇的每個結果的結果列數可能會有所不同。我想使gridview可編輯(或只讀)。這需要爲每列定義兩個模板。

所以我想知道這可以動態完成,即定義模板取決於SQL返回的列數。

+0

sql查詢返回的結果是否像無限?我的意思是說你知道查詢的上限,比如你的gridview需要有多少列? – Anurag 2015-02-24 16:34:52

+0

不,這不是無限的。 GridView需要的列的數量不會超過20個。 – 2015-02-24 16:38:30

+0

然後有一個20列的gridview,當你從SQL查詢結果中選擇了特定的數量時,試圖隱藏不需要的列。我知道這不是好簡單。當你綁定gridview時,你需要以某種方式獲取列的數量和列的順序。 – Anurag 2015-02-24 16:43:14

回答

0

首先,您可以觸發此事件的查詢和以下代碼。

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     //insert code 
    } 

對於不同模板的問題,我可能會建議使用兩個GridViews。我已經完成了這一點,我有兩組獨立的結果。如果他們選擇一個dropdownItem,它隱藏GridView1並顯示GridView2(查詢GridView2.SqlDataSource時)。

現在你是基於下拉查詢不同的SQL表嗎?還是他們從同一個地方查詢?

+0

查詢來自許多不同的表格。 如果我按照你的方法。我將不得不製作大約15個Gridviews,並相應地切換可見性,我認爲這太繁瑣。 – 2015-02-24 17:08:36

+0

我明白了。你從未指定過多少組結果。在查詢之前,你是否將許多不同的表格合併成一張表格?您可以先在SQL中創建一個View。然後,查詢該視圖並選擇你想要和不想要的列。如果它是每個表的一個查詢,那麼我認爲設置一個新的數據源是需要研究的。無論如何,我不確定將15個不同的結果表格轉換爲一個gridview是如何組織的。 – terbubbs 2015-02-24 18:07:48

相關問題