现在的位置: 首页 > 综合 > 正文

c#下asp.net调用webservice实现分页

2013年10月26日 ⁄ 综合 ⁄ 共 4689字 ⁄ 字号 评论关闭

在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的取数据集一段进行传输

抱歉!评论已关闭.