webdiyer的分页控件:多条件查询时,传入一个where子句字符串,但是分页正常,但是datagrid上却不显示数据的问题!!
主要是在查询时,如果不设置条件,则默认全部是正常显示的,但是如果设置了条件,则不显示数据了,分页的导航却显示正常
我的存储过程是这样的:请吴旗娃大哥来解啊~~
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




