У меня есть 3 элемента управления GridView на 3 разных страницах. Они работали нормально раньше. Внезапно я получил это сообщение об ошибке:Gridview: Индекс был за пределами допустимого диапазона
Недопустимый аргумент обратной связи или обратного вызова. Проверка события включена с помощью
<pages enableeventvalidation="true" />
Так что я пытался поставить <@pages enableeventvalidation="false" />
на этой странице. Это все еще не сработало. Я удалил эту команду со страницы. Затем появляется другое сообщение: «Указатель был вне диапазона», когда нажимаете кнопки в gridview для всех элементов управления girdview.
int id = Convert.ToInt32(myGridView.DataKeys[e.RowIndex].Value)
Похоже GridView не смог найти DataKey (значение e.rowIndex
«s ОК), Datakeynames был установлен.
protected void gvItemCategory_RowDeleting(object sender, GridViewDeleteEventArgs e) {
int categoryId = Convert.ToInt32(gvItemCategory.DataKeys[e.RowIndex].Value);
CollectionCategory category = new CollectionCategory();
category.CategoryId = categoryId;
category.Delete();
ItemCateogryShowData();
}
HTML:
<asp:GridView ID="gvItemCategory" runat="server" AutoGenerateColumns="False"
OnRowCancelingEdit="gvItemCategory_RowCancelingEdit"
OnRowDeleting="gvItemCategory_RowDeleting" OnRowEditing="gvItemCategory_RowEditing"
DataKeyNames="CategoryId" OnRowUpdating="gvItemCategory_RowUpdating">
<Columns>
<asp:TemplateField HeaderText="CateogoryName">
<ItemTemplate>
<asp:Label ID="lblItemCategoryName" runat="server" Text='<%#Eval("CategoryName") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="tbItemCateogryName" runat="server" Text='<%#Eval("CategoryName") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:CommandField ShowEditButton="True" ButtonType="Button" />
<asp:CommandField ShowDeleteButton="True" />
</Columns>
</asp:GridView>
Вы управляете чем-либо с помощью javascript (например, добавление элементов в раскрывающийся список)? Вы привязываете сетку к обратной передаче? Тогда индекс переходит в -1, который был бы вне допустимого диапазона. –
Что происходит, когда вы пытаетесь включить eventValidation = "false" .. – coder
после того, как putaveventValidation = "false" на странице, появилось сообщение об ошибке «Неверный ответ или обратный вызов», я мог видеть содержимое страницы. Но кнопки gridview имеют проблему – yilee