CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

webdiyer的分页控件:多条件查询时,传入一个where子句字符串,但是分页正常,但是datagrid上却不显示数据的问题!!

楼主postmanlly(蛟龙狂想)2005-08-03 15:33:42 在 .NET技术 / ASP.NET 提问

主要是在查询时,如果不设置条件,则默认全部是正常显示的,但是如果设置了条件,则不显示数据了,分页的导航却显示正常  
  我的存储过程是这样的:请吴旗娃大哥来解啊~~  
  CREATE   procedure   GetQueryCPLBaseInfo  
                            (@pagesize   int,  
  @pageindex   int,  
                          @docount   bit,  
  @whereClause   varchar(500))  
                          as  
                          set   nocount   on  
                          if(@docount=1)  
  if   (@whereClause='')  
                          select   count(BI_ID)   from   view_CPL_BASE    
  else  
  EXEC   ('select   count(BI_ID)   from   view_CPL_BASE   where   '+@whereClause)  
                          else  
                          begin  
                          declare   @indextable   table(id   int   identity(1,1),nid   int)  
                          declare   @PageLowerBound   int  
                          declare   @PageUpperBound   int  
  DECLARE   @SQLString   NVARCHAR(500)  
  DECLARE   @QueryString   NVARCHAR(500)  
   
                          set   @PageLowerBound=(@pageindex-1)*@pagesize  
                          set   @PageUpperBound=@PageLowerBound+@pagesize  
                          set   rowcount   @PageUpperBound  
  if   (@whereClause='')  
                          insert   into   @indextable(nid)   select   BI_ID   from   view_CPL_BASE   order   by   BI_ID   asc  
  else  
  SET   @SQLString   =   @SQLString   +   'insert   into   @indextable(nid)   select   BI_ID   from   view_CPL_BASE   where   @whereClause   order   by   BI_ID   asc'  
  EXEC   sp_executesql   @SQLString  
   
  if   (@whereClause='')  
  select   CB.*   from   view_CPL_BASE   CB,@indextable   t   where   CB.BI_ID=t.nid   and   t.id>@PageLowerBound   and   t.id<=@PageUpperBound   order   by   t.id  
  else  
                          SET   @QueryString   =   @QueryString   +   'select   CB.*   from   view_CPL_BASE   CB,@indextable   t   where   @whereClause   and   CB.BI_ID=t.nid   and   t.id>@PageLowerBound   and   t.id<=@PageUpperBound   order   by   t.id'  
                          EXEC   sp_executesql   @QueryString  
                          end  
                          set   nocount   off  
  GO  
  问题点数:50、回复次数:7Top

1 楼leon168(www.doaspx.com [Asp.Net电子书资料下载])回复于 2005-08-03 15:59:55 得分 0

有没有放在panal里面啊???  
   
  看看你的DATAGRIDID.Visible=true;  
  在DataBind之后加上看看Top

2 楼postmanlly(蛟龙狂想)回复于 2005-08-03 17:23:32 得分 0

其实主要是存储过程的问题,数据不显示也是由于存储过程Top

3 楼gyf19(秋天的云)回复于 2005-08-03 18:08:06 得分 0

把你的代码贴出来!!Top

4 楼postmanlly(蛟龙狂想)回复于 2005-08-03 18:24:25 得分 0

private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
                                                        if(Request.QueryString["whereClause"]   !=   null)  
  {  
  strWhereClause   =   Request.QueryString["whereClause"];  
  }  
                                                        cmd=new   SqlCommand("GetQueryCPLBaseInfo",conn);  
  cmd.CommandType=CommandType.StoredProcedure;  
  cmd.Parameters.Add("@pageindex",1);  
  cmd.Parameters.Add("@pagesize",1);  
  cmd.Parameters.Add("@docount",true);  
  if   (Request.QueryString["village"]   !=   null)  
  {  
  str_village   =   Request.QueryString["village"].ToString();  
  if   (str_village   ==   "全部")  
  {  
  str_village   =   "";  
  }  
  }  
  //cmd.Parameters.Add("@village",str_village);  
  cmd.Parameters.Add("@whereClause",strWhereClause);  
  conn.Open();  
  pager.RecordCount=(int)cmd.ExecuteScalar();  
  conn.Close();  
  BindData();  
  }  
   
  private   void   BindData()  
  {  
  if(Request.QueryString["whereClause"]   !=   null)  
  {  
  strWhereClause   =   Request.QueryString["whereClause"];  
  }  
   
   
  cmd=new   SqlCommand("GetQueryCPLBaseInfo",conn);  
  cmd.CommandType=CommandType.StoredProcedure;  
  cmd.Parameters.Add("@pageindex",pager.CurrentPageIndex);  
  cmd.Parameters.Add("@pagesize",pager.PageSize);  
  cmd.Parameters.Add("@docount",false);  
  cmd.Parameters.Add("@whereClause",strWhereClause);  
  conn.Open();  
  DataGrid1.DataSource=cmd.ExecuteReader();  
  DataGrid1.DataBind();  
  conn.Close();  
  pager.CustomInfoText="当前记录总数:<font   color=\"blue\"><b>"+pager.RecordCount.ToString()+"</b></font>";  
  pager.CustomInfoText+="   总页数:<font   color=\"blue\"><b>"+pager.PageCount.ToString()+"</b></font>";  
  pager.CustomInfoText+="   当前页:<font   color=\"red\"><b>"+pager.CurrentPageIndex.ToString()+"</b></font>";  
  }  
  public   void   ChangePage(object   src,PageChangedEventArgs   e)  
  {  
  pager.CurrentPageIndex=e.NewPageIndex;  
  BindData();  
  }Top

