向杨涛 (用户名:webdiyer)提问,关于UrlPager1.0版存储过程问题

qq22345111 2010-07-20 10:10:45
杨老师,这贴是关于UrlPager1.0实现存储过程分页问题!
问题描述:我在同一个页面,配置好Global.asax与webConfig以后,调用您提供的存储过程可以让UrlPager1.0在页面显示并分页,我仿照你提供的存储过程,自己编写了一个,能够实现数据绑定,但是页面空间无法显示!我将存储过程提供如下
您的存储过程:P_GetOrderNumber
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create PROCEDURE [dbo].[P_GetOrderNumber]
AS
select count(orderid) from orders;
RETURN

我仿照写的:P_GetAllergyType
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create PROCEDURE [dbo].[P_GetAllergyType]
AS
select count(gmxxlx_id) from b_gmxxlx;
return

您的存储过程:P_GetPagedOrders2000
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create procedure [dbo].[P_GetPagedOrders2000]
(@startIndex int,
@endIndex int
)
as
set nocount on
declare @indextable table(id int identity(1,1),nid int)
set rowcount @endIndex
insert into @indextable(nid) select orderid from orders order by orderid desc
select O.orderid,O.orderdate,O.customerid,C.CompanyName,E.FirstName+' '+E.LastName as EmployeeName

from orders O
left outer join Customers C
on O.CustomerID=C.CustomerID
left outer join Employees E
on O.EmployeeID=E.EmployeeID
inner join @indextable t on
O.orderid=t.nid
where t.id between @startIndex and @endIndex order by t.id
set nocount off
RETURN

我的存储过程:P_GetPagedAllergyType
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

Create PROCEDURE [dbo].[P_GetPagedAllergyType]
(@startIndex int,
@endIndex int)
AS
SET NOCOUNT ON
declare @indextable table(id int identity(1,1),nid int)
set rowcount @endIndex
insert into @indextable(nid) select gmxxlx_id from b_gmxxlx order by gmxxlx_id desc
select O.gmxxlx_id,O.gmxxlx_bm,O.gmxxlx_mc,O.bz from b_gmxxlx O
inner join @indextable t on O.gmxxlx_id=t.nid
where t.id between @startIndex and @endIndex order by t.id
set nocount off
RETURN
...全文
64 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
webdiyer 2010-07-20
  • 打赏
  • 举报
回复
用我的存储过程生成工具生成分页存储过程吧,另外直接在sql server查询分析器或VS中运行存储过程,输入参数看返回的结果是否正确,靠肉眼是没法从这些代码看出问题的。
qq22345111 2010-07-20
  • 打赏
  • 举报
回复
//
UrlPagerRepeater.DataSource = UrlPager.BLL.SqlHelper.ExecuteReader(CommandType.StoredProcedure, "P_GetPagedAllergyType", new SqlParameter("@startIndex", pager1.StartRecordIndex), new SqlParameter("@endIndex", pager1.EndRecordIndex));

这句注释代码中的UrlPager在项目中为中文的"分页控件"四个汉字,这里只是用做说明!
前台的代码与你提供的源代码相同
<div style="float: left">
共<%:pager1.PageCount %>页
<%:pager1.TotalItemCount %>条记录,当前为第<%:pager1.CurrentPageIndex %>页, 起始索引<%:pager1.StartRecordIndex %>,结束索引<%:pager1.EndRecordIndex %></div>
<cc1:UrlPager ID="pager1" runat="server" Style="float: right" PageIndexParameterName="id"
OnPageChanged="pager1_PageChanged" RouteName="UrlPagingRepeater2"
RouteValues="<%$RouteValues:controller=Employees,action=Show%>">
</cc1:UrlPager>
</div>

Global.cs中的代码为:
public class Global : System.Web.HttpApplication
{

protected void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapPageRoute("UrlPagingRepeater",
"{controller}/{action}/page_{id}",
"~/Repeater.aspx");
routes.MapPageRoute("UrlPagingRepeater2",
"{controller}/{action}/page_{id}",
"~/WebForm4.aspx");
routes.MapPageRoute("UrlPagingBasic",
"分页控件学习/page{pageIndex}",
"~/Default.aspx");
}
}
qq22345111 2010-07-20
  • 打赏
  • 举报
回复
实现的后台代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{

pager1.TotalItemCount = Convert.ToInt32(分页控件.BLL.SqlHelper.ExecuteScalar(CommandType.StoredProcedure, "P_GetOrderNumber"));
// pager1.TotalItemCount = Convert.ToInt32(分页控件.BLL.SqlHelper.ExecuteScalar(CommandType.StoredProcedure,"P_GetAllergyType"));
}
}
protected void pager1_PageChanged(object sender, EventArgs e)
{
if (pager1.TotalItemCount.ToString() != null)
{
Response.Write(pager1.StartRecordIndex);
Response.Write(pager1.EndRecordIndex);
//单表分页用例
UrlPagerRepeater.DataSource = 分页控件.BLL.SqlHelper.ExecuteReader(CommandType.StoredProcedure, "P_GetPagedOrders2000", new SqlParameter("@startIndex", pager1.StartRecordIndex), new SqlParameter("@endIndex", pager1.EndRecordIndex));
//多表分页用例
// UrlPagerRepeater.DataSource = UrlPager.BLL.SqlHelper.ExecuteReader(CommandType.StoredProcedure, "P_GetPagedAllergyType", new SqlParameter("@startIndex", pager1.StartRecordIndex), new SqlParameter("@endIndex", pager1.EndRecordIndex));
UrlPagerRepeater.DataBind();
}
}

都是调用的同一个方法,就不贴出来了,我调试了2天,实现是没有找到有任何问题!因为调用您的存储过程在同一个页面进行调试,能够实现分页,那么可以肯定Global.asax与webConfig配置正确

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