Как получить данные из gridview в ItemTemplate в ASP.NET 2 - PullRequest
1 голос
/ 01 ноября 2011

У меня есть gridview, где у каждого столбца есть два поля шаблона. Одним из них является ItemTemplate, а другим - EditItemTemplate. Теперь в EditItemTemplate он покажет несколько текстовых полей, где я могу выполнить необходимое редактирование. Я могу легко получить данные из каждой ячейки, используя следующий код -

Dim gvRow As GridViewRow = gvView.Rows(e.RowIndex)

CType(gvRow.FindControl("controlID"), TextBox).Text

Но как я могу получить данные, когда вид сетки не находится в режиме редактирования, который находится в ItemTemplate. Я пробовал следующее-

Dim rowView As DataRowView = CType(gvRow.DataItem, DataRowView)

Dim something As String = rowView("data_field").ToString()

Но для получения ссылки на объект исключения не задан экземпляр объекта. Вероятно, это происходит потому, что приведенный выше код следует использовать в методе, подобном RowDataBound, когда создается экземпляр строки. Но я должен получить данные из другого метода. Любая идея, как это сделать.

Снова для пояснения, я хочу получить данные, когда столбцы таблицы сетки находятся в режиме ItemTemplate.

Ответы [ 3 ]

1 голос
/ 01 ноября 2011

Вы можете рассмотреть возможность прямого доступа к источнику данных gridview. Будьте осторожны при этом, если вы разрешаете сортировку / разбиение по страницам в сетке, так как индекс в вашем источнике данных будет отличаться.

1 голос
/ 01 ноября 2011

Полагаю, вы хотите прочитать значение столбца сетки в какой-либо команде. Если у вас есть gvRow, который является строкой вашего gridview, то вы можете использовать .Cell(index).Text, чтобы получить значение столбца.

Если вы используете поле шаблона и используете некоторые элементы управления для отображения данных столбца, вам нужно выполнить gvRow.findControl("controlId") и затем привести его к соответствующему объекту управления для чтения данных из него.

Счастливое кодирование

0 голосов
/ 05 января 2012

Два ответа отлично сработали, большое спасибо.

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

...