5 楼postmanlly(蛟龙狂想)回复于 2005-08-04 09:10:48 得分 0

UP~Top

6 楼in_sky(猪头不卖 时尚天空)回复于 2005-08-04 16:21:09 得分 50

CREATE   procedure   GetQueryCPLBaseInfo  
                            (@pagesize   int,  
  @pageindex   int,  
                          @docount   bit,  
  @whereClause   varchar(500))  
                          as  
                          set   nocount   on  
                          if(@docount=1)  
  if   (@whereClause='')  
                          select   count(BI_ID)   from   view_CPL_BASE    
  else  
  EXEC   ('select   count(BI_ID)   from   view_CPL_BASE   where   '+@whereClause)  
                          else  
                          begin  
                          declare   @PageLowerBound   int  
                          declare   @PageUpperBound   int  
  DECLARE   @TABLEString   NVARCHAR(500)  
  DECLARE   @SQLString   NVARCHAR(500)  
  DECLARE   @QueryString   NVARCHAR(500)  
   
                          set   @PageLowerBound=(@pageindex-1)*@pagesize  
                          set   @PageUpperBound=@PageLowerBound+@pagesize  
                          set   rowcount   @PageUpperBound  
  if   (@whereClause='')  
  begin  
  declare   @indextable   table(id   int   identity(1,1),nid   int)  
                          insert   into   @indextable(nid)   select   BI_ID   from   view_CPL_BASE   order   by   BI_ID   asc  
  select   CB.*   from   view_CPL_BASE   CB,@indextable   t   where   CB.BI_ID=t.nid   and   t.id>@PageLowerBound   and   t.id<=@PageUpperBound   order   by   t.id  
  select   *   from   @indextable  
  end  
  else  
  begin  
  SET   @SQLString   =   'declare   @indextable   table(id   int   identity(1,1),nid   int)   '  
  SET   @SQLString   =   @SQLString   +   'insert   into   @indextable(nid)   select   BI_ID   from   view_CPL_BASE   where   '   +@whereClause+   '   order   by   BI_ID   asc   '  
  SET   @SQLString   =   @SQLString+   'select   CB.*   from   view_CPL_BASE   CB,@indextable   t   where     CB.BI_ID=t.nid   and   t.id>'+cast(@PageLowerBound   as   nvarchar(50))+'   and   t.id<='+cast(@PageUpperBound   as   nvarchar(50))+'   order   by   t.id   '  
  EXEC   sp_executesql     @SQLString  
  end  
                          end  
                          set   nocount   off  
  GO  
   
   
   
  将@SQLString     @QueryString两个变量,连接后一起执行就OK了,注意要用空格隔开.Top

7 楼postmanlly(蛟龙狂想)回复于 2005-08-04 16:25:25 得分 0

太强了,就是这样,原来要把declare   @indextable   table(id   int   identity(1,1),nid   int)定义到string里,好!马上结帖Top

相关问题

  • 可以对字符串像分页那样进行分页吗
  • 字符串.....哎,字符串
  • 截字符串???
  • 字符串
  • 取字符串s
  • 字符串
  • 字符串
  • 取字符串
  • 字符串啊!
  • 字符串

关键词

  • bi
  • view
  • 分页
  • whereclause
  • pagelowerbound
  • pager
  • indextable
  • cpl
  • sqlstring
  • pageupperbound

得分解答快速导航

  • 帖主:postmanlly
  • in_sky

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo