zoukankan      html  css  js  c++  java
  • DataList分页访问FooterTemplate模板里的控件

    今天做DataList分页的时候,突然想把分页控件写在FooterTemplate模板里面,弄了很久都访问不到控件,终于发现问题所在,以下是访问FooterTemplate里控件的方法:

    <FooterTemplate>
            <div style="100%; text-align:right; margin-top:15px;">
                    第<asp:Label ID="lblPageIndex" runat="server"></asp:Label>/
                     <asp:Label ID="lblPageCount" runat="server"></asp:Label>页&nbsp;
                     <asp:LinkButton ID="linkFirst" CommandName="First" runat="server">首页</asp:LinkButton>
                     <asp:LinkButton ID="linkPrev" CommandName="Prev" runat="server">上一页</asp:LinkButton>
                     <asp:LinkButton ID="linkNext" CommandName="Next" runat="server">下一页</asp:LinkButton>
                     <asp:LinkButton ID="linkLast" CommandName="Last" runat="server">尾页</asp:LinkButton>
              </div>
     </FooterTemplate>

    后台代码:====================================================================

     private int pageCount = 0;
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ViewState["PageIndex"] = 0;
                DataListBind();
            }
        }

    public int Pager
        {
            get { return (int)ViewState["PageIndex"]; }
            set { ViewState["PageIndex"] = value; }
        }

    private void DataListBind()
        {
            SqlConnection conn = new SqlConnection("data source=.;initial catalog=study;uid=sa;pwd=123456;");
            SqlCommand cmd = new SqlCommand("select * from productinfo", conn);
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            conn.Close();
            DataSet ds = new DataSet();
            sda.Fill(ds);
            DataList1.DataSource = ds;
            DataList1.DataKeyField = "pid";
            PagedDataSource pds = new PagedDataSource();
            DataView dv = new DataView(ds.Tables[0]);
            pds.DataSource = dv;
            pds.AllowPaging = true;
            pds.PageSize = 8;
            pageCount = pds.PageCount;
            pds.CurrentPageIndex = Pager;
            DataList1.DataSource = pds;

            DataList1.RepeatColumns = 4;
            DataList1.DataBind();

           // 下面的的代码一定要写在DataList1.DataBind();后面,不然会提示:索引超出界限

            Label lblIndex = DataList1.Controls[DataList1.Controls.Count - 1].FindControl("lblPageIndex") as Label;
            Label lblCount = DataList1.Controls[DataList1.Controls.Count - 1].FindControl("lblPageCount") as Label;
            lblIndex.Text = (Pager + 1).ToString();
            lblCount.Text = pds.PageCount.ToString();
        } 

    protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
        {
            Label lblCount = DataList1.Controls[DataList1.Controls.Count - 1].FindControl("lblPageCount") as Label;
            switch (e.CommandName)
            {
                case "First" :
                    Pager = 0;
                    break;
                case "Prev":
                    if (Pager>=1)
                    {
                        Pager--;
                    }
                     break;
                case "Next":
                     if (Pager < Convert.ToInt32(lblCount.Text)-1)
                     {
                         Pager++;
                     } 
                     break;
                case "Last":
                     Pager = Convert.ToInt32(lblCount.Text)-1;
                    break;
            }
            DataListBind();
        }

  • 相关阅读:
    更改Linux时区的两种方法
    Azure上部署FTP服务
    log4j2简单使用
    elasticsearch5.5.2环境搭建
    springTask和Schedule学习
    防止SpringMVC拦截器拦截js等静态资源文件
    Mysql中使用FIND_IN_SET解决IN条件为字符串时只有第一个数据可用的问题
    ServletContext总结
    window.location.href和window.location.replace的区别
    javadoc文档
  • 原文地址:https://www.cnblogs.com/ianunspace/p/3439380.html
Copyright © 2011-2022 走看看