1

我正在使用 VS2005 C# 和 SQL Server 2005。

我有一个 GridView,这是我当前的更新声明:

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

上面的语句将更新用户行标识UserID

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

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

4

2 回答 2

1

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

于 2011-12-01T04:30:51.840 回答
1

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

可以在此处找到生成的 SQL 示例。

页面中的代码示例:

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

通读这篇文章,您应该能够将相同类型的查询应用于您的情况,因为使用原始值应该可以让您绕过对主键的需求。但是,我应该指出,拥有一个可编辑的标识密钥是一个非常糟糕的设计,因为你不能保证它是唯一的。您可以很容易地结束更新多个记录,以及一大堆其他问题。

于 2011-12-01T04:41:16.913 回答