Я пытаюсь передать индекс строки ... и он отлично работает ... но мой gridview имеет возможность подкачки и когда я использую индекс на второй странице, например , Я получаю ошибку вне диапазона ... но индекс, который я получил правильно. Например. У меня есть 4 строки на первой странице и 4 в секунду. Если я нажму на первый элемент второй страницы, я получил индекс 5 ... это правильно. И у меня 8 itens ... почему индекс 5 выходит за пределы диапазона?GridView -out диапазона только на второй странице
Там мой код:
<asp:GridView ID="GridView1" runat="server" CellPadding="4"
BorderStyle="None" BorderWidth="0px" CellSpacing="1" Width="100%"
GridLines="Vertical" AllowPaging="True" onrowcommand="GridView1_RowCommand"
onselectedindexchanged="GridView1_SelectedIndexChanged"
onpageindexchanging="GridView1_PageIndexChanging"
onrowdatabound="GridView1_RowDataBound" PageSize="5" HorizontalAlign=Left
>
<PagerStyle HorizontalAlign="Center" />
<RowStyle CssClass="tabela_texto2" HorizontalAlign="Center"
VerticalAlign="Middle" />
<AlternatingRowStyle CssClass="tabela_texto1" />
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Button Text="Status" CommandName="atender" CommandArgument='<%# Container.DataItemIndex %>' ID="atender" runat="server" OnClientClick="return confirm('Tem certeza que deseja aterar os status?');" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Button Text="Ver no mapa" CommandName="ver" CommandArgument='<%# Container.DataItemIndex %>' ID="ver" runat="server"/>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Button Text="Excluir" CommandName="excluir" CommandArgument='<%#((GridViewRow)Container).RowIndex%>' ID="excluir" runat="server" OnClientClick="return confirm('Tem certeza que deseja aterar os status?');" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
и линия, которая получает сообщение об ошибке является:
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
string commandname = e.CommandName;
int index = int.Parse(e.CommandArgument.ToString());
if (commandname.Equals("atender"))
{
string id = GridView1.Rows[index].Cells[3].Text //this line is getting error.
}
}
Благодаря 'Ряды [индекс] 'или' Ячейки [3] '? Помните, что «index» имеет строку в сетке, а не индекс элемента во всей сборной коллекции. – SimpleVar
Строки [указатель] - проблема – Chucrutes
Нет 4-й ячейки. Попробуйте 'Ячейки [2]'. –