Как удалить строку из GridView, используя невидимые данные?

StackOverflow https://stackoverflow.com/questions/205278

  •  03-07-2019
  •  | 
  •  

Вопрос

Я пишу простой интерфейс прототипа, используя GridView, который заполняется с помощью функции, а не связан напрямую с источником данных SQLServer.

Таким образом, я могу удалить строку / запись из сетки / базовой базы данных, в которой я нахожусь в данный момент

  1. Установка AutoGenerateDeleteButton = true
  2. Отображение уникальных идентификаторов записей в первом столбце
  3. Обработка события RowDeleting
  4. Получение идентификатора путем получения сетки.Строки [e.RowIndex].Ячейки [idIndex].Текст
  5. Передача этого числа функции, которая выполняет удаление

Кажется, это работает просто отлично, но я бы предпочел не отображать идентификаторы пользователям, поскольку они для них ничего не значат.

Я попытался установить для свойства Visible столбца id значение false, но это привело к тому, что шаг 4 выше вернул пустую строку - и поэтому запись не была удалена.

Итак, как мне сохранить скрытый идентификационный номер в каждой строке?

Или я иду по этому поводу совершенно неправильным путем?

Следите за ответами:

Спасибо за оба ответа, в итоге я выбрал путь DataKeyNames Эрика.Для других людей, таких же новичков в ASP.NET, как я, шаги, которые я использовал, где

  • Между строками, где я установил источник данных grids и вызвал DataBind(), я добавил

    grid.DataKeyNames = new string[] {"id"};

  • Затем в функции, обрабатывающей удаление строки, я получил свой идентификатор, используя

    grid.DataKeys[e.RowIndex].Value

Это было полезно?

Решение

GridView имеет свойство DataKeyNames .Когда вы привязываете источник данных к сетке, вы задаете DataKeyNames (обычно только с одним именем, вашим полем PK).Вы не показываете PK, но вы можете получить к нему доступ из кода.

Другие советы

Видимый = false означает, что он не отображается на странице.Что вы хотите, так это либо сделать это шаблонным полем и использовать скрытое поле для хранения значения, либо установить стиль элемента управления на "отображать:нет;".Это было бы в том случае, если бы клиентскому коду требовался доступ к значению для вызова Ajax или чего-то еще.

В противном случае используйте свойство DataKeyNames, как предлагает @Eric Z Beard.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top