描述:
这是一个公告列表的展示页面,显示的是公告的列表,并能实现分页。一共两列(标题和发布时间)。公告列表是通过table展示的,正常显示。公告列表下面是页码索引,分页用的,是一些Hyperlink控件。这后面嵌入了对这些控件属性进行初始化的服务器代码。但是好像不起作用,这些控件并没有被附上地址。
代码描述:
1。通过页面接受的页码参数判定显示哪些公告:<%
StringBuilder sql = new StringBuilder(" 省略 ");
string sqla = sql.ToString();
AppCommon app = new AppCommon();
DataSet ds = app.ExecuteDataSet(sqla);
int page = 0;
int pageSize = 10;
int count = ds.Tables[0].Rows.Count;
int pageCount = count/pageSize+1;
if(count!=0)
{
if(string.IsNullOrEmpty(Request.QueryString["pageIndex"]))
{
page=1;
}
else
{
page = Convert.ToInt32(Request.QueryString["pageIndex"])+1;
}
%>
<tr>
<td colspan="3">
<table style="width: 708px">
<tr style="height:30px">
<td style="width:5%;">
</td>
<td style="width:78%;" align="center">
<strong>
公告名称</strong>
</td>
<td style="width:15%;" align="center">
<strong>
发布时间</strong>
</td>
<td style="width:2%;">
</td>
</tr>
<%
int j = (page-1)*pageSize ;
for( ; j<page*pageSize && j<count ; j++)
{ %>
<tr style="height:30px">
<td style="width:5%;">
</td>
<td style="width:78%;">
<a href='Notice.aspx?n_id=<%=ds.Tables[0].Rows[j][2].ToString() %>' target="_blank"><%=ds.Tables[0].Rows[j][0].ToString() %></a>
</td>
<td style="width:15%;" >
<%=ds.Tables[0].Rows[j][1].ToString() %>
</td>
<td style="width:2%;">
</td>
</tr>
<%}
%>
</table>
</td>
</tr>2。分页用的页码索引<tr>
<td style="width: 345px; height: 26px;">
</td>
<td style="width: 250px; height: 26px;">
<asp:HyperLink ID="hlFirst" runat="server" Text="首页" Width="30px" NavigateUrl="" ></asp:HyperLink>
<asp:HyperLink ID="hlPrevious" runat="server" Text="上页" Width="30px" NavigateUrl="" ></asp:HyperLink>
第<asp:Label ID="lblpage" runat="server" ForeColor="Red" Text=""></asp:Label>页 <asp:HyperLink ID="hlNext" runat="server" Text="下页" Width="30px" NavigateUrl="" ></asp:HyperLink>
<asp:HyperLink ID="hlLast" runat="server" Text="末页" Width="30px" NavigateUrl="" ></asp:HyperLink>
</td>
<td style="width: 225px; height: 26px; vertical-align:middle" align="right">
跳转到<asp:TextBox ID="txtpage" runat="server" Width="20px" Height="15px"></asp:TextBox>页<asp:Button
ID="btnpage" runat="server" CausesValidation="False" Height="20px"
Text="确定 " Width="45px" OnClick="btnpage_Click"/>
共<asp:Label ID="lbltotal" runat="server"></asp:Label>页</td>
</tr>3。初始化上面的页码控件的服务器代码(这些代码好像并不起作用,链接并没有被附上地址):<%
hlFirst.NavigateUrl = hlPrevious.NavigateUrl = hlNext.NavigateUrl = hlLast.NavigateUrl = "NoticeList.aspx?pageIndex="; string pageIndexStr = string.IsNullOrEmpty(Request.QueryString["pageIndex"]) ? "0" : Request.QueryString["pageIndex"];
int pageIndex;
int.TryParse(pageIndexStr, out pageIndex);
int currentPageIndex = pageIndex > pageCount - 1 ? pageCount - 1 : pageIndex;
lblpage.Text = (currentPageIndex + 1).ToString();
lbltotal.Text = pageCount.ToString();
hlFirst.NavigateUrl += "0";
hlPrevious.NavigateUrl += (pageIndex - 1 > 0 ? pageIndex - 1 : 0).ToString();
hlNext.NavigateUrl += (pageIndex + 1 < pageCount - 1 ? pageIndex + 1 : pageCount - 1).ToString();
hlLast.NavigateUrl += (pageCount - 1).ToString();
ds.Dispose();
app.Dispose();} %>
这是一个公告列表的展示页面,显示的是公告的列表,并能实现分页。一共两列(标题和发布时间)。公告列表是通过table展示的,正常显示。公告列表下面是页码索引,分页用的,是一些Hyperlink控件。这后面嵌入了对这些控件属性进行初始化的服务器代码。但是好像不起作用,这些控件并没有被附上地址。
代码描述:
1。通过页面接受的页码参数判定显示哪些公告:<%
StringBuilder sql = new StringBuilder(" 省略 ");
string sqla = sql.ToString();
AppCommon app = new AppCommon();
DataSet ds = app.ExecuteDataSet(sqla);
int page = 0;
int pageSize = 10;
int count = ds.Tables[0].Rows.Count;
int pageCount = count/pageSize+1;
if(count!=0)
{
if(string.IsNullOrEmpty(Request.QueryString["pageIndex"]))
{
page=1;
}
else
{
page = Convert.ToInt32(Request.QueryString["pageIndex"])+1;
}
%>
<tr>
<td colspan="3">
<table style="width: 708px">
<tr style="height:30px">
<td style="width:5%;">
</td>
<td style="width:78%;" align="center">
<strong>
公告名称</strong>
</td>
<td style="width:15%;" align="center">
<strong>
发布时间</strong>
</td>
<td style="width:2%;">
</td>
</tr>
<%
int j = (page-1)*pageSize ;
for( ; j<page*pageSize && j<count ; j++)
{ %>
<tr style="height:30px">
<td style="width:5%;">
</td>
<td style="width:78%;">
<a href='Notice.aspx?n_id=<%=ds.Tables[0].Rows[j][2].ToString() %>' target="_blank"><%=ds.Tables[0].Rows[j][0].ToString() %></a>
</td>
<td style="width:15%;" >
<%=ds.Tables[0].Rows[j][1].ToString() %>
</td>
<td style="width:2%;">
</td>
</tr>
<%}
%>
</table>
</td>
</tr>2。分页用的页码索引<tr>
<td style="width: 345px; height: 26px;">
</td>
<td style="width: 250px; height: 26px;">
<asp:HyperLink ID="hlFirst" runat="server" Text="首页" Width="30px" NavigateUrl="" ></asp:HyperLink>
<asp:HyperLink ID="hlPrevious" runat="server" Text="上页" Width="30px" NavigateUrl="" ></asp:HyperLink>
第<asp:Label ID="lblpage" runat="server" ForeColor="Red" Text=""></asp:Label>页 <asp:HyperLink ID="hlNext" runat="server" Text="下页" Width="30px" NavigateUrl="" ></asp:HyperLink>
<asp:HyperLink ID="hlLast" runat="server" Text="末页" Width="30px" NavigateUrl="" ></asp:HyperLink>
</td>
<td style="width: 225px; height: 26px; vertical-align:middle" align="right">
跳转到<asp:TextBox ID="txtpage" runat="server" Width="20px" Height="15px"></asp:TextBox>页<asp:Button
ID="btnpage" runat="server" CausesValidation="False" Height="20px"
Text="确定 " Width="45px" OnClick="btnpage_Click"/>
共<asp:Label ID="lbltotal" runat="server"></asp:Label>页</td>
</tr>3。初始化上面的页码控件的服务器代码(这些代码好像并不起作用,链接并没有被附上地址):<%
hlFirst.NavigateUrl = hlPrevious.NavigateUrl = hlNext.NavigateUrl = hlLast.NavigateUrl = "NoticeList.aspx?pageIndex="; string pageIndexStr = string.IsNullOrEmpty(Request.QueryString["pageIndex"]) ? "0" : Request.QueryString["pageIndex"];
int pageIndex;
int.TryParse(pageIndexStr, out pageIndex);
int currentPageIndex = pageIndex > pageCount - 1 ? pageCount - 1 : pageIndex;
lblpage.Text = (currentPageIndex + 1).ToString();
lbltotal.Text = pageCount.ToString();
hlFirst.NavigateUrl += "0";
hlPrevious.NavigateUrl += (pageIndex - 1 > 0 ? pageIndex - 1 : 0).ToString();
hlNext.NavigateUrl += (pageIndex + 1 < pageCount - 1 ? pageIndex + 1 : pageCount - 1).ToString();
hlLast.NavigateUrl += (pageCount - 1).ToString();
ds.Dispose();
app.Dispose();} %>
<a href='Notice.aspx?n_id=<%=ds.Tables[0].Rows[j][2].ToString() %>' target="_blank"><%=ds.Tables[0].Rows[j][0].ToString() %></a>
链接的实际输出是什么?
先输出下<%=ds.Tables[0].Rows[j][2].ToString()%>看正确以否
hlFirst.NavigateUrl = hlPrevious.NavigateUrl = hlNext.NavigateUrl = hlLast.NavigateUrl = "NoticeList.aspx?pageIndex="; string pageIndexStr = string.IsNullOrEmpty(Request.QueryString["pageIndex"]) ? "0" : Request.QueryString["pageIndex"];
int pageIndex;
int.TryParse(pageIndexStr, out pageIndex);
int currentPageIndex = pageIndex > pageCount - 1 ? pageCount - 1 : pageIndex;
lblpage.Text = (currentPageIndex + 1).ToString();
lbltotal.Text = pageCount.ToString();
hlFirst.NavigateUrl += "0";
hlPrevious.NavigateUrl += (pageIndex - 1 > 0 ? pageIndex - 1 : 0).ToString();
hlNext.NavigateUrl += (pageIndex + 1 < pageCount - 1 ? pageIndex + 1 : pageCount - 1).ToString();
hlLast.NavigateUrl += (pageCount - 1).ToString();
ds.Dispose();
app.Dispose();} %>
这些要放到事件处理中吧。
建议:既然都写成前面那样了,不如不用服务器控件,直接输出分页链接吧
因为我不知道怎么在后台动态建立table
string pageIndexStr = string.IsNullOrEmpty(Request.QueryString["pageIndex"]) ? "0" : Request.QueryString["pageIndex"];
int pageIndex;
int.TryParse(pageIndexStr, out pageIndex);
int currentPageIndex = pageIndex > pageCount - 1 ? pageCount - 1 : pageIndex;
int cPg = (currentPageIndex + 1);
%>
<tr>
<td style="width: 345px; height: 26px;">
</td>
<td style="width: 250px; height: 26px;">
<a href="NoticeList.aspx?pageIndex=0">首页</a>
<a href="NoticeList.aspx?pageIndex=<%=(pageIndex - 1 > 0 ? pageIndex - 1 : 0) %>" >上页</a>
第<%=cPg %>页 <a href="NoticeList.aspx?pageIndex=<%=(pageIndex + 1 < pageCount - 1 ? pageIndex + 1 : pageCount - 1) %>" >下页</a>
<a href="NoticeList.aspx?pageIndex=<%=(pageCount - 1) %>" >末页</a>
</td>
<td style="width: 225px; height: 26px; vertical-align:middle" align="right">
跳转到<asp:TextBox ID="txtpage" runat="server" Width="20px" Height="15px"></asp:TextBox>页<asp:Button
ID="btnpage" runat="server" CausesValidation="False" Height="20px"
Text="确定 " Width="45px" OnClick="btnpage_Click"/>
共<asp:Label ID="lbltotal" runat="server"></asp:Label>页</td>
</tr>
string pageIndexStr = string.IsNullOrEmpty(Request.QueryString["pageIndex"]) ? "0" : Request.QueryString["pageIndex"]; int pageIndex;
int.TryParse(pageIndexStr, out pageIndex);
int currentPageIndex = pageIndex > pageCount - 1 ? pageCount - 1 : pageIndex;
int cPg = (currentPageIndex + 1);
%>
<tr>
<td style="width: 345px; height: 26px;">
</td>
<td style="width: 250px; height: 26px;">
<a href="NoticeList.aspx?pageIndex=0">首页</a> <a href="NoticeList.aspx?pageIndex=<%=(pageIndex - 1 > 0 ? pageIndex - 1 : 0) %>">
上页</a> 第<%=cPg %>页 <a href="NoticeList.aspx?pageIndex=<%=(pageIndex + 1 < pageCount - 1 ? pageIndex + 1 : pageCount - 1) %>">下页</a>
<a href="NoticeList.aspx?pageIndex=<%=(pageCount - 1) %>">末页</a>
</td>
<td style="width: 225px; height: 26px; vertical-align: middle" align="right">
跳转到<input type="text" id="txPage" style="width: 20px; height: 15px" /><input type="button"
value="确定" onclick="gotoUrl()" />
共<%=pageCount%>页
</td>
</tr> <script type="text/javascript">
function gotoUrl() {
var pg = parseInt(document.getElementById("txPage").value);
if (isNaN(pg)) pg = 0;
location.href = "NoticeList.aspx?pageIndex=" + pg;
}
</script>
换个别的思路别这样生成出来呗