Я знаю, что эта проблема существует в stackoverflow. но мой, похоже, другой. Я не вижу никаких проблем. но иногда это происходит во время выполнения, когда изменена страница в gridview.
При работе на первой странице Gridview у меня нет ошибки при редактировании строки в gridview. Если изменить страницу Gridview и попытаться отредактировать любую ошибку возврата строки.
Я пытаюсь добавить данные одной строкой в представление данных, вот мой код, и он говорит:
"Индекс вышел за пределы диапазона. Должен быть неотрицательным и меньше размера имени параметра коллекции: index"
Что это значит? есть ли проблема в моем коде.
Ошибка строки:
GridView g2 = (GridView) gvProducts.Rows [rowindex] .FindControl ("GridView2");
Вот мой код: Может кто-нибудь увидеть и сказать, что происходит?
protected void gvProducts_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName != "Page")
{
int rowindex = Convert.ToInt32(e.CommandArgument.ToString());
GridView g2 = (GridView)gvProducts.Rows[rowindex].FindControl("GridView2");
if (e.CommandName == "Details")
{
int customerId = (int)this.gvProducts.DataKeys[rowindex]["sID"];
gvProducts.Rows[rowindex].FindControl("btn_Show").Visible = false;
sql = @String.Format(" SELECT * FROM `doTable` ");
sql += String.Format(" WHERE ");
sql += String.Format(" sID IN ('{0}') ", customerId);
g2.DataSource = GetData(sql);
g2.DataBind();
g2.Visible = true;
}
else
{
g2.Visible = false;
gvProducts.Rows[rowindex].FindControl("btn_Show").Visible = true;
}
}
}
protected void Paginate(object sender, CommandEventArgs e)
{
int intCurIndex = gvProducts.PageIndex;
switch (e.CommandArgument.ToString().ToLower())
{
case "First":
gvProducts.PageIndex = 0;
break;
case "Prev":
gvProducts.PageIndex = intCurIndex - 1;
break;
case "Next":
gvProducts.PageIndex = intCurIndex + 1;
break;
case "Last":
gvProducts.PageIndex = gvProducts.PageCount - 1;
break;
}
gvProducts.DataBind();
}
<PagerTemplate>
<asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="/aspnet/img/bot_back.gif"
CommandArgument="First" CommandName="Page" />
<asp:ImageButton ID="ImageButton2" runat="server" ImageUrl="/aspnet/img/bot_back2.gif"
CommandArgument="Prev" CommandName="Page" />
Page
<asp:DropDownList ID="ddlPages" runat="server" AutoPostBack="True" CssClass="ddl_Class"
OnSelectedIndexChanged="DDLPages_SelectedIndexChanged">
</asp:DropDownList>
of
<asp:Label ID="lblPageCount" runat="server"></asp:Label>
<asp:ImageButton ID="ImageButton3" runat="server" ImageUrl="/aspnet/img/bot_next.gif"
CommandArgument="Next" CommandName="Page" />
<asp:ImageButton ID="ImageButton4" runat="server" ImageUrl="/aspnet/img/bot_next2.gif"
CommandArgument="Last" CommandName="Page" />
</PagerTemplate>
Редактировать # 01
<asp:TemplateField HeaderText="" ItemStyle-HorizontalAlign="Center">
<ItemTemplate>
<asp:ImageButton ID="btn_Show" runat="server"
CommandName="Details"
CommandArgument='<%#Container.DataItemIndex%>' />
</ItemTemplate>
</asp:TemplateField>