Asp.net 更新Gridview时呈现错误,仅当boundfield readonly设置为true时发生
我有一个GridView,它在sqlDataSource上运行,它允许插入和更新数据。但是,插入数据后,用户不应编辑“UpdatedBY”。因此,我向绑定列添加了一个readonly属性并将其设置为true,这会在尝试编辑/更新列时生成以下错误:必须声明标量变量“@UpdateBY”。注意:只有在“UpdateBY”列上实现只读属性时,才会发生此错误。删除后,更新网格时不会出错,但我不希望用户能够修改UpdateBY列 超文本:Asp.net 更新Gridview时呈现错误,仅当boundfield readonly设置为true时发生,asp.net,vb.net,gridview,Asp.net,Vb.net,Gridview,我有一个GridView,它在sqlDataSource上运行,它允许插入和更新数据。但是,插入数据后,用户不应编辑“UpdatedBY”。因此,我向绑定列添加了一个readonly属性并将其设置为true,这会在尝试编辑/更新列时生成以下错误:必须声明标量变量“@UpdateBY”。注意:只有在“UpdateBY”列上实现只读属性时,才会发生此错误。删除后,更新网格时不会出错,但我不希望用户能够修改UpdateBY列 超文本: <asp:GridView ID="GridView1"
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="Mode_ID" DataSourceID="SqlDataSource1"
AutoGenerateEditButton="True" AllowPaging="True" AllowSorting="True">
<Columns>
<asp:BoundField DataField="Mode_ID" HeaderText="Mode ID" SortExpression="Mode_ID" Visible="false" />
<asp:BoundField DataField="ShipMode" HeaderText="Ship Mode" SortExpression="ShipMode" />
<asp:TemplateField HeaderText="Active" SortExpression="Active">
<EditItemTemplate>
<asp:CheckBox ID="chkactive" runat="server" Checked='<%# Bind("Active") %>'></asp:CheckBox>
</EditItemTemplate>
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Bind("Active") %>'></asp:CheckBox>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="UpdateDate" HeaderText="Update Date" SortExpression="UpdateDate" />
<asp:BoundField DataField="UpdateBY" HeaderText="Update BY" SortExpression="UpdateBY" ReadOnly="true" />
</Columns>
</asp:GridView>
…SQL数据源:
<asp:SqlDataSource
ID="SqlDataSource1"
ConnectionString="<%$ ConnectionStrings:ShipperNotificationConnectionString %>"
SelectCommand="SELECT Mode_ID, ShipMode, Active, UpdateDate, UpdateBY FROM [ShipMode]"
UpdateCommand="UPDATE ShipMode SET ShipMode=@ShipMode,
Active=@Active,UpdateDate=@UpdateDate, UpdateBY=@UpdateBY
WHERE Mode_ID=@Mode_ID"
InsertCommand="INSERT ShipMode (ShipMode,Active,UpdateDate,UpdateBY)
VALUES (@ShipMode,@Active,@UpdateDate,@UpdateBY)"
runat="server"
/>
我能得到一些关于我遗漏/不理解的帮助吗 我相信一旦点击“更新正确”按钮,您就会收到错误信息 您应该遵循所描述的方法 据我所知,您希望限制用户更改“UpdatedBy”字段的值,因为这将破坏此字段的用途 在ASPX代码中,必须设置GridView1
onRowUpdate=GridView1\u RowUpdate
,以下是相关代码:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridViewRow row = GridView1.Rows[GridView1.EditIndex];
// Put a debug point here to check if value of originalUpdatedBy = UpdatedBy of Edit row
string originalUpdatedBy= row.Cells[7].Text;
if(!string.IsNullOrEmpty(originalUpdatedBy))
{
SqlDataSource1.UpdateParameters.Add("@UpdateBy", originalUpdatedBy);
SqlDataSource1.Update();
}
}