2015-03-04 2 views
3

Я взял GridView с пейджингом, имеющим pagesize=10, но когда я перехожу на вторую страницу &, выберите первую строку, затем он отобразит индекс как 11, несмотря на 0. Итак, пожалуйста, скажите мне, как его решить ,Получить индекс строки второй страницы gridview

Вот что я пытался до сих пор:

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
     GridView1.PageIndex = e.NewPageIndex; 
     BindGrid(); 
} 

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    int index = (Convert.ToInt32(e.CommandArgument)); 
    GridViewRow row = GridView1.Rows[index]; 
    //Some operation 
} 

Когда я попробовать его на 11-й строке она бросить ошибку как:

Index was out of range. Must be non-negative and less than the size of the collection. 
Parameter name: index 

если я передать ручное ее закрытие значение index=0 это работает.

ответ

4

Скажите, что ваш информационный ресурс возвращает 100 результатов. Таким образом, уникальный DataItemIndex будет присвоен вашему CommandArgument от 0 до 99. Теперь, если вы установили PageSize = 10 для своего gridview, за один раз будут видны только 10 строк. Скажите теперь, что вы переходите на страницу 3 и нажмите 3-ей запись, DataItemIndex будет 22, в то время как ваш GridView имеет 10 строк, видимых и поэтому индекс выходит за пределы диапазона.

int rowindex = Convert.ToInt32(e.CommandArgument) % GridView1.PageSize; 
GridViewRow row = GridView1.Rows[rowindex]; 
+0

Yeh это работает спасибо .. +1 –

+0

Рад он работал. Счастливое кодирование. –

-1
// Convierte el numero almacenado en CommandArgument a int para sacar el index 
// Converts the number stored in CommandArgument to int to remove the index 
int index = Convert.ToInt32(e.CommandArgument); 

// Convierte el PageIndex del GridView a int 
// Convert the PageIndex of the GridView to int 
int pageIndex = Convert.ToInt32(gv_Comentarios.PageIndex); 

// Convierte al index en la verdadera posicion del dataset 
// It becomes the true position of the dataset to the index 
if (pageIndex > 0) 
{ 
    index = index + (pageIndex * 10); 
} 
Смежные вопросы