【问题标题】:The GridView 'GridView1' fired event PageIndexChanging which wasn't handledGridView 'GridView1' 触发了未处理的事件 PageIndexChanging
【发布时间】:2011-10-30 14:52:08
【问题描述】:

我已经创建了:

  • 一个母版页和一个称为详细信息的内容页。
  • 在按钮单击事件中,在网格视图中显示数据。
  • 在网格视图中,列是自动生成的。
  • 我想在网格视图中显示 11 列,但它不仅仅是页面 大小。

该怎么办?

我已经为数据库连接代码创建了 sql 帮助文件并调用了该方法,而不是使用 sqldatasource 进行连接。

当我尝试进行分页时,得到错误

GridView 'GridView1' 触发的事件 PageIndexChanging 不是 处理。

【问题讨论】:

    标签: asp.net page-index-changed


    【解决方案1】:

    您需要在处理 PageIndexChanging 事件的代码中声明一个方法。

    类似的东西:

    protected void GridView1_PageIndexChanging (object sender, GridViewPageEventArgs  e)
    {
        GridView1.PageIndex = e.NewPageIndex;
        bindGridView(); //bindgridview will get the data source and bind it again
    }
    
    private void bindGridView()
    {
         GridView1.DataSource=getData();
         GridView1.DataBind();
    }
    

    提供示例代码:

        protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridView1.PageIndex = e.NewPageIndex;
            bindGridView(); //bindgridview will get the data source and bind it again
        }
    
        protected void Page_Load(object sender , EventArgs e)
        {
            if(!IsPostBack)
             bindGridView();
    
        }
        //this is some sample data 
        private void bindGridView()
        {
            DataTable t = new DataTable();
            t.Columns.Add("Col1");
            t.Columns.Add("Col2");
            DataRow r = null;
            for (int i = 0; i < 25; i++)
            {
                r = t.NewRow();
                r.ItemArray = new object[] { "Val" + i, " Another " + i };
                t.Rows.Add(r);
            }
            GridView1.DataSource = t;
            GridView1.DataBind();
        }
    

    这是标记:

    <asp:GridView OnPageIndexChanging="GridView1_PageIndexChanging" AllowPaging="true" PageSize="10" ID="GridView1" runat="server" AutoGenerateColumns="true">
    

    产生这个:

    【讨论】:

    • 是的,我这样做了,但没有效果。 protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) { //string s1 = "select * from master"; //DataSet ds = SqlHelper.GetDataSet(CommandType.Text, s1, "master"); //DataTable table = ds.Tables["master"]; //if (table.Rows.Count > 0) //{ // GridView1.DataSource = ds; // GridView1.DataBind(); //} GridView1.PageIndex = e.NewPageIndex; //绑定网格 GridView1.DataBind(); } 和 aspx 文件
    • @JuiTest 将此代码发布到您的答案中,而不是作为评论。在那里看到它更有帮助。
    • 我无法回答自己的问题。
    • @JuiTest 抱歉,我的意思是将此代码添加到您自己的问题中。
    【解决方案2】:

    对于分页,您可以为此使用 OnPageIndexChanging....

    举例

    您必须在 GridView 中使用 OnPageIndexChanging="gvdetails_PageIndexChanging"...

    你必须将下面的代码写入事件后面的代码中

    protected void gvdetails_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        gvdetails.PageIndex = e.NewPageIndex;
        BindData();
    }
    

    有关更多详细信息,您可以在此处查看以下链接,我在我的文章中使用页面索引更改...

    Here I use PageIndexChange

    希望对您有所帮助....与他人分享...谢谢!

    【讨论】:

      【解决方案3】:

      这是最终的答案:

      Imports System.Collections.Generic ' library
      
      Protected Sub grdEmployees_PageIndexChanging1(ByVal sender As Object, ByVal e As
      System.Web.UI.WebControls.GridViewPageEventArgs) Handles grdEmployees.PageIndexChanging
          grdEmployees.PageIndex = e.NewPageIndex
          LoadEmployeeList() 'FUNCTION FOR DATASET
          grdEmployees.DataBind()
      
      End Sub
      

      【讨论】:

        【解决方案4】:

        您只需将其添加到您的代码中:

        protected void GridViewTrsEmail_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            GridViewTrsEmail.PageIndex = e.NewPageIndex;
            GridViewTrsEmail.DataBind();
        
        
        }
        

        【讨论】:

          【解决方案5】:

          要解决此问题,我必须仔细查看我的数据源和数据键。我有一组从 SQL Server 返回的记录,我正在做的是将它们绑定到 POCO。这个类有几个整数类型的公共属性。这些整数是我在网格上的数据键。我用字符串替换了它们的类型以绕过转换问题。

          【讨论】:

          • 这可能会做出更好的评论。它不会对接受的答案增加太多。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-03-19
          • 1970-01-01
          • 2012-10-21
          相关资源
          最近更新 更多