Обновление ASP.NET GridView

Я использую 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 отредактированного ряда?

2 ответа

Решение

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

Пример сгенерированного SQL можно найти здесь.

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

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

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

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

Другие вопросы по тегам