我有一个Gridview边界字段,其中我将ReadOnly设置为true,因为我不希望用户更改它的值。然而,在objectdatasource控件的update方法中,当我尝试将其用作update方法中的参数时,它变成了null。有没有办法在更新过程中设置该值?
发布于 2008-11-25 01:56:54
当您在GridView上将字段标记为只读时,它在页面上呈现为span元素,而不是输入。因此,该值在PostBack上不可用。如果您可以构造update语句,使其不需要该字段,这将是处理此问题的最佳方法。如果update语句是自动生成的,并且您无法获得要更新的值,那么您可以在执行更新之前从数据库中读取值(以便拥有它),或者包含一个绑定到该列的HiddenField,并使用通过Eval而不是绑定获得该值的文字(如果需要)。这将需要使用模板。
<asp:TemplateField>
<InsertItemTemplate>
<asp:TextBox runat="server" ID="itemTextBox" />
</InsertItemTemplate>
<EditItemTemplate>
<asp:HiddenField runat="server" ID="itemHF" Value='<% Bind("Item") %>' />
<asp:Label runat="server" ID="itemLabel" Text='<% Eval("Item") %>' />
</EditItemTemplate>
<ItemTemplate>
<asp:Label runat="server" ID="itemLabel" Text='<% Bind("Item") %>' />
</ItemTemplate>
</asp:TemplateField>
发布于 2009-03-27 00:47:42
不需要,只需将所需的字段名添加到GridView的DataKeyNames属性中即可。然后,该值将被发送到更新命令。
发布于 2013-03-28 03:29:14
另一种方法是向tableadapter添加一个新查询。创建一个update查询,它只使用需要更新的字段。在ODS上选择更新方法时,选择更新查询。现在可以将不属于update查询一部分的BoundFields转换为readonly=true,它应该可以工作。
https://stackoverflow.com/questions/315968
复制相似问题