データセットにバインドされたデータであるグリッドビューがあります。グリッドには、デフォルト値の列があり、ドロップダウンリスト、チェックボックス、テキストボックスの3つのコントロールがあります。入ってくるデータに応じて、これらのコントロールのいずれかに切り替えることができます。データを表示するだけでよい場合は、すべてが簡単です。gridview_prerenderイベントでは、コントロールの1つを表示するだけです。コントロールは次のように設定されます。
<asp:TemplateField HeaderText="Default Value" SortExpression="DefaultValue">
<ItemTemplate>
<asp:TextBox ID="txt_defaultValue_view" runat="server" Text='<%# Bind("DefaultValue") %>' Enabled ="false" />
<asp:DropDownList ID="ddl_defaultValue_view" runat="server" Enabled ="false" />
<asp:CheckBox ID="chk_defaultValue_view" runat="server" Enabled ="false" />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txt_defaultValue_edit" runat="server" Text='<%# Bind("DefaultValue") %>'/>
<asp:DropDownList ID="ddl_defaultValue_edit" runat="server" />
<asp:CheckBox ID="chk_defaultValue_edit" runat="server" />
</EditItemTemplate>
</asp:TemplateField>
編集モードでグリッドを新しいデータで更新する必要があるときに問題が発生します。テキストボックスコントロールのみがデータバインドされているため、RowUpdatingイベントはテキストボックス列のデータにのみアクセスでき、他のすべてのデータは単に破棄されます。また、チェックボックスとドロップダウンリストコントロールを使用してデータバインドすることはできません。これは、無効なデータ型の例外が発生する可能性があるためです。では、3つの異なるコントロールがあり、これら3つのコントロールのそれぞれに有効なデータがある可能性がある列を更新する方法を知っている人はいますか?
ありがとう