我想要用aspnetpager实现类似于gridview的分页功能,只不过对象是repeater
我的前台
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<table width="100%">
<tr>
<td colspan="2" class="tittle">
<%#Eval("title")%>
</td>
</tr>
<tr>
<td class="picture">
<img alt="" src='<%#Eval("smallpicurl") %>'/>
</td>
<td align="left" valign="top" class="content">
<a href="ifr_bztrendsdetail.aspx"><%#Eval("maincontent") %></a>
<br />
<span class="more"><a href="ifr_bztrendsdetail.aspx">more</a></span>
</td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
<%--以下是AspNetPager部分--%>
<webdiyer:AspNetPager ID="AspNetPager1" runat="server" FirstPageText="首页" LastPageText="尾页"
NextPageText="下一页" PrevPageText="上一页" AlwaysShow="true"
TextBeforePageIndexBox="跳转到第" TextAfterPageIndexBox="页"
ShowNavigationToolTip="true" NumericButtonCount="10" SubmitButtonText="转到"
onpagechanged="AspNetPager1_PageChanged"
onpagechanging="AspNetPager1_PageChanging" PageSize="5">
</webdiyer:AspNetPager>后台
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;public partial class Iframe_ifr_bztrends : System.Web.UI.Page
{
public int pageindex;
public int pagesize;
SqlHelper sqlhelp = new SqlHelper();
DataTable dt = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
pageindex = 1;
pagesize = 5;
bind();
}
}
public void bind()
{
DataSet ds=showsendnote(pagesize,pageindex); if (ds != null)//&&ds.Tables.Count==12??
{
dt = ds.Tables[0];
int hang = dt.Rows.Count;
AspNetPager1.PageSize = hang;
AspNetPager1.CurrentPageIndex = pageindex;
AspNetPager1.DataBind();
this.Repeater1.DataSource = dt;
this.Repeater1.DataBind(); }
} public DataSet showsendnote(int pagesize,int pageindex)
{
string connectionstring = ConfigurationManager.AppSettings["connectionsString"].ToString();
SqlConnection conn = new SqlConnection(connectionstring); SqlCommand cmd = new SqlCommand("sqlstr", conn);
cmd.CommandType = CommandType.StoredProcedure;//指定为存储过程
cmd.Parameters.Add("@pagesize", SqlDbType.VarChar).Value =pagesize;
cmd.Parameters.Add("@pageindex", SqlDbType.VarChar).Value = pageindex;
cmd.Parameters.Add("@docount", SqlDbType.VarChar).Value = 0;
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
conn.Close();
return ds;
}
protected void AspNetPager1_PageChanged(object sender, EventArgs e)
{
}
protected void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e)
{
//获取新的页索引
pageindex = e.NewPageIndex;
bind();
}
}我的存储过程create procedure sqlstr
(@pagesize int,
@pageindex int,
@docount bit)
asif(@docount=1)
select count(*) from bztrends where kind='bznews'
else
begin
with temptbl as (
SELECT ROW_NUMBER() OVER (ORDER BY editime desc)AS Row, O.smallpicurl ,O. title,O. maincontent from bztrends O where kind='bznews')
SELECT * FROM temptbl where Row between (@pageindex-1)*@pagesize+1 and (@pageindex-1)*@pagesize+@pagesize
end
这个存储过程是用http://www.webdiyer.com/Controls/AspNetPager/SpGenerator生成的。
我不会存储过程,详细的意思也不懂,只懂个大概的
现在的问题就是
一:能不能给我解释一下这个存储过程的意思?还有这不应该是有俩个datatable的么?因为我看到例子里面有dataset.tables[0]和dataset.table[1],一个用于aspnetpager一个用于repeater?
二:当我把docount设为1时, (cmd.Parameters.Add("@docount", SqlDbType.VarChar).Value = 0;)只有一个datatable,只有一个row,一个col 值为5,就是行数,这是对的。但是repeater没有值,也就是我这儿只有一个表。repeater就没值了
当我把docount设为0时,repeater有值,但是有一个问题,这两次aspnetpager都不能用
请各位大神看一下我这个是什么问题?aspnetpager repeater存储过程
我的前台
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<table width="100%">
<tr>
<td colspan="2" class="tittle">
<%#Eval("title")%>
</td>
</tr>
<tr>
<td class="picture">
<img alt="" src='<%#Eval("smallpicurl") %>'/>
</td>
<td align="left" valign="top" class="content">
<a href="ifr_bztrendsdetail.aspx"><%#Eval("maincontent") %></a>
<br />
<span class="more"><a href="ifr_bztrendsdetail.aspx">more</a></span>
</td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
<%--以下是AspNetPager部分--%>
<webdiyer:AspNetPager ID="AspNetPager1" runat="server" FirstPageText="首页" LastPageText="尾页"
NextPageText="下一页" PrevPageText="上一页" AlwaysShow="true"
TextBeforePageIndexBox="跳转到第" TextAfterPageIndexBox="页"
ShowNavigationToolTip="true" NumericButtonCount="10" SubmitButtonText="转到"
onpagechanged="AspNetPager1_PageChanged"
onpagechanging="AspNetPager1_PageChanging" PageSize="5">
</webdiyer:AspNetPager>后台
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;public partial class Iframe_ifr_bztrends : System.Web.UI.Page
{
public int pageindex;
public int pagesize;
SqlHelper sqlhelp = new SqlHelper();
DataTable dt = new DataTable();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
pageindex = 1;
pagesize = 5;
bind();
}
}
public void bind()
{
DataSet ds=showsendnote(pagesize,pageindex); if (ds != null)//&&ds.Tables.Count==12??
{
dt = ds.Tables[0];
int hang = dt.Rows.Count;
AspNetPager1.PageSize = hang;
AspNetPager1.CurrentPageIndex = pageindex;
AspNetPager1.DataBind();
this.Repeater1.DataSource = dt;
this.Repeater1.DataBind(); }
} public DataSet showsendnote(int pagesize,int pageindex)
{
string connectionstring = ConfigurationManager.AppSettings["connectionsString"].ToString();
SqlConnection conn = new SqlConnection(connectionstring); SqlCommand cmd = new SqlCommand("sqlstr", conn);
cmd.CommandType = CommandType.StoredProcedure;//指定为存储过程
cmd.Parameters.Add("@pagesize", SqlDbType.VarChar).Value =pagesize;
cmd.Parameters.Add("@pageindex", SqlDbType.VarChar).Value = pageindex;
cmd.Parameters.Add("@docount", SqlDbType.VarChar).Value = 0;
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
conn.Close();
return ds;
}
protected void AspNetPager1_PageChanged(object sender, EventArgs e)
{
}
protected void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e)
{
//获取新的页索引
pageindex = e.NewPageIndex;
bind();
}
}我的存储过程create procedure sqlstr
(@pagesize int,
@pageindex int,
@docount bit)
asif(@docount=1)
select count(*) from bztrends where kind='bznews'
else
begin
with temptbl as (
SELECT ROW_NUMBER() OVER (ORDER BY editime desc)AS Row, O.smallpicurl ,O. title,O. maincontent from bztrends O where kind='bznews')
SELECT * FROM temptbl where Row between (@pageindex-1)*@pagesize+1 and (@pageindex-1)*@pagesize+@pagesize
end
这个存储过程是用http://www.webdiyer.com/Controls/AspNetPager/SpGenerator生成的。
我不会存储过程,详细的意思也不懂,只懂个大概的
现在的问题就是
一:能不能给我解释一下这个存储过程的意思?还有这不应该是有俩个datatable的么?因为我看到例子里面有dataset.tables[0]和dataset.table[1],一个用于aspnetpager一个用于repeater?
二:当我把docount设为1时, (cmd.Parameters.Add("@docount", SqlDbType.VarChar).Value = 0;)只有一个datatable,只有一个row,一个col 值为5,就是行数,这是对的。但是repeater没有值,也就是我这儿只有一个表。repeater就没值了
当我把docount设为0时,repeater有值,但是有一个问题,这两次aspnetpager都不能用
请各位大神看一下我这个是什么问题?aspnetpager repeater存储过程
解决方案 »
- 最近几天去团购,感觉多数团购网身份认证都是可以使用其它知名网站可以绑定的,谁能帮我解释一下实现方式
- HttpWebRequest问题
- asp.net ajax animation
- 关于单元测试
- 100分求Jmail的ASP.net的C#实例,要求可直接导入项目可以运行!
- 兄弟姐妹祝你们好运,有谁有ASP.NET聊天室的例子没有?给一个来看看好吗!!!
- 怎么下载图片?
- 关于BorderWidth和BorderColor的问题。
- Can web service post data to others?
- MAC机器上的显示问题。
- .NET读取XML属性,删除和修改。高结贴在线等。
- 有时间选择控件吗?
如果参数docunt = 1 ,返回的是根据条件得到记录总量
如果参数为0,那就是分页得到的数据了。
其实本质上还是会执行两次。
二,不一定要用控件实现分页的效果,你可以自己手写一个完全没有问题的。
PageChanging有参数object src, Wuqi.Webdiyer.PageChangingEventArgs e
可以获取到e.NewPageIndex而PageChanged就没有
但是aspnetpager始终不能用
自己写?不会啊