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