DataList分页访问FooterTemplate模板里的控件_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > DataList分页访问FooterTemplate模板里的控件

DataList分页访问FooterTemplate模板里的控件

 2013/11/23 21:28:02  临窗观景  博客园  我要评论(0)
  • 摘要:今天做DataList分页的时候,突然想把分页控件写在FooterTemplate模板里面,弄了很久都访问不到控件,终于发现问题所在,以下是访问FooterTemplate里控件的方法:<FooterTemplate><divstyle="width:100%;text-align:right;margin-top:15px;">第<asp:LabelID="lblPageIndex"runat="server"></asp:Label>/<
  • 标签:模板 list 控件

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

<FooterTemplate>
        <div style="width: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();
    }

 

 

发表评论
用户名: 匿名