奇怪的错误。我有一个 gridview,我添加了分页。
<asp:GridView ID="gv" runat="server" AutoGenerateColumns="False" AllowPaging="True" OnPageIndexChanging="gv_PageIndexChanging" OnRowCommand="gv_RowCommand" OnRowDataBound="gv_RowDataBound" PageSize="3" GridLines="None" EmptyDataText="No data available." ShowHeader="false">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="linkButton" runat="server" Text="Add"></asp:LinkButton><br />
它可以很好地加载第一页,但是,如果我尝试转到第 2、3 页,则会出现错误
无法将“System.Web.UI.WebControls.GridView”类型的对象转换为 输入“System.Web.UI.WebControls.LinkButton”。
protected void gv_RowCommand(object sender, GridViewCommandEventArgs e)
{
GridViewRow Row = (GridViewRow)(((LinkButton)e.CommandSource).NamingContainer); //error
if (e.CommandName == "Add")
{
....
}
}
protected void gv_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gv.PageIndex = e.NewPageIndex;
gv.DataBind();
}
我以为这是因为
GridViewRow
位于 e.CommandName
之外,所以我将其移到了里面,但是,当我点击分页时,这只是显示“无可用数据”消息。
我现在已经解决了,问题出在PageIndexChanging上。由于我有一个用于绑定网格的公共类,因此我将其称为而不是 gv.DataBind。
protected void gv_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
gv.PageIndex = e.NewPageIndex;
BindData();
}