2011-12-02 53 views
0

讓我們這些類:如何在c#中的gridview固定字段和動態列表中顯示?

public class MyObject 
{ 
    //constructor and other stuff 
    public bool MyBool { get; set; } 
    public string MyString { get; set; } 
    public double MyDouble { get; set; } 
    ... 
    public List<MyProperty> Properties { get; set; } 
} 

public class MyProperty 
{ 
    //constructor and other stuff 
    public Type TheType { get; set; } 
    public String Name { get; set; } 
    public Object Value { get; set; } 
} 

在窗體我將填充值:

MyObject myObject = new MyObject(true, "Foo", 12); 
MyObject myObject2 = new MyObject(false, "Bar", 16); 

myObject.Properties.Add(new MyProperty(typeof(double),"Amount",2000)); 
myObject.Properties.Add(new MyProperty(typeof(string),"Name","Ale")); 

//in the same order, with the same type and name 
//only the values are different 
myObject2.Properties.Add(new MyProperty(typeof(double),"Amount",3000)); 
myObject2.Properties.Add(new MyProperty(typeof(string),"Name","Teru")); 

List<MyObject> list = new List<MyObject>(); 

list.Add(myObject); 
list.Add(myObject2); 

現在的問題是:我怎麼能顯示固定字段和動態的定義的屬性單個datagridview? 最終的結果應該是這樣的:

MyBool | MyString | MyDouble | Amount | Name 
true | Foo  | 12  | 2000 | Ale 
false | Bar  | 16  | 3000 | Teru 

任何意見或暗示的歡迎。

回答

0

,我們沒有人能夠做到這一點是使用第三方網格控件,使我們能夠在運行時定義列和填充在一行一行地的基礎這些列中的值的唯一方法。我沒有用標準網格試過,但希望同樣的原則適用。

基本上,在運行時其過程是:

1)使用固定屬性添加標準列並將它們數據綁定到底層屬性。

2)添加需要顯示動態屬性的列,但不進行數據綁定他們。

3)在顯示,對於每一行,從移動基礎記錄內容,存入行。

4)在保存,對於每一行,移動從該行的內容回記錄。

雖然這聽起來像一個大量的工作,一旦你擁有了它弄明白了,它也很容易。

相關問題