2011-12-01 68 views
1

我使用VS2005 C#和SQL Server 2005ASP.NET更新GridView的声明

我有一个GridView,这是我目前的更新语句:

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

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

不过,我想变UserID可编辑,因此,如果修改我的UserID同时更新表,该行不会被更新,因为该特定UserID可能不存在。

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

回答

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 

通过阅读文章,你应该能够在同一类型的查询适用于您的情况,如使用原来的值应该允许你绕过的需要一个主键。但是,我应该指出,拥有可编辑的识别码是非常糟糕的设计,因为您不能保证它是唯一的。您可以轻松结束更新多条记录以及其他一系列问题。

1

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