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

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

1 голос
/ 01 декабря 2011

Я использую 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 ]

1 голос
/ 01 декабря 2011

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

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

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

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

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

1 голос
/ 01 декабря 2011

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

...