天天看點

手動綁定SQLDataSource到GridView後分頁的問題(轉)

由于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)

        GridView1.DataBind(); 

    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)

        GridView1.PageIndex=e.NewPageIndex;

        DBind();

}

需要注意的是,我增加了一個方法,和綁定事件按鈕是一樣的。需要在PageIndexChanging事件中重新綁定資料源才可以。但是這個辦法有一個問題。就是每次切換頁數的時候,都會從資料庫中查詢全部的資料,是以效率上會有問題。看大家有什麼解決辦法沒有?