2014-01-31 3 views
1

У меня есть сетка на моей странице asp.net. Внутри выбранного события изменения индекса я выполнил приведенный ниже код.Вид сетки Выбранная ячейка ячейки значения null

int ID = Convert.ToInt32(grdMnaualEntryTransactionTemplate.Rows[selectedIndex +1].Cells[1].Text); 

Cell1 это число, в управлении временем он дает мне ошибку «Входная строка не была в правильном формате» .Это происходит из-за «Текст» становится нулевой в момент работает. Я также использовал код ниже в событии с измененным индексом, который всегда получает значение.

int selectedIndex = grdMnaualEntryTransactionTemplate.SelectedIndex; 

ответ

2

Почему вы используете selectedIndex + 1? Это даст вам строку ниже выбранной строки и вызовет исключение, когда пользователь выберет последнюю строку в сетке.

Попробуйте вместо этого int ID = Convert.ToInt32(grdMnaualEntryTransactionTemplate.Rows[selectedIndex].Cells[1].Text);.

1

Если и хотите выбранное значение, то и можно установить с помощью DataKeyName и вызвать на SelectedIndexChanged событие ..

string data = grdMnaualEntryTransactionTemplate.SelectedValue.ToString(); 
1

Если у вас есть кнопки действия на сетке, то есть. Select, Edit и т. Д., То они будут находиться в массиве Rows.Cells[]. Поэтому, если у вас есть три кнопки «Выбрать» «Изменить» «Удалить» в строке, ваша первая фактическая ячейка данных будет индексом массива [3].

Как указали другие, указатель + 1 неверен.

2

Вы можете использовать, как это .. это простой способ получить данные из выбранной строки в GridView .. Попробуйте ниже код ..

int ID = Convert.ToInt32(grdMnaualEntryTransactionTemplate.SelectedRow.Cells[1].Text); 
+0

@ user3383403, Привет, в моем случае текст всегда нуль в все ячейки, заметьте, что у меня есть AutoGenerateColumns = false в моей сетке – user123456

Смежные вопросы