无法将“System.Web.UI.WebControls.GridView”类型的对象转换为“System.Web.UI.WebControls.LinkButton”类型

问题描述 投票:0回答:1

奇怪的错误。我有一个 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
之外,所以我将其移到了里面,但是,当我点击分页时,这只是显示“无可用数据”消息。

c# asp.net gridview pagination
1个回答
1
投票

我现在已经解决了,问题出在PageIndexChanging上。由于我有一个用于绑定网格的公共类,因此我将其称为而不是 gv.DataBind。

protected void gv_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gv.PageIndex = e.NewPageIndex;
            BindData();
        }
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.