2009-11-11 53 views
2

我創造了我的項目的一些實體(類),我想設置默認爲它暴飲暴食財產,這裏有一個例子從類屬性獲取綁定值,DefaultBindingProperty不適合我!

namespace MyNamespace 
{ 
    [System.ComponentModel.DefaultBindingProperty("Name")] 
    public class Person 
    { 
     public int ID { get; set; } 
     public string Name { get; set; } 
     public int Gender { get; set; } 
    } 

    public class Family 
    { 
     public int ID { get; set; } 
     public Person Father { get; set; } 
    } 
} 

如果我有List<Family>,並希望將其綁定到一個GridView和增加了這個字段<asp:BoundField DataField="Father" />結果將是MyNamespace.Person但我需要它填充物業的價值Name而不使用TemplateField所以我錯過了什麼?或DefaultBindingProperty是不是正確的屬性?

回答

2

問題是屬性Father是類型PersonPerson值沒有明顯的字符串表示形式,因此將顯示類型的名稱。嘗試覆蓋ToString方法以顯示您想要的內容:

public class Person 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public int Gender { get; set; } 
    public override string ToString() 
    { 
     return Name; 
    } 
} 
+0

我工作,謝謝。 所以DefaultBindingProperty與此無關,那麼DefaultBindingProperty的用途是什麼? – 2009-11-11 14:15:17

+0

我的解釋是,'DefaultBindingProperty'的預期用法就是這樣,但是由於某種原因控件不使用這些信息。 – 2009-11-11 15:18:26

+0

謝謝Fredrik :) – 2009-11-16 12:07:55