проблема gridview при попытке получить элемент из строки - PullRequest
0 голосов
/ 12 января 2011

У меня есть gridview, который успешно связывается с базой данных и получает все данные. Теперь я добавил кнопку ссылки в одну из колонн, которая делает это:

GridViewRow grow = gvInbox.SelectedRow;            
DataRow dr = ((DataTable)this.gvInbox.DataSource).Rows[grow.DataItemIndex];
int MessageId = (int)dr["MessageId"];
Response.Write(MessageId);

В основном я пытаюсь получить данные и получить MessageID. Однако вторая строка сверху дает мне outofbound исключение.

Ответы [ 2 ]

0 голосов
/ 13 января 2011

Лучший способ - это указать свой идентификатор как DataKey в разметке GridView:

DataKeyNames="MessageId"

Тогда в своем коде вы можете ссылаться на него:

if(gvInbox.SelectedIndex > -1)
    MessageId = (int) gvInbox.DataKeys[gvInbox.SelectedIndex].Value;

Имейте в виду, чтоDataTable не будет там на обратной передаче.Таким образом, чтобы получить данные «из» ячейки GridView, которая не является ключом DataKey, вы видите код, подобный следующему:

gvInbox.Rows[gvInbox.SelectedIndex].Cells[4].Text
0 голосов
/ 12 января 2011

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

yours... ((DataTable)this.gvInbox.DataSource).

should be (DataTable)(this.gvInbox.DataSource).

Итак, вы вводите типизацию "this.gvInbox.DataSource", которыйявляется датированным, а затем получает ссылку .Rows [] из этого.

В противном случае он интерпретирует ваше приведение типа следующим образом.

((DataTable)(this).gvInbox.DataSource).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...