DataGrid分頁使用小結

來源:互聯網
上載者:User
datagrid|分頁 預設分頁模式:
選中“允許分頁”;頁大小;頁導航設定,可以是上下方式,也可以用頁碼方式
格式裡可以設定“頁導航”按鈕的對起方式;

private void datashow()//綁定資料
{
string sql="server=127.0.0.1;database=ltp;user id=sa;password=";
SqlConnection mycon=new SqlConnection(sql);

string selsql="select * from data";
SqlDataAdapter da=new SqlDataAdapter(selsql,mycon);

DataSet ds=new DataSet();
da.Fill(ds,"data");

this.DataGrid1.DataSource=ds.Tables["data"];
this.DataGrid1.DataBind();

}

響應事件 PageIndexChanged()

this.DataGrid1.CurrentPageIndex=e.NewPageIndex;
datashow();





自訂導航控制項的預設分頁模式
當前頁:this.Label1.Text=(this.DataGrid1.CurrentPageIndex+1).ToString();
因為CurrentPageIndex從0開始的,所以要+1

總頁數:this.Label2.Text=this.DataGrid1.PageCount.ToString();

//第一頁
this.DataGrid1.CurrentPageIndex=0;
//上一頁
if(this.DataGrid1.CurrentPageIndex>0)
{
this.DataGrid1.CurrentPageIndex-=1;
this.datashow();
}
//下一頁
if(this.DataGrid1.CurrentPageIndex<(this.DataGrid1.PageCount-1))
{
this.DataGrid1.CurrentPageIndex+=1;
this.datashow();
}
//最後一頁
this.DataGrid1.CurrentPageIndex=this.DataGrid1.PageCount-1


最後再 datashow();



自訂資料分頁--非常重要!(提高效能效率)
每次this.datashow();是提取全部資料,反而降低了效率。

正確的方法:
1,選中“允許分頁”;“允許自訂分頁”;頁大小。
2,添加導覽按鈕,設定CommandName屬性,previous,next
3,代碼:

//記錄每一頁的開始索引
int startindex;

private void Page_Load(object sender, System.EventArgs e)
{
//自訂按鈕事件
this.btnprevious.Click+=new System.EventHandler(this.NavigateToPage);
this.btnnext.Click+=new System.EventHandler(this.NavigateToPage);

//or OnCommand="NavigateToPage"

if(!IsPostBack)
{
startindex=0;

//得到資料來源的記錄數,並指派給DataGrid1

string constr="server=127.0.0.1;database=ltp;user id=sa;password=";
SqlConnection mycon=new SqlConnection(constr);
mycon.Open();

string sql="select 總數=count(*) from data";
SqlCommand com=new SqlCommand(sql,mycon);

SqlDataReader dr=com.ExecuteReader(CommandBehavior.SingleRow);
if(dr.Read())
this.DataGrid1.VirtualItemCount=(int)dr["總數"];
dr.Close();
mycon.Close();

//
this.bindGrid(startindex,"previous");



}
}


//自訂按鈕事件
private void NavigateToPage(object sender,System.EventArgs e)
{
string pageinfo=((Button)sender).CommandName;
switch(pageinfo)
{
case "previous":
if(this.DataGrid1.CurrentPageIndex>0)
{
this.DataGrid1.CurrentPageIndex-=1;

}
break;

case "next":
if(this.DataGrid1.CurrentPageIndex<(this.DataGrid1.PageCount-1))
{
this.DataGrid1.CurrentPageIndex+=1;

}
break;

}

//得到開始的索引
startindex=this.DataGrid1.CurrentPageIndex*this.DataGrid1.PageSize;
//重新綁定
this.bindGrid(startindex,pageinfo);


}

//從資料來源提取所需的資料記錄--方法2(有int序號的表)
private void bindGrid2(int startindex,string pageinfo)
{
string constr="server=127.0.0.1;database=ltp;user id=sa;password=";
SqlConnection mycon=new SqlConnection(constr);
mycon.Open();

string sql="select top 5 * from data where 序號>="+startindex+" order by 序號";
SqlDataAdapter da=new SqlDataAdapter(sql,mycon);

DataSet ds=new DataSet();
da.Fill(ds,"data");
this.DataGrid1.DataSource=ds.Tables["data"];
this.DataGrid1.DataBind();

mycon.Close();


}


//從資料來源提取所需的資料記錄--方法1(按某字串列排序的)
private void bindGrid(int startindex,string pageinfo)
{
string constr="server=127.0.0.1;database=ltp;user id=sa;password=";
SqlConnection mycon=new SqlConnection(constr);
mycon.Open();

SqlCommand com=new SqlCommand();

switch(pageinfo)
{
case "previous":



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。