【问题标题】:how to get hidden value with pagination in gridview如何在gridview中通过分页获取隐藏值
【发布时间】:2015-10-13 14:45:11
【问题描述】:

在第一页时,可以获取隐藏值。所以,没有问题,但是页面索引更改后,用户无法获取隐藏字段值。当试图获取隐藏值时,它会显示关于“System.ArgumentOutOfRangeException”的错误

(string sValue = ((HiddenField)GridView1.Rows[rowIndex].FindControl("HiddenField1")).Value;

asp端:

        <Columns>
           <asp:BoundField DataField="sayfa_adeti" HeaderText="SAYFA ADETİ"  ItemStyle-HorizontalAlign="Center" ItemStyle-Width="60px"></asp:BoundField>
              </asp:BoundField>

   <asp:HiddenField ID="HiddenField1" runat="server"Value='<%#Eval("ID")%>'</asp:HiddenField>   

  protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    getOncekiFotokopiTalepler();//fillGrid
    GridView1.PageIndex = e.NewPageIndex;
    GridView1.DataBind();
}

c#side

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
    //int rowIndex = Convert.ToInt32(e.CommandArgument);
    int rowIndex = Convert.ToInt32(e.CommandArgument.ToString().Trim());


    if (e.CommandName == "Goruntule")
    {
        string sValue = ((HiddenField)GridView1.Rows[rowIndex].FindControl("HiddenField1")).Value;
        GridViewRow gvRow = GridView1.Rows[rowIndex];

        Session["SELECTED_FOTOKOPI_TALEP_ID"] = sValue;
        Response.Redirect("~/fotokopiTalebimiGor.aspx");
    }

}

【问题讨论】:

  • 那么,如果您选择第 2 页的第 3 行,那么 rowIndex 的值是多少?我的猜测是,您正在获取数据源行索引并尝试将其应用于只有 1 页数据(即 10 个项目)的 gridview 行索引,并且您正在索引项目 13 - 例如。
  • 代码失败时“rowIndex”的值是多少?更多代码会很有用,因为我们看不到您如何触发 RowCommand。例如,如果是通过链接按钮,您可以使用 LinkBut​​ton 的 CommandArgument 属性并将 THAT 设置为“ID”,而不是使用 HiddenField。
  • 例如在第 3 页,我的 rowIndex 值为 13,当我点击链接按钮时,rowcommand 功能也起作用。

标签: c# asp.net gridview get pagination


【解决方案1】:

试试这个:

int rowIndex = Convert.ToInt32(e.CommandArgument) % GridView1.PageSize;

【讨论】:

    【解决方案2】:

    您可以尝试使用 CommandSource。

    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        var control = e.CommandSource as Control;
        var gridViewRow = control.NamingContainer as GridViewRow;
        int rowIndex = gridViewRow.RowIndex;
    
        ....
    }
    

    【讨论】:

      猜你喜欢
      • 2011-05-06
      • 1970-01-01
      • 1970-01-01
      • 2012-06-02
      • 1970-01-01
      • 1970-01-01
      • 2013-09-12
      • 2013-02-05
      • 2011-08-16
      相关资源
      最近更新 更多