⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 databindsample.cs

📁 这是《ASP.NET编程实作教程》一书中的源文件 如果有此书的朋友不防下载过来参考
💻 CS
字号:
using System;
using System.Collections;
using System.Web;
using System.Web.UI;

namespace myControl {

    [
        ParseChildren(true)
    ]
    public class DataBindSample : Control, INamingContainer {

        private ITemplate   _itemTemplate   = null;
        private ICollection _dataSource     = null;

        public ICollection DataSource {
            get {
               return _dataSource;
            }
            set {
               _dataSource = value;
            }
        }

        [
            TemplateContainer(typeof(RepeatItem))
        ]
        public ITemplate ItemTemplate {
            get {
               return _itemTemplate;
            }
            set {
               _itemTemplate = value;
            }
        }

        protected override void AddParsedSubObject(object o) {
        }

        // 重载的CreateChildControls方法用于创建子控件
        protected override void CreateChildControls() {
            object o = ViewState["NumItems"];
            if (o != null) {
               // 清空Controls集合
               Controls.Clear();

               int numItems = (int)o;
               for (int i=0; i < numItems; i++) {
                  //创建重复的选项
                  RepeatItem item = new RepeatItem(i, null);
                  ItemTemplate.InstantiateIn(item);
                  // 在Controls集合中添加选项
                  Controls.Add(item);
               }
            }
        }

        // 重载以使用DataSource创建子控件
        protected override void OnDataBinding(EventArgs e) {
            base.OnDataBinding(e);

            if (DataSource != null) {
                Controls.Clear();
                // 删除已经有的视图状态
                ClearChildViewState();

                // 使用数据源来创建子控件
                IEnumerator dataEnum = DataSource.GetEnumerator();
                int i = 0;
                while(dataEnum.MoveNext()) {
                    RepeatItem item = new RepeatItem(i, dataEnum.Current);
                    
                    ItemTemplate.InstantiateIn(item);
                    
                    Controls.Add(item);

                    i++;
                }

                ChildControlsCreated = true;
                ViewState["NumItems"] = i;
            }
        }
    }
}

  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -