2011-12-01 69 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,併爲其分配您認爲是唯一且不會更改的列。