ASP.NET Update GridView语句

时间:2011-12-01 04:17:45

标签: c# asp.net gridview updatecommand

我使用的是VS2005 C#和SQL Server 2005。

我有一个GridView,这是我当前的Update语句:

UpdateCommand="UPDATE [UserData] SET [UserID] = @UserIDe, [Username] = @Username, [Age] = @Age, [MemberType]=@MemberType WHERE [UserID] = @UserID

上述语句将按UserID更新用户行标识。

但是,我希望变量UserID可以编辑,因此如果我在更新表时编辑UserID,则不会更新该行,因为特定的UserID可能不会存在。

如何使用UpdateCommand并通过识别已编辑行的row number来更新行?

2 个答案:

答案 0 :(得分:1)

在GridView下面,表格需要至少有一个唯一ID才能更新记录。如果需要编辑UserID,则需要在表中使用固定密钥。至少将其命名为UserKey。我认为只要你有一个指向该行的指针,GridView就只能编辑和更新数据。否则,从DataKeyNames集合中删除UserID,并为其分配您认为唯一且不会更改的列。

答案 1 :(得分:1)

这可以通过跟踪所有原始值来完成。如果您使用向导生成SQL语句,Visual Studio将为您执行此操作,并选择“使用乐观并发”选项,如图所示here.

可以找到生成的SQL的示例here

页面中的代码示例:

UPDATE Products SET
    ProductName = @ProductName,
    UnitPrice = @UnitPrice
WHERE
    ProductID = @original_ProductID AND
    ProductName = @original_ProductName AND
    UnitPrice = @original_UnitPrice

通读本文,您应该可以对您的情况应用相同类型的查询,因为使用原始值可以避免使用主键。但是,我应该指出,拥有可编辑的识别密钥是一种非常糟糕的设计,因为您不能保证它是唯一的。您可以非常轻松地结束更新多条记录以及其他一系列问题。