• Silverlight中DataPager控件扩展


    大家一定遇到这样的情况,想改变一下SL的DataPager的显示信息,比如希望分页控件上显示数据的总数。那么就需要扩展一下DataPager控件即可。

      其实扩展DataPager很简单,只要获取到DataPager控件上的元素,然后再改变元素上数据。比如DataPager控件上显示“总页数”的元素是一个TextBlock,那么可以通过方法GetTemplateChild获取到,参数是元素的名称。然后通过重写方法OnApplyTemplate即可,下面请看代码

    代码
    
    Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> /// <summary>
        /// 扩展DataPager类,一是要显示总数据数有多少,二是修改TextBox的宽度
        /// </summary>
        public class ExtendDataPager : DataPager
        {
            //定义变量
            TextBlock tbCurrentPagePrefix;
            TextBlock tbCurrentPageSuffix;
            Button btnNextPageButton;
            Button btnFirstPageButton;
            Button btnLastPageButton;
            Button btnPreviousPageButton;
            TextBox txtCurrentPageTextBox;
    
            int _dataCount = 0;
    
            /// <summary>
            /// 取得数据总数
            /// </summary>
            public int DataCount
            {
                get { return _dataCount; }
                set { _dataCount = value; }
            }
    
            double _CurrentPageTextBoxWidth = 55;
    
            /// <summary>
            /// 显示当前页的TextBox的宽度,默认宽度为55
            /// </summary>
            public double CurrentPageTextBoxWidth
            {
                get { return _CurrentPageTextBoxWidth; }
                set { _CurrentPageTextBoxWidth = value; }
            }
    
    
            public ExtendDataPager():base()
            {
            
            }
    
            /// <summary>
            /// 重写  当应用新模板时生成 System.Windows.Controls.DataPager 控件的可视化树。
            /// </summary>
            public override void OnApplyTemplate()
            {
                base.OnApplyTemplate();
    
                //通过名称取得模板中的元素
                tbCurrentPagePrefix = GetTemplateChild("CurrentPagePrefixTextBlock") as TextBlock;
                tbCurrentPageSuffix = GetTemplateChild("CurrentPageSuffixTextBlock") as TextBlock;
                btnNextPageButton = GetTemplateChild("NextPageButton") as Button;
                btnFirstPageButton = GetTemplateChild("FirstPageButton") as Button;
                btnLastPageButton = GetTemplateChild("LastPageButton") as Button;
                btnPreviousPageButton = GetTemplateChild("PreviousPageButton") as Button;
                txtCurrentPageTextBox = GetTemplateChild("CurrentPageTextBox") as TextBox;
    
                //重写以下元素的事件
                btnNextPageButton.Click += new RoutedEventHandler(
                    (o, e) =>
                    {
                        ExtendItem();  
                    }
                    );
                btnFirstPageButton.Click += new RoutedEventHandler(
                    (o, e) =>
                    {
                        ExtendItem();
                    }
                    );
                btnLastPageButton.Click += new RoutedEventHandler(
                    (o, e) =>
                    {
                        ExtendItem();
                    }
                    );
                btnPreviousPageButton.Click += new RoutedEventHandler(
                    (o, e) =>
                    {
                        ExtendItem();
                    }
                    );
                txtCurrentPageTextBox.KeyDown += new KeyEventHandler(
                    (o, e) =>
                    {
                        ExtendItem();
                    }
                );
                ExtendItem();
            }
    
            /// <summary>
            /// 扩展项
            /// </summary>
            private void ExtendItem()
            {
                //重写以下元素显示的内容以及显示当前页的TextBox的宽度
                tbCurrentPagePrefix.Text = "";
                tbCurrentPageSuffix.Text = "页  共" + this.PageCount.ToString() + "页  共"+DataCount.ToString()+"条数据";
                txtCurrentPageTextBox.Width = CurrentPageTextBoxWidth;
            }
        }

    有人可能不知道怎么知道控件DataPager上元素的名称,比如"CurrentPagePrefixTextBlock",其实很简单,你只要查询DataPager元数据即可。

         通过上面的代码,就已经扩展了SL的控件DataPager,然后就可以像使用普通的DataPager一样使用,但是如果想要显示数据总数,必须向属性DataCount赋值。

         希望以上对大家有帮助。

    本文转自:http://www.cnblogs.com/888h/archive/2010/10/26/1861782.html

  • 相关阅读:
    Data Mining --- Information theory:熵/条件熵/互信息(信息增益)/交叉熵(相对熵/KL距离)
    Data Minig --- Decision Tree & ID3 & C4.5 & Gini Index
    Machine Learning --- Boosting & AdaBoost & Bootstrap
    Machine Learning --- Logistic Regression
    jpa动态创建EntityManagerFactory 态设置数据库连接 EntityManager;
    Spring+jpa+access
    关于JDBC 连接Access 数据库
    关于JPA封装数据库数据到实体不调用属性的get和set的方法解决办法
    JDBC和JPA调用储存过程 接收存储过程有返回值
    springMVC+JAP整合彻底摆脱persistence.xml配置文件
  • 原文地址:https://www.cnblogs.com/zxbzl/p/3875996.html
Copyright © 2020-2023  润新知