今天做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();
    }

DataList分页访问FooterTemplate模板里的控件的更多相关文章

  1. 在DataList、Repeater的HeaderTemplate和FooterTemplate模板中寻找控件FindControl

    [程序代码] <asp:Repeater ID="Repeater1" runat="server"> <HeaderTemplate> ...

  2. WPF关于控件 父级控件,子级控件,控件模板中的控件,等之间的相互访问

    原文:WPF关于控件 父级控件,子级控件,控件模板中的控件,等之间的相互访问 1,在菜单中访问 弹出菜单的控件 var mi = sender as MenuItem;//菜单条目 MenuItem ...

  3. 【WPF】创建基于模板的WPF控件(经典)

    原文:[WPF]创建基于模板的WPF控件(经典) WPF可以创建两种控件,它们的名字也很容易让人混淆:用户控件(User Control)和定制控件(Customer Control),之所以如此命名 ...

  4. winfrom获取用户控件里的控件对象

    如何获取用户控件里的控件对象呢,其实思路也是很简单的, 比如有一个panel 用户控件 里面有许多的其他控件. 那么要找出一个Label控件怎么找呢,好的.现在我们就开始 首先,一个foreach循环 ...

  5. swt controls里的控件list

    swt controls里的控件list,怎么显示滚动条,并且滚动条自动移动到最下边时,显示最新内容 package com.jokul; import org.eclipse.swt.widgets ...

  6. iOS 在xib或storyboard里为控件添加圆角、外框和外框颜色

    如果要在xib和storyboard里为控件添加圆角和外框宽度,只要这样做就可以 layer.borderWidth     设置外框宽度属性 layer.cornerRadius    设置圆角属性 ...

  7. 注意Android里TextView控件的一个小坑,用android:theme来设置样式时动态载入的layout会丢失该样式

    注意Android里TextView控件的一个小坑,用android:theme来设置样式时动态载入的layout会丢失该样式 这个坑,必须要注意呀, 比如在用ListView的时候,如果在List_ ...

  8. sencha动态向容器里添加控件出现重叠问题

    sencha动态向容器里添加控件出现重叠问题原因是由于动态生成控件的id有重复导致的.(js取时间到毫秒来做id,放在for里面会出现几个控件id是相同的情况.).解决掉重复id的问题就好了. 版权声 ...

  9. iOS在xib或storyboard里为控件添加圆角、外框和外框颜色

    如果要在xib和storyboard里为控件添加圆角和外框宽度,只要这样做就可以: layer.borderWidth 设置外框宽度属性 layer.cornerRadius 设置圆角属性 只要为属性 ...

随机推荐

  1. Lists in Prolog

    Symbols in Prolog: atom variable number list (how to assembly and take them apart)   Lists are very  ...

  2. u3d动态加入模型

    楼层一层一层的加,把模型分开,弄成prefab放到Resourse文件夹里,在代码里用Instantiate(Resources.Load("模型名字") as GameObjec ...

  3. IT战略规划咨询

    目录 1IT战略规划微咨询简介 2IT战略的意义 3服务模式 4IT战略规划焦点问题 5IT战略规划步骤 6服务提供方微咨询网 7微咨询价值 8微咨询服务方式 9IT工作规划与IT战略规... IT战 ...

  4. [原创]Android系统中常用JAVA类源码浅析之HashMap

    由于是浅析,所以我只分析常用的接口,注意是Android系统中的JAVA类,可能和JDK的源码有区别. 首先从构造函数开始, /** * Min capacity (other than zero) ...

  5. [转]ASP.NET页面之间传递值的几种方式

    页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值.存储对象传值.ajax.类.model.表单等.但是一般来说,常用的较简单有QueryString,Session,Cookie ...

  6. Java Web dev搭建经验总结

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! 回馈分析法使我看到,我对专业技术人员,不管是工程师.会计师还是市场研究人员,都容易从直觉上去理解 ...

  7. 【redmine】密码忘了后重新设置

    有段时间没有使用,忘记了原来的密码,搜索网上有一篇文章,不过版本比较老,和现在文件位置不一样,参考后成功重置了密码,感谢原作者. 原文内第一步一般是不需要的.主要是用ruby命令修改数据库内容. 进入 ...

  8. PowerDesigner 16.5对SQL Server 2012 生成数据库时"不支持扩展属性"问题

    团队合作设计一套系统数据模型,创建了PDM后,Table.View.Store Procedure等都创建好了,且创建了多个Schema方便管理这些数据库对象,但Table.view.Column等对 ...

  9. Java版的Quartz表达式生成器,同时适用于Quartz.net(免费下载)

    Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或为运行十个,百个, ...

  10. 实现无锁的栈与队列(5):Hazard Pointer

    两年多以前随手写了点与 lock free 相关的笔记:1,2,3,4,质量都不是很高其实(读者见谅),但两年来陆陆续续竟也有些阅读量了(可见剑走偏锋的技巧是多容易吸引眼球).笔记当中在解决内存释放和 ...