У меня есть очень простой GridView на одном из моих страниц со следующей разметкой на моей странице .aspx:GridView Paging Выпуск
<asp:GridView ID="gvNews" runat="server" AutoGenerateColumns="false" AllowPaging="true"
AllowSorting="true" DataKeyNames="NewsID,VersionStamp" OnPageIndexChanging="gvNews_PageIndexChanging"
OnRowCreated="gvNews_RowCreated">
<Columns>
<asp:BoundField HeaderText="News Title" DataField="NewsTitle"
SortExpression="NewsTitle" ReadOnly="true" />
<asp:BoundField HeaderText="News Content" DataField="NewsContent"
SortExpression="NewsContent" ReadOnly="true" />
<asp:BoundField HeaderText="Posted Date" DataField="InsertedDate"
SortExpression="InsertedDate" ReadOnly="True" />
<asp:BoundField HeaderText="InsertedBy" DataField="InsertedBy" />
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lbEdit" runat="server" Text="Edit" CommandName="Select" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
Ниже приведен код на моей странице .cs:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
LoadGrid();
}
}
private void LoadGrid()
{
gvNews.DataSource = GetNews();
gvNews.DataBind();
}
protected void gvNews_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
}
protected void gvNews_RowCreated(object sender, GridViewRowEventArgs e)
{
e.Row.Cells[3].Visible = false;
}
В событии RowCreated я пытаюсь скрыть столбец InsertedBy в gridview. Этот код отлично работает, когда параметр AllowPaging установлен на flase. Но когда для параметра AllowPage установлено значение true, я получаю следующую ошибку в обработчике событий RowCreated:
Указанный аргумент был вне допустимых значений. Наименование параметра: индекс
В чем могут быть причины этого поведения?
Спасибо, что сработало отлично. Нам также необходимо проверить строку заголовка так, чтобы и заголовок, и datarows были невидимыми: if (e.Row.RowType == DataControlRowType.DataRow || e.Row.RowType == DataControlRowType.Header) { e.Row.Cells [3] .Visible = false; } – Kumar