分享
 
 
 

datalist分页问题的解决办法

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

用datalist制作一个分页,具体要是实现的情况是:<< << 1 2 3 4 5 6…… >> >> 共多少页 转到多少页,点第一个<<转到首页 点第二个<<向上一页 点数字的时候就转到数字所在的页面,后面同理,做分页, 不管是datalist, 还是grid还是listbox等来实现数据呈现,只要将数据源分页就解决了,构思一个数据源分页的方法,不管点击哪一页,

传个页码的关键字进来这个方法就行了.

******************************

<%@ import namespace="System"%>

<%@ import namespace="System.Data"%>

<%@ import namespace="System.Data.OleDb"%>

<%@ import namespace="System.Data.SqlClient"%>

<%@ import namespace="System.Web.UI"%>

<%@ import namespace="System.Web.UI.WebControls"%>

<%@ import namespace="System.Web.UI.HtmlControls"%>

<%@ import namespace="System.Collections"%>

<%@ import namespace="System.Web.SEssionState"%>

<%@ import namespace="System.Configuration"%>

<script language="c#" runat="server">

OleDbConnection MyConn;

int PageSize,RecordCount,PageCount,CurrentPage,i;

ArrayList Al_PageNum;

public void Page_Load(Object src,EventArgs e)

{

PageSize = 4; //设定PageSize

//连接语句

string strcon="provider=Microsoft.jet.OLEDB.4.0;data Source="+Server.MapPath(ConfigurationSettings.AppSettings["MDBpath"])+";";

MyConn = new OleDbConnection(strcon);

MyConn.Open();

if(!Page.IsPostBack) //第一次请求执行

{

RecordCount = CalculateRecord(); //计算总共有多少记录/

PageCount = RecordCount/PageSize; //计算总共有多少页

if (RecordCount%PageSize > 0) //取整

PageCount = PageCount + 1;

lblPageCount.Text = PageCount.ToString();

lblRecordCount.Text = RecordCount.ToString();

ViewState["PageCount"] = PageCount;

CurrentPage = 0;

ViewState["PageIndex"] = 0;

Al_PageNum= new ArrayList();//绑定DROPDOWNLIST

for(i=1;i<=PageCount;i++) //从1开始循环,为了不出现0页码

Al_PageNum.Add(i.ToString());

Ddl_PageNumber.DataSource=Al_PageNum;

Ddl_PageNumber.DataBind();

ListBind(); //绑定

}

MyConn.Close();

}

protected string FormatString(string str)

{

str=str.Replace(" ","&nbsp;&nbsp;");

str=str.Replace("<","&lt;");

str=str.Replace(">","&gt;");

str=str.Replace('\n'.ToString(),"<br>");

return str;

}

public int CalculateRecord() //计算总共有多少条记录

{

int intCount;

string strCount = "select count(*) as co from gbook ";

OleDbCommand MyComm = new OleDbCommand(strCount,MyConn);

OleDbDataReader dr = MyComm.ExecuteReader();

if(dr.Read())

{

intCount = Int32.Parse(dr["co"].ToString());

}

else

{

intCount = 0;

}

dr.Close();

return intCount;

}

ICollection CreateSource()

{

int StartIndex; //设定导入的起终地址

StartIndex = CurrentPage*PageSize; //计算记录数的起始点

string strSel = "select * from gbook order by id desc";

DataSet ds = new DataSet();

OleDbDataAdapter MyAdapter = new OleDbDataAdapter(strSel,MyConn);

MyAdapter.Fill(ds,StartIndex,PageSize,"Score");

return ds.Tables["Score"].DefaultView;

}

public void ListBind()

{

MyList.DataSource = CreateSource();

MyList.DataBind();

lbnNextPage.Enabled = true;

lbnPrevPage.Enabled = true;

if(PageCount==0)

{

lblCurrentPage.Text = "0";

lbnNextPage.Enabled = false;

lbnPrevPage.Enabled = false;

}

else

{

if(CurrentPage==(PageCount-1)) lbnNextPage.Enabled = false;

if(CurrentPage==0) lbnPrevPage.Enabled = false;

lblCurrentPage.Text = (CurrentPage+1).ToString();

}

}

public void Page_OnClick(Object sender,CommandEventArgs e)

{

CurrentPage = (int)ViewState["PageIndex"];

PageCount = (int)ViewState["PageCount"];

string cmd = e.CommandName; //判断cmd,以判定翻页方向

switch(cmd)

{

case "next":

if(CurrentPage<(PageCount-1)) CurrentPage++;

break;

case "prev":

if(CurrentPage>0) CurrentPage--;

break;

}

ViewState["PageIndex"] = CurrentPage;

ListBind();

}

public void PageNum_SelectIndexChanged(object sender,System.EventArgs e)

