我有一个网格视图,它是绑定到数据集的数据。在网格中,我有一列 DefaultValue,其中包含三个控件 - 一个下拉列表、一个复选框和一个文本框。根据传入的数据,它可以切换到这些控件中的任何一个。当我们只需要显示数据时,一切都很简单——在 gridview_prerender 事件中,我只是让其中一个控件可见。控件设置如下:
<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 事件只能访问文本框列中的数据,而我的所有其他数据都会被丢弃。我也无法使用复选框和下拉列表控件进行数据绑定,因为它们会获得无效的数据类型异常。那么,有谁知道如何更新具有三个不同控件的列,这三个控件中的每一个都可能具有有效数据?
谢谢