GridView中使用DataBind()时如何实现翻页

来源:互联网 发布:申请美国博士 知乎 编辑:程序博客网 时间:2024/06/06 01:49

        今天在使用GridView时发现一个问题,GridView控件中封装的PageIndexChanging事件不支持手动配置的DataSet数据源,也就是说当我在PageLoad()中添加如下代码后:

        GridView1.DataSource = dsDi;
        GridView1.DataBind();
        GridView1.AllowPaging = true;
        GridView1.AutoGenerateColumns = true;

        页面会正常显示DataSet的内容(注意),但是当点击下面的页码时会报错:

        "The GridView 'GridView1' fired event PageIndexChanging which wasn't handled"

        这时候,我们应该手动的添加翻页的事件内容,首先将GridView的OnPageIndexChanging事件添加上

        <asp:GridView ID="GridView1" runat="server" AllowPaging="True"
        OnPageIndexChanging="GridView1_PageIndexChanging"
        PageSize="5">

        以下是我在后台实现翻页的代码:

 

 protected void GridView1_PageIndexChanging(object sender,GridViewPageEventArgs e)
    
{
        Response.Write(
"<br>NewpageIndex: " + e.NewPageIndex);
        GridView1.PageIndex 
= e.NewPageIndex;
        GridView1.DataSource 
= GetDataSource();
        GridView1.DataBind();
    }


 
private DataSet GetDataSource()
    
{
       
        System.Data.SqlClient.SqlConnection conn 
= new System.Data.SqlClient.SqlConnection();
        conn.ConnectionString 
= System.Configuration.ConfigurationManager.ConnectionStrings   
        [
"fangConnectionString"].ConnectionString;
        System.Data.SqlClient.SqlDataAdapter adapter 
= new System.Data.SqlClient.SqlDataAdapter();

        adapter.SelectCommand 
= new System.Data.SqlClient.SqlCommand("select * from d_科目_事故", conn);

        conn.Open();
        DataSet dsDi 
= new DataSet();
        adapter.Fill(dsDi);
        conn.Close();

        
return dsDi;
    }

        其实内容很简单,就是在每一次翻页时,将要显示的数据动态在帮定一下就可以了。另外,像排序(sorting)这样封装的事件在手动绑定数据源的时候也会出现相同的错误。目前想到的解决方法也就是自己定义事件的内容了,等用到的时候再把代码贴上来。

原创粉丝点击