{

ViewState["PageIndex"] =int.Parse(Ddl_PageNumber.SelectedItem.Value)-1;//保持不出现0页码

PageSize = 4;

CurrentPage = (int)ViewState["PageIndex"];

PageCount = (int)ViewState["PageCount"];

ListBind();

//MyList.DataSource = CreateSource();

//MyList.DataBind();

}

******************************

override protected void OnInit(EventArgs e)

{

InitializeComponent();

base.OnInit(e);

}

private void InitializeComponent()

{

this.Load+=new System.EventHandler(this.Page_Load);

this.Ddl_PageNumber.SelectedIndexChanged+=new System.EventHandler(this.PageNum_SelectIndexChanged);

}

public string test(string str)

{

string str2="";

if(str==String.Empty)

{

str2="暂无回复";

}

else

{

string str3="回复:<br>&nbsp;&nbsp;&nbsp;";

str2=str3+str;

}

return str2;

}

/* for(int i=10;i<20;i++)

{

DropDownList1.Items.Add(new ListItem("第"+i.ToString()+"页",i.ToString()));

}

*/

</script>

<asp:DataList id="MyList" RepeatColumns="1" runat="server">

<itemtemplate> <table width="500" border="0" cellpadding="4" cellspacing="1" bgcolor="8c9aa5">

<tr bgcolor="cecfd6">

<td colspan="2" align="left" bgcolor="#dedbde"><strong>&nbsp; &nbsp; &nbsp; No.<%# DataBinder.Eval(Container.DataItem, "id") %>&nbsp;

<%# DataBinder.Eval(Container.DataItem, "title") %></strong>

</td>

</tr>

<tr>

<td width="95" rowspan="2" align="center" valign="middle" bgcolor="f7f7f7" class="word">

<table width="95" border="0" cellspacing="0" cellpadding="0" class="table1">

<tr>

<td align="center" valign="top" ><br><image src="<%# DataBinder.Eval(Container.DataItem, "sex_image") %>" border=0 ></td>

</tr>

<tr>

<td align="center" class="word" ><%# DataBinder.Eval(Container.DataItem, "username") %><br><%# DataBinder.Eval(Container.DataItem, "sex") %></td>

</tr>

</table>

</td>

<td width="386" height="129" valign="top" bgcolor="f7f7f7" class="word">

<table width="100%" border="0" cellspacing="0" cellpadding="0">

<tr>

<td class="word">留言:<Br>&nbsp;&nbsp;&nbsp;<%# DataBinder.Eval(Container.DataItem, "content") %><br><br><Br><BR></td>

</tr>

<tr>

<td width="80%" bgcolor="#c6c3c6" height="1"></td>

</tr>

<tr>

<td class="word"><br><font color=red><%# test(DataBinder.Eval(Container.DataItem, "r_content").ToString()) %><font></FONT><br><br></td>

</tr>

</table>

</td>

</tr>

<tr>

<td height="22" bgcolor="cecfd6" valign="top">

<table width="100%" border="0" cellspacing="0" cellpadding="0">

<tr>

<td align="left"><table width="100%" border="0" cellspacing="0" cellpadding="0">

<tr>

<td>IP地址:<%# DataBinder.Eval(Container.DataItem, "ip") %>&nbsp&nbsp&nbsp发表时间:<%# DataBinder.Eval(Container.DataItem, "regdate") %></td>

<td width="15%" align="right"><a href="<%# DataBinder.Eval(Container.DataItem, "website") %>" target="_blank"><img src="img/url.gif" border=0></a>&nbsp;<a href="mailto:<%# DataBinder.Eval(Container.DataItem, "email") %>" target="_blank"><img src="img/email2.gif" border=0></a></td>

</tr>

</table>

</td>

</tr>

</table></td>

</tr>

</table>

<br>

</itemtemplate>

</asp:DataList>

<table width="530" border="1" align="center" cellspacing="0" cellpadding="3" bgcolor="#FFFFFF" bordercolor="#C0C0C0" style="border-collapse: collapse">

<tr>

<td align="right" bgcolor="#ECECEC" colspan="2"><asp:LinkButton id="lbnPrevPage" Text="上一页" CommandName="prev" OnCommand="Page_OnClick" runat="server" />

<asp:LinkButton id="lbnNextPage" Text="下一页" CommandName="next" OnCommand="Page_OnClick" runat="server" />

共有<asp:Label id="lblRecordCount" ForeColor="red" runat="server" />条记录

当前为<asp:Label id="lblCurrentPage" ForeColor="red" runat="server" />/<asp:Label id="lblPageCount" ForeColor="red" runat="server" />页&nbsp;&nbsp;<asp:dropdownlist ID="Ddl_PageNumber" runat="server" AutoPostBack="true" CssClass="lanyu"></asp:dropdownlist>

</td>

</tr>

</table>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有