在webservice服务器程序:
[WebMethod]
public int countuserpwd(string exec)
{
this.sqlConnection1.Open();
this.sqlDataAdapter1.SelectCommand.CommandText=exec;
DataSet ds1=new DataSet();
this.sqlDataAdapter1.Fill(ds1,"userpwd");
int a=int.Parse(ds1.Tables["userpwd"].Rows[0][0].ToString());
return a;
}
[WebMethod]
public DataSet selectuserpwd(String exec,int i,int j)
{
//exec表示sql,i表示当前,j表示一页显示多少
DataSet ds=new DataSet();
//this.sqlConnection1.Open();
//this.sqlSelectCommand1=new SqlCommand(exec,this.sqlConnection1);
this.sqlDataAdapter1.SelectCommand.CommandText=exec;
this.sqlDataAdapter1.Fill(ds,"userpwd");
int sum=ds.Tables["userpwd"].Rows.Count;
ds.Clear();
//计算
int onpage=i;//当前页
int pagesize=j;//每页显示数
int pagecount=(sum+pagesize-1)/pagesize;//共有页数
if(onpage==1&&onpage<pagecount)
{
startRecord=0;
endRecord=onpage*pagesize-1;
//显示第一页
}
if(onpage==pagecount&&onpage>1)
{
//显示最后一页
startRecord=(onpage-1)*pagesize;
endRecord=sum-1;
}
if(onpage>1&&onpage<pagecount)
{
//显示中间页
startRecord=(onpage-1)*pagesize;
endRecord=onpage*pagesize-1;
}
maxRecord=endRecord-startRecord+1;
this.sqlDataAdapter1.Fill(ds,startRecord,maxRecord,"userpwd");
return ds;
}
客户端调用:
...
private DataSet ds;
protected System.Web.UI.WebControls.Button first;
protected System.Web.UI.WebControls.Button preview;
protected System.Web.UI.WebControls.Button next;
protected System.Web.UI.WebControls.Button last;
private static int sum;//共记录
private static int onpage=0;//当前页
private static int pagesize=4;//每页显示记录
private static int pagecount;//页总数
private TableWebApplication1.localhost.Service1 mbi;
private static string exec;
....
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
mbi=new TableWebApplication1.localhost.Service1();
mbi.Credentials=System.Net.CredentialCache.DefaultCredentials;
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.last.Click += new System.EventHandler(this.last_Click);
this.next.Click += new System.EventHandler(this.next_Click);
this.preview.Click += new System.EventHandler(this.preview_Click);
this.first.Click += new System.EventHandler(this.first_Click);
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void Button1_Click(object sender, System.EventArgs e)
{
sum=mbi.countuserpwd("select count(*) from userpwd");
onpage=1;
pagecount=(sum+pagesize-1)/pagesize;
exec="select * from userpwd";
ds=mbi.selectuserpwd(exec,onpage,pagesize);
this.DataGrid1.DataSource=ds;
this.DataGrid1.DataBind();
}
private void first_Click(object sender, System.EventArgs e)
{
onpage=1;
//ds.Clear();
if(onpage==1)
{
this.next.Enabled=true;
this.last.Enabled=true;
this.first.Enabled=true;
this.preview.Enabled=false;
}
try
{
ds=mbi.selectuserpwd(exec,onpage,pagesize);
this.DataGrid1.DataSource=ds.Tables["userpwd"];
this.DataGrid1.DataBind();
}
catch
{}
}
private void preview_Click(object sender, System.EventArgs e)
{
onpage=onpage-1;
//ds.Clear();
if(onpage>1)
{
this.first.Enabled=true;
this.next.Enabled=true;
this.preview.Enabled=true;
this.last.Enabled=true;
}
if(onpage==1)
{
this.first.Enabled=true;
this.next.Enabled=true;
this.preview.Enabled=false;
this.last.Enabled=true;
}
try
{
ds=mbi.selectuserpwd(exec,onpage,pagesize);
this.DataGrid1.DataSource=ds.Tables["userpwd"];
this.DataGrid1.DataBind();
}
catch
{}
}
private void next_Click(object sender, System.EventArgs e)
{
onpage=onpage+1;
//ds.Clear();
if(onpage<pagecount)
{
this.first.Enabled=true;
this.next.Enabled=true;
this.preview.Enabled=true;
this.last.Enabled=true;
}
if(onpage==pagecount)
{
this.first.Enabled=true;
this.next.Enabled=false;
this.preview.Enabled=true;
this.last.Enabled=true;
}
try
{
ds=mbi.selectuserpwd(exec,onpage,pagesize);
this.DataGrid1.DataSource=ds.Tables["userpwd"];
this.DataGrid1.DataBind();
}
catch
{
}
}
private void last_Click(object sender, System.EventArgs e)
{
onpage=pagecount;
if(onpage==pagecount)
{
this.first.Enabled=true;
this.next.Enabled=false;
this.preview.Enabled=true;
this.last.Enabled=true;
}
ds=mbi.selectuserpwd(exec,onpage,pagesize);
this.DataGrid1.DataSource=ds.Tables["userpwd"];
this.DataGrid1.DataBind();
}
}
程序未优化,目的是为了减少大数量数据传输问题。
核心利用sqlDataAdapter的取数据集一段进行传输