<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        TreeView創建IHierarchicalDataSource類型的數據源實現

        來源:懂視網 責編:小采 時間:2020-11-27 22:44:44
        文檔

        TreeView創建IHierarchicalDataSource類型的數據源實現

        TreeView創建IHierarchicalDataSource類型的數據源實現:IHierarchicalDataSource實現: public class InsHierarchyData : IHierarchyData, ICustomTypeDescriptor { private DataRowView item; private string dataParentIdField; private string dataI
        推薦度:
        導讀TreeView創建IHierarchicalDataSource類型的數據源實現:IHierarchicalDataSource實現: public class InsHierarchyData : IHierarchyData, ICustomTypeDescriptor { private DataRowView item; private string dataParentIdField; private string dataI

        IHierarchicalDataSource實現:
        public class InsHierarchyData : IHierarchyData, ICustomTypeDescriptor
        {
        private DataRowView item;
        private string dataParentIdField;
        private string dataIdField;
        private string displayField;
        public InsHierarchyData(string dataParentIdField, string dataIdField,string displayField, DataRowView item)
        {
        this.item = item;
        this.dataParentIdField = dataParentIdField;
        this.dataIdField = dataIdField;
        this.displayField = displayField;
        }
        bool IHierarchyData.HasChildren
        {
        get
        {
        foreach (DataRowView row in item.DataView)
        {
        object[] array1 = row.Row.ItemArray;
        object[] array2 = item.Row.ItemArray;
        string a = row[dataParentIdField].ToString();
        string b = item[dataIdField].ToString();
        if (a == b)
        return true;
        }
        return false;
        }
        }
        object IHierarchyData.Item
        {
        get
        {
        return item;
        }
        }
        public override string ToString()
        {
        return item[displayField].ToString();
        }
        string IHierarchyData.Path
        {
        get
        {
        string path = "/*[position()=1]";
        GetPath(item, ref path);
        return path;
        }
        }
        void GetPath(DataRowView crow, ref string path)
        {
        foreach (DataRowView row in item.DataView)
        {
        string c, d;
        c = crow.Row.ItemArray[2].ToString();
        d = crow.Row.ItemArray[0].ToString();
        string a = crow[dataParentIdField].ToString();
        string b = row[dataIdField].ToString();
        if (a == b)
        {
        path = "/*[position()=1]" + path;
        }
        }
        }
        string IHierarchyData.Type
        {
        get { return displayField; }
        }
        IHierarchicalEnumerable IHierarchyData.GetChildren()
        {
        InsHierarchicalEnumerable children = new InsHierarchicalEnumerable();
        foreach (DataRowView row in item.DataView)
        {
        string a = row[dataParentIdField].ToString();
        string b = item[dataIdField].ToString();
        if (a == b)
        children.Add(new InsHierarchyData(dataParentIdField, dataIdField,displayField, row));
        }
        return children;
        }
        IHierarchyData IHierarchyData.GetParent()
        {
        foreach (DataRowView row in item.DataView)
        {
        string a = item[dataParentIdField].ToString();
        string b = row[dataIdField].ToString();
        if (a == b)
        return new InsHierarchyData(dataParentIdField, dataIdField,displayField, row);
        }
        return null;
        }
        System.ComponentModel.AttributeCollection ICustomTypeDescriptor.GetAttributes()
        {
        return TypeDescriptor.GetAttributes(this, true);
        }
        string ICustomTypeDescriptor.GetClassName()
        {
        return TypeDescriptor.GetClassName(this, true);
        }
        string ICustomTypeDescriptor.GetComponentName()
        {
        return TypeDescriptor.GetComponentName(this, true);
        }
        TypeConverter ICustomTypeDescriptor.GetConverter()
        {
        return TypeDescriptor.GetConverter(this, true);
        }
        EventDescriptor ICustomTypeDescriptor.GetDefaultEvent()
        {
        return TypeDescriptor.GetDefaultEvent(this, true);
        }
        PropertyDescriptor ICustomTypeDescriptor.GetDefaultProperty()
        {
        return TypeDescriptor.GetDefaultProperty(this, true);
        }
        object ICustomTypeDescriptor.GetEditor(Type editorBaseType)
        {
        return TypeDescriptor.GetEditor(this, editorBaseType, true);
        }
        EventDescriptorCollection ICustomTypeDescriptor.GetEvents(Attribute[] attributes)
        {
        return TypeDescriptor.GetEvents(this, attributes, true);
        }
        EventDescriptorCollection ICustomTypeDescriptor.GetEvents()
        {
        return TypeDescriptor.GetEvents(this, true);
        }
        PropertyDescriptorCollection ICustomTypeDescriptor.GetProperties(Attribute[] attributes)
        {
        PropertyDescriptorCollection pds = TypeDescriptor.GetProperties(item);
        if (pds.Count > 0)
        {
        List<InsHierarchyDataPropertyDescriptor> list = new List<InsHierarchyDataPropertyDescriptor>();
        foreach (PropertyDescriptor pd in pds)
        {
        list.Add(new InsHierarchyDataPropertyDescriptor(pd.Name));
        }
        InsHierarchyDataPropertyDescriptor[] arr = new InsHierarchyDataPropertyDescriptor[list.Count];
        list.CopyTo(arr);
        return new PropertyDescriptorCollection(arr);
        }
        return PropertyDescriptorCollection.Empty;
        }
        PropertyDescriptorCollection ICustomTypeDescriptor.GetProperties()
        {
        return ((ICustomTypeDescriptor)this).GetProperties(null);
        }
        object ICustomTypeDescriptor.GetPropertyOwner(PropertyDescriptor pd)
        {
        if (pd is InsHierarchyDataPropertyDescriptor)
        {
        return this;
        }
        return null;
        }
        }
        public class InsHierarchyDataPropertyDescriptor : PropertyDescriptor
        {
        private string name;
        public InsHierarchyDataPropertyDescriptor(string name)
        : base(name, null)
        {
        this.name = name;
        }
        public override string Name
        {
        get { return name; }
        }
        public override Type ComponentType
        {
        get
        {
        return typeof(InsHierarchyData);
        }
        }
        public override bool IsReadOnly
        {
        get
        {
        return true;
        }
        }
        public override Type PropertyType
        {
        get
        {
        return Type.GetType("System.String");
        }
        }
        public override bool CanResetValue(object o)
        {
        return false;
        }
        public override object GetValue(object o)
        {
        InsHierarchyData shd = o as InsHierarchyData;
        if (shd != null)
        {
        IHierarchyData hd = (IHierarchyData)shd;
        string subject = ((DataRowView)(hd.Item))[name].ToString();
        return subject;
        }
        return null;
        }
        public override void ResetValue(object o)
        {
        throw new NotSupportedException();
        }
        public override void SetValue(object o, object value)
        {
        throw new NotSupportedException();
        }
        public override bool ShouldSerializeValue(object o)
        {
        return true;
        }
        public override TypeConverter Converter
        {
        get { return TypeDescriptor.GetConverter(typeof(System.String)); }
        }
        }
        public class InsHierarchicalEnumerable : ArrayList, IHierarchicalEnumerable
        {
        IHierarchyData IHierarchicalEnumerable.GetHierarchyData(object enumeratedItem)
        {
        return (InsHierarchyData)enumeratedItem;
        }
        }
        public class InsHierarchicalDataSourceView : HierarchicalDataSourceView
        {
        string viewPath;
        InsTreeViewDataSource owner;
        public InsHierarchicalDataSourceView(InsTreeViewDataSource owner, string viewPath)
        {
        this.viewPath = viewPath;
        this.owner = owner;
        }
        public override IHierarchicalEnumerable Select()
        {
        //DataView dv = (DataView)this.owner.Select(DataSourceSelectArguments.Empty);
        DataView dv = (DataView)this.owner.DataView;
        InsHierarchicalEnumerable data = new InsHierarchicalEnumerable();
        bool hasParent = false;
        foreach (DataRowView crow in dv)
        {
        object[] array1 = crow.Row.ItemArray;
        hasParent = false;
        foreach (DataRowView prow in dv)
        {
        object[] array2 = prow.Row.ItemArray;
        //子節點
        string a = crow[owner.DataParentIdField].ToString();
        //根節點
        string b = prow[owner.DataIdField].ToString();
        if (a == b)
        {
        hasParent = true;
        break;
        }
        }
        //添加根節點
        if (!hasParent)
        data.Add(new InsHierarchyData(owner.DataParentIdField, owner.DataIdField, owner.DisplayField, crow));
        }
        return data;
        }
        }
        public class InsTreeViewDataSource : IHierarchicalDataSource
        {
        private InsHierarchicalDataSourceView view = null;
        private string parentIdField;
        private string idField;
        private DataTable dataSource;
        private string displayField;
        public InsTreeViewDataSource(string parentIdField, string idField, string displayField,DataTable dataSource)
        {
        this.parentIdField = parentIdField;
        this.idField = idField;
        this.displayField = displayField;
        this.dataSource = dataSource;
        }
        public DataView DataView
        {
        get
        {
        return this.dataSource.DefaultView;
        }
        }
        HierarchicalDataSourceView IHierarchicalDataSource.GetHierarchicalView(string viewPath)
        {
        if (null == this.view)
        this.view = new InsHierarchicalDataSourceView(this, viewPath);
        return this.view;
        }
        public string DataParentIdField
        {
        get { return parentIdField; }
        set { parentIdField = value; }
        }
        public string DataIdField
        {
        get { return idField; }
        set { idField = value; }
        }
        public string DisplayField
        {
        get { return displayField; }
        set { displayField = value; }
        }
        public event EventHandler DataSourceChanged;
        }
        客戶端代碼:
        DataTable dt = null;//自定義數據源
        InsTreeViewDataSource dataSource = new InsTreeViewDataSource("Parent_Id", "ID", "FULL_NAME", dt);
        this.itvTree.DataSource = dataSource;
        this.itvTree.DataBind();

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        TreeView創建IHierarchicalDataSource類型的數據源實現

        TreeView創建IHierarchicalDataSource類型的數據源實現:IHierarchicalDataSource實現: public class InsHierarchyData : IHierarchyData, ICustomTypeDescriptor { private DataRowView item; private string dataParentIdField; private string dataI
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 丁香花在线观看免费观看图片 | caoporm碰最新免费公开视频| 成年人性生活免费视频| 亚洲成年人电影在线观看| 8x8×在线永久免费视频| 亚洲制服丝袜一区二区三区| 色影音免费色资源| 亚洲欧洲综合在线| 欧洲黑大粗无码免费| 亚洲乱色伦图片区小说| 国产成人亚洲综合色影视| 国产综合免费精品久久久| 亚洲AV无码成人精品区蜜桃| 99久久国产精品免费一区二区| 亚洲精品无码久久久久去q| 久久亚洲精品无码网站| 免费人成网站7777视频| a毛片免费全部在线播放**| 亚洲最新视频在线观看| 欧洲乱码伦视频免费| 久久亚洲精品成人综合| 三年片在线观看免费大全电影| 亚洲午夜电影一区二区三区| 免费做爰猛烈吃奶摸视频在线观看 | 亚洲综合精品伊人久久| 亚洲 自拍 另类小说综合图区| 一级毛片免费播放试看60分钟| 最近高清国语中文在线观看免费| 亚洲综合色丁香婷婷六月图片| 亚洲成年人免费网站| 亚洲欧美成aⅴ人在线观看| 亚洲高清偷拍一区二区三区| 久久精品国产大片免费观看| 亚洲伊人久久大香线蕉影院| 免费欧洲美女牲交视频| 无码av免费网站| 日韩亚洲人成在线综合| 亚洲第一福利视频| 国产成人3p视频免费观看| 久久久久成人精品免费播放动漫| 亚洲日韩一区二区一无码|