下面是分页控件的关键代码。本代码的缺点是查询语句受到了一定的限制。
private DataTable Binddatatable(int PageNum)
{
sqlstring = "select CORPNUM,NickName,CORPNAME,OwnerName,ADDRESS,PhoneNum,USERNAME,MODIFYTIME,CORPCOUNT,CARCOUNT,DRIVERCOUNT from tbCorporationInfo order by MODIFYTIME ";
this.labelpagenum.Text=PageNum.ToString();
int page_num = Convert.ToInt32(this.labelpagenum.Text);
Page_counttotal = SQLHelp.getpagecount(sqlstring);
DataTable datatable = SQLHelp.getdatatable(sqlstring, page_num, Pagesize, Page_counttotal);
int pagecount = Getpagecount(Page_counttotal);
this.labelpagecount.Text = pagecount.ToString();
return datatable;
}
private int Getpagecount(int page_count)
{
int num=0;
int totalnum = page_count;
if (totalnum % Pagesize == 0)
{
num = totalnum / Pagesize;
}
else
{
num = totalnum / Pagesize + 1;
}
return num;
}
protected void btnnext_Click(object sender, EventArgs e)
{
txtboxturn.Text = "";
int num = Convert.ToInt32(this.labelpagenum.Text) + 1;
if (num <= Convert.ToInt32(this.labelpagecount.Text))
{
DataTable dt = Binddatatable(num);
if (dt != null && dt.Rows.Count > 0)
{
this.GridView1.DataSource = dt;
this.GridView1.DataBind();
}
}
}
protected void btnturn_Click(object sender, EventArgs e)
{
int num = Convert.ToInt32(this.txtboxturn.Text);
if (num <= Convert.ToInt32(this.labelpagecount.Text))
{
DataTable dt = Binddatatable(num);
if (dt != null && dt.Rows.Count > 0)
{
this.GridView1.DataSource = dt;
this.GridView1.DataBind();
}
}
}
protected void btnpre_Click(object sender, EventArgs e)
{
txtboxturn.Text = "";
int num = Convert.ToInt32(this.labelpagenum.Text) - 1;
if (num >= 1)
{
DataTable dt = Binddatatable(num);
if (dt != null && dt.Rows.Count > 0)
{
this.GridView1.DataSource = dt;
this.GridView1.DataBind();
}
}
}
protected void btnfirst_Click(object sender, EventArgs e)
{
txtboxturn.Text = "";
int num = 1;
DataTable dt = Binddatatable(num);
if (dt != null && dt.Rows.Count > 0)
{
this.GridView1.DataSource = dt;
this.GridView1.DataBind();
}
}
protected void btnlast_Click(object sender, EventArgs e)
{
txtboxturn.Text = "";
int num = Convert.ToInt32(this.labelpagecount.Text);
DataTable dt = Binddatatable(num);
if (dt != null && dt.Rows.Count > 0)
{
this.GridView1.DataSource = dt;
this.GridView1.DataBind();
}
}
public static DataTable getdatatable(string str,int pagenum,int pagesize,int page_totalcount)
{
string page_numfrom = "";
if (pagenum > (page_totalcount / pagesize))
{
int i = page_totalcount % pagesize;
page_numfrom = i.ToString();
}
else
{
page_numfrom = pagesize.ToString();
}
int Page_numto = pagenum * pagesize;
string page_numto=Page_numto.ToString();
string str_select = str.Replace("select", "");
string strreplacefrom=str.ToLower().Replace("from","/");
string[] str_out = strreplacefrom.Split('/');
string strreplaceorder = str.ToLower().Replace("order by","/");
string[] str_order = strreplaceorder.Split('/');
string str_order_true = str_order[1];
string str_outtrue = str_out[0];
str_outtrue = str_outtrue.Replace("select", "");
string str_select_out = str_select.Replace("from", "/");
string[] str_select_array = str_select_out.Split('/');
string str_select_first = str_select_array[0];
string str_last = "select top "
+ page_numfrom + str_select_first
+ " from (" + "select top " + page_numto
+ str_select + ")" + " AS derivedtbl_1 order by"
+ str_order_true+" desc";
DataSet ds = Getdatset_string(str_last, connstring);
DataTable datatable = ds.Tables[0];
return datatable;
}