【发布时间】:2011-03-08 08:22:22
【问题描述】:
我有一个将数据绑定到数据集的网格视图。在网格中,我有一列 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 事件只能访问文本框列中的数据,而我的所有其他数据都会被丢弃。我也无法使用复选框和下拉列表控件进行数据绑定,因为它们会获得无效的数据类型异常。那么,有谁知道如何更新具有三个不同控件的列,这三个控件中的每一个都可能具有有效数据?
谢谢
【问题讨论】:
-
而且我的 gridview viewstate 设置为 false,不幸的是,我的程序设计无法将其设置为 true
标签: asp.net gridview gridviewcolumn