Я ищу способ изменить строку asp.net gridview в режиме EDIT на основе первичного ключа данных, а не на основе номера строки, нажатой в gridview.
Какие есть варианты.
Я ищу способ изменить строку asp.net gridview в режиме EDIT на основе первичного ключа данных, а не на основе номера строки, нажатой в gridview.
Какие есть варианты.
Я бы, вероятно, имел скрытый столбец в GridView, содержащий PK. При нажатии кнопки редактирования вы можете использовать соответствующий обработчик, чтобы получить PK из этой строки и управлять им по своему усмотрению.
Обновление: после прочтения вашего комментария дело не в том, что вы не можете получить ПК, а в том, что данные были обновлены между нажатием кнопки и тем, когда представление сетки повторно отображается как редактируемое. В вашем сценарии пользователь может щелкнуть третью строку для редактирования, и внезапно она станет седьмой строкой, потому что другие пользователи вставили четыре строки.
Простой ответ - не делайте этого! Во-первых, это значительно усложнит вашу жизнь, и 2) пользователя будет сбивать с толку, если он щелкнет третью строку, чтобы отредактировать, и вдруг это будет седьмая строка на их экране.
Если по какой-либо причине вы ДОЛЖНЫ обновить данные, сделайте это после того, как пользователь зафиксирует свои изменения. Если вам нужно обновить данные, чтобы убедиться, что какой-то другой пользователь не редактировал значения до того, как пользователь обновит их, что ж, вам придется найти другое решение. возможно, будет работать родительский / подробный экран или появится всплывающее окно, в котором сообщается, что данные были изменены. (Помните, что если значения внезапно изменятся без предупреждения, пользователь тоже будет сбит с толку.)
DataBind()
в методе GridView1_RowEditing, чтобы он не обновлял данные. Во-вторых, EditIndex всегда будет давать вам порядковый номер строки, поэтому вам придется использовать это число, чтобы получить первичный ключ, который вам понадобится в скрытом столбце в Вид сетки.
- person Dave Mroz; 16.01.2014