描述:
这是一个公告列表的展示页面,显示的是公告的列表,并能实现分页。一共两列(标题和发布时间)。公告列表是通过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>&nbsp;
                第<asp:Label ID="lblpage" runat="server" ForeColor="Red" Text=""></asp:Label>页 &nbsp;<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"/>
                &nbsp;&nbsp;&nbsp;
                共<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();} %>

解决方案 »

  1.   


     <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()%>看正确以否
      

  2.   

    <%
                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();} %>
    这些要放到事件处理中吧。
    建议:既然都写成前面那样了,不如不用服务器控件,直接输出分页链接吧
      

  3.   

    楼主貌似以前做VB的 怎么都喜欢将代码放到aspx页里你的意思是链接没赋值上去还是连标题和发布时间都没有?
      

  4.   


    因为我不知道怎么在后台动态建立table
      

  5.   

     <%
                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>&nbsp;
                    第<%=cPg %>页 &nbsp;<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"/>
                    &nbsp;&nbsp;&nbsp;
                    共<asp:Label ID="lbltotal" runat="server"></asp:Label>页</td>
            </tr>
      

  6.   

    <%
            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>&nbsp; 第<%=cPg %>页 &nbsp;<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()" />
                &nbsp;&nbsp;&nbsp; 共<%=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>
      

  7.   

    估计是你的这个URL里有特殊符合 你用这个返回来的时候 那个单引号什么的有点混 
    换个别的思路别这样生成出来呗
      

  8.   

    写多了B/S程序后,感觉类asp的写法其实也不错,jsp、aspx普通模式、MVC模式都通用
      

  9.   

    谢谢各位 正在研究 稍后给分PS:需要头像作品的PM我
      

  10.   

    楼主先看看视频教程,学学最简单的datalist和gridview吧