2016-08-29 1 views
1

C# DataTable에는 PropertyCollection ExtendedProperties이 있습니다. 그 테이블에있는 DataColumn에도 ExtendedProperties이 있습니다. 왜 DataRow에 없는가? 나는 여러 테이블이 있고 뷰에 사용되는 일부 메타 데이터를 추가하려면DataRow에서 ExtendedProperties를 사용하는 방법

따라서, 예를 들어, 나는 이런 식으로 뭔가를 할 수 : 나는 또 다른 수준을 가서 할 수있는 방법

tbl.ExtendedProperties["class"] = "pandas"; 
tbl.Columns["name"].ExtendedProperties["class"] = "highlighted"; 

tbl.Rows[0].ExtendedProperties["class"] = "highlighted"; 

답변

1

같은 것을 할 수 있습니다 파생 된 DataRow의 버전 및 DataTable을

[Serializable] 
public class CustomDataTable : DataTable 
{ 
    public CustomDataTable() 
     : base() 
    { 
    } 

    public CustomDataTable(string tableName) 
     : base(tableName) 
    { 
    } 

    public CustomDataTable(string tableName, string tableNamespace) 
     : base(tableName, tableNamespace) 
    { 
    } 

    protected override Type GetRowType() 
    { 
     return typeof (CustomDataRow); 
    } 

    protected override DataRow NewRowFromBuilder(DataRowBuilder builder) 
    { 
     return new CustomDataRow(builder); 
    } 
} 

[Serializable] 
public class CustomDataRow : DataRow 
{ 
    public Dictionary<string, object> _extendedProperties = new Dictionary<string, object>(); 

    public Dictionary<string, object> ExtendedProperties { 
     get { return _extendedProperties; } 
    } 

    public void SetAttribute(string name, object value) 
    { 
     ExtendedProperties.Add(name, value); 
    } 

    public CustomDataRow() 
     : base(null) 
    { 
    } 

    public CustomDataRow(DataRowBuilder builder) 
     : base(builder) 
    { 
    } 
} 
를 만들어보십시오
관련 문제