GridView使用DataBind方法绑定数据时的分页问题

 GridView支持DataSource和DataBind两种数据绑定方法,这几天练习用DataBind时发现了些问题,总结一下,以便抛砖引玉。

    这里要说明一下:我使用的工具是"WD Express"(没办法,硬盘小,只能装这个了。),所以默认参数可能和大家的不一样。数据库是SQL2005,当然也是EE的,环境是.Net2.0。

    首先在Design模式下生成一个Button和一个GridView,Button中的事件为:

protected void Button1_Click(object sender, EventArgs e)
    {
        Bind();
    }

其中Bind()内容如下:
public void Bind()
    {
        string strConn, strSQL;
        strConn = "Data Source=.//SQLEXPRESS;Initial Catalog=Northwind;Trusted_Connection=Yes;";
        strSQL = "SELECT OrderID,CustomerID,EmployeeID,OrderDate FROM Orders WHERE OrderID<10300";

        SqlDataAdapter da = new SqlDataAdapter(strSQL, strConn);
        DataSet ds = new DataSet();
        da.Fill(ds, "Orders");
        GridView1.DataSource = ds;
        GridView1.DataBind();
    }


之前要导入一个namespace:
using System.Data.SqlClient;

现在运行这个WEB,在页面上点击按钮Button,数据全部显示了出来,一切正常。现在将GridView的属性设置为允许分页,即:

AllowPaging=True

再次运行,GridView有了分页的效果,但当切换页面时,出现了如下错误:

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

注意:此时GridView的EnableSortingAndPagingCallback属性为False。

解决方法:

方法一:
    1:将GridView的EnableSortingAndPagingCallback属性改成True;
    2:在Page_Load中重新绑定数据,即:

protected void Page_Load(object sender, EventArgs e)
    {
        if (IsCallback)
        {
            Bind();
        }
    }

方法二:
    1:保持GridView的EnableSortingAndPagingCallback属性不变,即:False;
    2:添加PageIndexChanging事件的内容,即:

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView1.PageIndex = e.NewPageIndex;//更改当前页
        Bind();
    }

两种方法,因EnableSortingAndPagingCallback的属性设置不同而不同,大家可根据实际需要自行选择。


附:

    刚刚接触ASP.Net和OOP,代码中肯定有很多不妥的地方,希望您与我联系,因为您的批评指正对我来说是莫大的帮助!

    本程序代码测试环境:
    WinXP (Professional SP2)
    Microsoft Visual Studio 2005 (Installed Edition: WD Express)
    Version 8.0.50727.762  (SP.050727-7600)
    Microsoft .NET Framework
    Version 2.0.50727

    Blog:
    http://timw.yeah.net
    http://timw.126.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值