2011-12-01 2 views
1

Я использую VS2005 C# и SQL Server 2005.ASP.NET Обновление GridView заявление

У меня есть GridView и это мое текущее заявление Update:

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

Данное заявление будет обновить идентификатор пользователя: UserID.

Однако, я хотел бы переменная UserID редактируемой, таким образом, если я изменить мой UserID при обновлении таблицы, строка не будет обновляться, потому что особенно UserID не может существовать.

Как использовать UpdateCommand и обновить строку, указав row number отредактированной строки?

ответ

1

Это можно сделать, отслеживая все исходные значения. Visual Studio сделает это для вас, если вы будете использовать мастер для генерации ваших операторов SQL, и вы выбираете опцию «использовать оптимистичный параллелизм», как показано на рисунке here.

Пример сгенерированного SQL-кода можно найти here.

Пример кода со страницы:

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

Читая статью, вы должны быть в состоянии применить тот же тип запроса к вашей ситуации, как использование исходных значений позволит вам обойти необходимость первичный ключ. Однако я должен указать, что наличие редактируемого идентификационного ключа - очень плохой дизайн, поскольку вы не можете гарантировать его уникальность. вы можете легко завершить обновление более чем одной записи вместе с целым рядом других проблем.

1

Под GridView есть таблица, которая должна иметь хотя бы один уникальный идентификатор, чтобы обновить запись. Если вам нужно отредактировать UserID, вам нужно иметь фиксированный ключ в вашей таблице. По крайней мере, назовите его как UserKey. Я думаю, что GridView мог только редактировать и обновлять данные, пока у вас есть указатель на эту строку. В противном случае удалите UserID из коллекции DataKeyNames и назначьте его столбцами, которые, по вашему мнению, являются уникальными и не меняются.