首先请大家看清我的要求,谢谢大家:
1.用aspnetpager分页,前台用repeater2.后台只给了我一个类库让我掉用一个方法,这个方法返回的是一个list,不能动sql语句3.其实问题就是,用aspnetpager,前台repeater,分页,数据源是个list不能动sql语句,所以那些Dataset,Datatable 的都不可以用了4.谢谢大家,
1.用aspnetpager分页,前台用repeater2.后台只给了我一个类库让我掉用一个方法,这个方法返回的是一个list,不能动sql语句3.其实问题就是,用aspnetpager,前台repeater,分页,数据源是个list不能动sql语句,所以那些Dataset,Datatable 的都不可以用了4.谢谢大家,
你分页接收的数据 与它 没什么关系
现在其实说白了就是对这个List分页,还有你说没有关系那具体应该怎么实现这个分页?因为我比较着急语言上可能有点急躁,请大家见谅!
list.Skip((AspNetPager1.CurrentPageIndex - 1) * AspNetPager1.
PageSize).Take(AspNetPager1.PageSize);
string[] Array = { "Hjiang", "Hwang", "Wange", "Hwan", "Hcheng", "Hhoho" }; 封装分页的方法
/// <summary>
/// 分页
/// summary>
/// <typeparam name="T">typeparam>
/// <param name="List">实现IEnumerableparam>
/// <param name="FunWhere">delegate检索条件param>
/// <param name="FunOrder">delegate排序param>
/// <param name="PageSize">每页显示数param>
/// <param name="PageIndex">当前页码param>
/// <returns>returns>
static IEnumerable<T> GetIenumberable<T>(IEnumerable<T> List,Func<T,
bool> FunWhere,Func<T,string> FunOrder, int PageSize, int PageIndex)
{
var rance = List.Where(FunWhere).OrderByDescending(FunOrder).
Select(t => t).Skip((PageIndex - 1) * PageSize).Take(PageSize);
return rance;
} 然后我们对数组进行模拟分页以下读取第一页
var sArray = GetIenumberable<String>
(Array, r => r.StartsWith("H"), r => r, 1, 1);
foreach (var s in sArray)
{
Console.WriteLine(s);
} 第二页
var sArray = GetIenumberable<String>
(Array, r => r.StartsWith("H"), r => r, 1, 2);
foreach (var s in sArray)
{
Console.WriteLine(s);
} 以上介绍用Linq实现分页。
这个不错啊 linq中好像就是用这个分页滴
你sql 返回的 只需要 pageindex pagesize + 你自己的条件就行了 与sql无关的
前面一个是从第几条开始取,然后再take 你想要的多少条?
{
StringBuilder str = new StringBuilder();
IList<SqlParameter> para = new List<SqlParameter>();
if (LinkType != 0)
{
str.Append(" and LinkType = @LinkType ");
para.Add(new SqlParameter("@LinkType", LinkType));
}
string sql1 = "select count(*) from Link where 1=1" + str.ToString();
string sql2 = " ; select top(" + Pagesize + ") * from Link where LinkId not in (select top " + (PageIndex - 1) * Pagesize + " LinkId from Link where 1=1 " + str.ToString() + " order by LinkOrder ) " + str + " order by LinkOrder ";
SqlParameter[] pa = new SqlParameter[para.Count];
for (int i = 0; i < pa.Length; i++)
{
pa[i] = para[i];
}
return new DBHelp().ExecuteDataSet(sql1 + sql2, pa);
}
BLlpublic DataSet SelLinkAll(int Pagesize, int PageIndex, int LinkType)
{
return ilink.SelLinkAll(Pagesize, PageIndex, LinkType);
}
aspx.csint pagesize = 10;
Link linkbll = new Link();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
int PageIndex = 1;
Bind();
}
} //数据分页绑定
private void Bind()
{
DataSet ds = linkbll.SelLinkAll(pagesize, PageIndex, int.Parse(linktype.Value.ToString()));
if (ds != null && ds.Tables.Count > 0)
{
ReplinkList.DataSource = ds.Tables[1];
ReplinkList.DataBind();
decimal count = decimal.Parse(ds.Tables[0].Rows[0][0].ToString());
AspNetPager1.RecordCount = int.Parse(count.ToString());
AspNetPager1.PageSize = pagesize;
AspNetPager1.CurrentPageIndex = PageIndex;
}
else
{
this.ReplinkList.Controls.Clear();
} } protected void AspNetPager1_PageChanging(object src, Wuqi.Webdiyer.PageChangingEventArgs e)
{
PageIndex = e.NewPageIndex;
Bind();
} public int PageIndex
{
get
{
if (ViewState["pageindex"] != null)
{
return int.Parse(ViewState["pageindex"].ToString());
}
else
{
return 1;
}
}
set { ViewState["pageindex"] = value; }
} #endregion
<head runat="server">
<title>友情链接</title>
<link href="Images/css1/css.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="../../themes/script/jquery-1.4.1-vsdoc.js"></script> <script type="text/javascript" src="../../themes/script/jquery-1.4.1.min-vsdoc.js"></script></head>
<body>
<form id="form1" runat="server">
<div>
<table width="99%">
<tr>
<td>
<fieldset>
<legend>功能面板</legend><a href="javascript:void(0)" onclick="updatelink()">
<img src="Images/users.png" style="border: 0px; height: 12px; width: 14px;" />新增链接</a>
</fieldset>
<table class="table" cellspacing="1" cellpadding="2" width="100%" border="0" id="tab">
<asp:Repeater ID="ReplinkList" runat="server">
<ItemTemplate>
<tr>
<td class="td_bg" height="23">
<input type="checkbox" value='<%#Eval("LinkId")%>' runat="server" id="checkLinkid" />
</td>
<td class="td_bg" height="23">
<%#Eval("LinkName")%>
</td>
<td class="td_bg" height="23">
<a href='http://<%#Eval("LinkAddress")%>' target="_blank">点击访问</a>
</td>
<td class="td_bg" height="23">
<%# int.Parse(Eval("LinkType").ToString())==1?"本站链接":"友情链接"%>
</td>
<td class="td_bg" height="23">
<%#Eval("LinkOrder")%>
</td>
<td class="td_bg">
<a href="#" onclick="updatelink('<%#Eval("LinkId")%>','<%#Eval("LinkName")%>','<%#Eval("LinkAddress")%>','<%#Eval("LinkOrder")%>','<%#Eval("LinkType")%>','<%#Eval("LinkImgName")%>')">
修改</a>
<asp:LinkButton ID="DelLink" runat="server" CommandArgument='<%#Eval("LinkId")%>'
Text="删除" CommandName="del" OnCommand="delLink" OnClientClick="return confirm('删除后将不可恢复,是否删除?')"></asp:LinkButton>
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
<tr>
<td colspan="6">
<input type="checkbox" id="cball" onclick="selectall(this)" />全选
<asp:Button ID="delAllNews" runat="server" Text="批量删除" OnClick="delAllNews_Click" />
</td>
</tr>
</table>
<div style="text-align: center; padding-top: 5px;">
<webdiyer:AspNetPager ID="AspNetPager1" runat="server" FirstPageText="首页" LastPageText="尾页"
NextPageText="下一页" OnPageChanging="AspNetPager1_PageChanging" PrevPageText="上一页">
</webdiyer:AspNetPager>
</div>
</td>
</tr>
</table>
</div>
<!--AddLink层-->
<div style="position: absolute; “ id="openid">
<div style="float: right; color: white; padding: 3px; cursor: pointer" id="overid"
onclick="closewin()">
<img src='Images/remove.png' style='height: 12px; width: 12px; bgcolor: #FFFFFF'
alt='关闭' /></div>
<div style="padding: 7px 0px 5px 7px;">
<table style="padding: 5px; width: 100%;">
<tr>
<td style="width: 35px;" align="right">
链接名称
</td>
<td style="width: 65px;">
<input type="text" runat="server" id="linkname" name="linkname" /><span id="msgname"></span>
</td>
</tr>
<tr>
<td align="right">
链接地址
</td>
<td>
<input type="text" runat="server" id="linkaddress" name="linkaddress" /><span id="msgaddress"></span>
</td>
</tr>
<tr>
<td align="right">
排序
</td>
<td>
<input runat="server" type="text" id="linkorder" name="linkorder" onkeyup="value=value.replace(/[^0-9_]/g,'')" /><span
id="msgorder"></span>
</td>
</tr>
<tr>
<td align="right">
链接类型
</td>
<td>
<select id="linktype" runat="server" onchange="changeitem()">
<option value="0">--请选择--</option>
<option value="1">本站链接</option>
<option value="2">友情链接</option>
</select><span id="msgtype"></span><br />
<asp:Label ID="imglink" runat="server" Text=""></asp:Label>
<asp:HiddenField ID="linkid" runat="server" Value="" />
</td>
</tr>
<tr>
<td align="center" colspan="2">
<div id="linkfiledown" style="display: none;">
<asp:FileUpload ID="getlink" runat="server" />
</div>
</td>
</tr>
<tr>
<td>
</td>
<td>
<asp:Button ID="GetlinkBtn" runat="server" Text="提 交" OnClientClick="return check();"
OnClick="GetlinkBtn_Click" />
<input type="button" onclick="return ClearText();" value="清 空" />
</td>
</tr>
</table>
</div>
</div>
<!--层结束-->
</form>
</body>
</html><script language="javascript" type="text/javascript">
//判断连接类型
function changeitem() {
var item = $("#linktype").val();
if (item == "2") {
$("#linkfiledown").css("display", "block");
}
else {
$("#linkfiledown").css("display", "none");
}
}
//关闭方法
function closewin() {
//关闭层和清除文本参数
$("#openid").hide(300);
$("#shutid").hide(100);
$("#linkfiledown").css("display", "none");
} var posX;
var posY;
var popDiv;
var dragable;
//鼠标按下事件
function down(e, openid) {
popDiv = document.getElementById(openid);
popDiv.style.cursor = "move";
e = e || window.event; //如果是IE 活着
posX = e.clientX - parseInt(popDiv.style.left);
posY = e.clientY - parseInt(popDiv.style.top);
dragable = true;
document.onmousemove = move;
}
//鼠标移动事件
function move(ev) {
if (dragable == true) {
ev = ev || window.event; //如果是IE
popDiv.style.left = (ev.clientX - posX) + "px";
popDiv.style.top = (ev.clientY - posY) + "px";
}
}
//鼠标抬起事件
function up() {
dragable = false;
popDiv.style.cursor = "default";
} //创建模态层
function HoutDiv() { //先要移除模态层
$("#shutid").remove();
//创建模态层添加属性
var div = document.createElement("div");
div.setAttribute("id", "shutid");
document.body.appendChild(div);
$("#shutid").css({ position: "absolute", left: "0px", top: "0px", background: "#CCCCCC" });
document.getElementById("shutid").style.filter = "Alpha(opacity=60)";
document.getElementById("shutid").style.opacity = "0.6";
//添加模态层宽高
$("#shutid").css("width", $(document).width());
$("#shutid").css("height", $(document).height());
//层的级别
$("#shutid").css("z-index", "1");
} //打开浮动层
function updatelink(linkid, linkname, linkaddress, linkorder, linktype, imglink) {
debugger;
$("#openid").show(300);
//层的级别最高
$("#openid").css("z-index", "2");
HoutDiv(); //调用遮罩层 $("#linkname").val(linkname);
$("#linkaddress").val(linkaddress);
$("#linkorder").val(linkorder);
$("#linktype").val(linktype);
$("#imglink").text(imglink);
$("#linkid").val(linkid);
}
</script>
using System.Linq;
那你直接 把 sql 放在 绑定 那里 不就行了
这么简单 lz多自学尝试
不能 让别人帮你 都做完了
我们是程序员啊
protected void dataBind()
{
UserInfo ui = Session["currentUser"] as UserInfo;
UserInfo u = UserManager.getUserByName(ui.name);
IList<Info> list = InfoManager.getInfoByUid(u.id);
PagedDataSource pds = new PagedDataSource();
pds.DataSource = list;
pds.CurrentPageIndex = anpFY.CurrentPageIndex - 1;
pds.PageSize = anpFY.PageSize;
pds.AllowPaging = true;
anpFY.RecordCount = list.Count;
this.RepInfo.DataSource = pds;
this.RepInfo.DataBind();
} //分页控件事件
protected void anpFY_PageChanged(object sender, EventArgs e)
{
dataBind();
}
前台 <asp:Repeater ID="RepInfo" runat="server" OnItemCommand="RepInfo_ItemCommand" OnItemDataBound="RepInfo_ItemDataBound">
<HeaderTemplate>
<table width="100%" border="1" cellspacing="0" cellpadding="4" style="border-collapse: collapse">
<tr style="background-color: #ccccff; height: 35px;">
<th style="width: 5%">
序号
</th>
<th style="width: 25%">
标题
</th>
<th style="width: 45%">
内容
</th>
<td style="width: 10%">
状态
</td>
<th style="width: 15%">
管理
</th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr style="background-color: #FAF3DC; height: 30px;">
<td>
<%# Container.ItemIndex+1 %>
</td>
<td>
<%# getStr((Eval("title").ToString()),15)%>
</td>
<td>
<%# getStr((Eval("contents").ToString()),30)%>
</td>
<td>
<asp:Label ID="lblState" runat="server" Text='<%# change(Convert.ToInt32(Eval("status"))) %>'></asp:Label>
</td>
<td>
<asp:LinkButton ID="lbEdit" runat="server" CommandName="et" CommandArgument='<%# Eval("id") %>'
Text="修改"></asp:LinkButton>
</td>
</tr>
</ItemTemplate>
<AlternatingItemTemplate>
<tr style="background-color: #eaeaea; height: 30px;">
<td>
<%# Container.ItemIndex+1 %>
</td>
<td>
<%# getStr((Eval("title").ToString()),15)%>
</td>
<td>
<%# getStr((Eval("contents").ToString()),30)%>
</td>
<td>
<asp:Label ID="lblState" runat="server" Text='<%# change(Convert.ToInt32(Eval("status"))) %>'></asp:Label>
</td>
<td>
<asp:LinkButton ID="lbEdit" runat="server" CommandName="et" CommandArgument='<%# Eval("id") %>'
Text="修改"></asp:LinkButton>
</td>
</tr>
</AlternatingItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<webdiyer:AspNetPager CssClass="paginator" CurrentPageButtonClass="cpb" ID="anpFY"
runat="server" FirstPageText="首页" LastPageText="尾页" NextPageText="下一页" PrevPageText="上一页"
Width="100%" UrlPaging="true" ShowPageIndexBox="always" PageIndexBoxType="dropDownList"
HorizontalAlign="right" PageSize="10" EnableTheming="true" ShowNavigationToolTip="True"
OnPageChanged="anpFY_PageChanged">
</webdiyer:AspNetPager>这是我的,你看着改下吧,应该可以用的,希望能够帮到你!
{
font: 11px Arial, Helvetica, sans-serif;
padding: 10px 20px 10px 0;
margin: 0px;
}
.paginator a
{
padding: 1px 6px;
border: solid 1px #ddd;
background: #fff;
text-decoration: none;
margin-right: 2px;
}
.paginator a:visited
{
padding: 1px 6px;
border: solid 1px #ddd;
background: #fff;
text-decoration: none;
}
.paginator .cpb
{
padding: 1px 6px;
font-weight: bold;
font-size: 13px;
border: none;
}
.paginator a:hover
{
color: #fff;
background: #ffa501;
border-color: #ffa501;
text-decoration: none;
}这是分页控件样式,都给你了!