2011-08-04 8 views
0

グリッド内の単一のセルをドロップダウンにする方法。私は編集可能なグリッドを持っていますが、2つの行だけをドロップダウンから選択できる点を除いて、すべての行が編集可能です。どうすれば達成できますか?私は進める方法さえも始めることができませんでした。何か案は?ドロップダウンとしてグリッドビュー内のセルを作成する方法

<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の編集に...ですどのようなコントロールをあなたがそこにしたいと思っています。そして、それはただのテキストでなければなりません。

テンプレートフィールドにはほとんどのMOR 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

は、3番目の列 "header"を右下に作成しますか?しかし、その列の最初の2行だけをドロップダウンにしたい。 – premg

+0

特定の行に異なる項目を表示する方法は、両方のコントロールをTemplateField内に作成することです。次に、各コントロールのVisibleプロパティ内に条件文を適用できます。条件付きの結果に応じて、一度に1つのコントロールしか表示されません。 –