• 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();
        }

  • 相关阅读:
    SQL获得表的行数
    sql server2008用ip远程连接
    sql设置字段默认值
    用c# 实现设计器 DesignSurface<转>
    DSOFramer.ocx 控件使用<转>
    浅谈JavaScript编程语言的编码规范<转>
    主要是取得2個Collection 裏,相同、相異、聯集的部份<转>
    VS2008无法切换到视图设计器
    使用HttpModule来禁用Web表单重复提交<转>
    WebIM组件设计<转>
  • 原文地址:https://www.cnblogs.com/ianunspace/p/3439380.html
Copyright © 2020-2023  润新知