由于GridView的数据源是后台CS文件中代码绑定的。所以程序运行时,点击分页数后没有反应。解决办法如下:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;public partial class _Default : System.Web.UI.Page
{
SqlDataSource source = new SqlDataSource(); protected void Page_Load(object sender, EventArgs e)
{ }
private void DBind()
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = ConfigurationManager.ConnectionStrings["TransportConnectionString"].ConnectionString;
source.ConnectionString = ConfigurationManager.ConnectionStrings["TransportConnectionString"].ConnectionString;
string sql = "SELECT * from Customer where id<>'' "; if (this.客户名称.Text != "")
{
sql = sql + " and 客户编码 LIKE '%" + this.客户名称.Text + "%' ";
}
source.SelectCommand = sql;
GridView1.DataSourceID = "";
GridView1.DataSource = "";
GridView1.DataSource = source;
GridView1.DataBind();
}


protected void SearchButton_Click(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = ConfigurationManager.ConnectionStrings["TransportConnectionString"].ConnectionString;
source.ConnectionString = ConfigurationManager.ConnectionStrings["TransportConnectionString"].ConnectionString;
string sql = "SELECT * from Customer where id<>'' "; if (this.客户名称.Text != "")
{
sql = sql + " and 客户编码 LIKE '%" + this.客户名称.Text + "%' ";
}
source.SelectCommand = sql;
GridView1.DataSourceID = "";
GridView1.DataSource = "";
GridView1.DataSource = source;
GridView1.DataBind();
} protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex=e.NewPageIndex;
DBind();
}
}

 

需要注意的是,我增加了一个方法,和绑定事件按钮是一样的。需要在PageIndexChanging事件中重新绑定数据源才可以。但是这个办法有一个问题。就是每次切换页数的时候,都会从数据库中查询全部的数据,所以效率上会有问题。看大家有什么解决办法没有?

作者:沐雪

文章均系作者原创或翻译,如有错误不妥之处,欢迎各位批评指正。本文版权归作者所有,如需转载恳请注明。

​​​ 为之网-热爱软件编程 http://www.weizhi.cc/​