2011-08-04 63 views
0

如何將網格中的單個單元格設置爲下拉列表。我有一個可編輯的網格,其中所有行都可編輯,除了單獨的兩行應該可以從下拉列表中選擇。我們如何實現它?我甚至無法開始如何着手。有任何想法嗎?如何使GridView中的單元格成爲下拉列表

<asp:GridView AutoGenerateColumns="false" PageSize="300" ID="gvService" 
          runat="server" GridLines="None" BorderWidth="1" BorderColor="Brown" AlternatingRowStyle-BackColor="Cyan" 
          HeaderStyle-BackColor="ActiveCaption" ShowFooter="true"> 
          <Columns> 
           <asp:TemplateField> 
            <HeaderTemplate> 
             Classic</HeaderTemplate> 
            <ItemStyle HorizontalAlign="Center" /> 
            <ItemTemplate> 
             <asp:Label ID="lblClassic" runat="server" Text='<%# Eval("Classic") %>' /> 
            </ItemTemplate> 
           </asp:TemplateField> 
           <asp:TemplateField> 
            <HeaderTemplate> 
             ABC</HeaderTemplate> 
            <ItemStyle HorizontalAlign="Center" /> 
            <ItemTemplate> 
             <asp:Label ID="lblA" Visible='<%# ! IsInEditMode %>' runat="server" Text='<%# Eval("ABC") %>' /> 
             <asp:TextBox ID="txtA" Visible='<%# IsInEditMode %>' runat="server" Text='<%#Eval("ABC")%>' 
              MaxLength="3" Columns="3"> 
             </asp:TextBox> 
            </ItemTemplate> 
           </asp:TemplateField>  


+0

你可以發佈你所談論的GridView控件的一些標記,並指出正是你想要什麼和做什麼不想編輯? – Jeroen

+0

現在在我的問題中確定它 – premg

+0

而在某些行中,您希望文本框成爲下拉菜單嗎?他們是怎樣的行? – Jeroen

回答

0

快速的答案是...在gridview的編輯你的模板..它應該有一個下拉..在下拉菜單,你會發現「編輯項模板」你會堅持無論你想要什麼控制..在視圖中,它應該只是文本或文本框無論你在哪裏。在模板字段

小鐵道部einfo .. http://msdn.microsoft.com/en-us/library/aa479353.aspx

1

這一點很難理解你要求什麼,但你可以只添加一個字段,在其下拉喜歡:

<asp:TemplateField> 
    <HeaderTemplate> 
     Classic</HeaderTemplate> 
    <ItemStyle HorizontalAlign="Center" /> 
    <ItemTemplate> 
     <asp:Label ID="lblClassic" runat="server" Text='<%# Eval("Classic") %>' /> 
    </ItemTemplate> 
</asp:TemplateField> 
<asp:TemplateField> 
    <HeaderTemplate> 
     ABC</HeaderTemplate> 
    <ItemStyle HorizontalAlign="Center" /> 
    <ItemTemplate> 
     <asp:Label ID="lblA" Visible='<%# ! IsInEditMode %>' runat="server" Text='<%# Eval("ABC") %>' /> 
     <asp:TextBox ID="txtA" Visible='<%# IsInEditMode %>' runat="server" Text='<%#Eval("ABC")%>' 
      MaxLength="3" Columns="3"> 
     </asp:TextBox> 
    </ItemTemplate> 
</asp:TemplateField> 
<asp:TemplateField Header="header"> 
    <EditItemTemplate> 
     <asp:DropDownList ID="ddl" runat="server"></asp:DropDownList> 
    </EditItemTemplate> 
    <ItemTemplate> 
     <asp:Label ID="ddllbl" runat="server"></asp:Label> 
    </ItemTemplate> 
</asp:TemplateField> 

如果你想將數據綁定到它明確,你可以這樣做:

// In your aspx page 
<asp:DropDownList ID="yourDDL" runat="server" DataTextField="yourTextFieldName" DataValueField="yourValueFieldName" OnDataBinding="yourddl_DataBinding"> 
</asp:DropDownList> 

// In your codebehind .cs file 
protected void yourddl_DataBinding(object sender, System.EventArgs e) 
{ 
    DropDownList ddl = (DropDownList)(sender); 
    // This could be a List of objects, DataTable, DataSet, whatever 
    ddl.DataSource = GetCachedData(); 
    ddl.DataBind(); 
} 
+0

在上面的代碼中它會使第三列「標題」下拉右邊?但我只希望該列中的前兩行是下拉列表。 – premg

+0

在某些行中使用不同項目的方法是在TemplateField中創建兩個控件。然後,您可以在每個控件的Visible屬性中應用條件語句。然後,根據條件結果,一次只顯示一個控件。 –