Sur*_*esh 5 c# binding devexpress xtragrid
通过将每列的FieldName设置为基础类中的属性名称,可以轻松地将XtraGrid控件绑定到类.我们现在遇到了一种情况,我们希望在嵌套在底层类中的类中显示数据.
即我们有一个"User"类,其中包含一个名为"Address"的属性,这是另一个名为"Address"的类.在地址内是街道,城市等属性.
我们希望在网格上显示UserName(来自User类)和Street(来自Address类).这可能吗?
请注意,Address不是List,它是嵌套在User类中的类.
我们已经尝试将网格列FieldName设置为"Address.Street",但是这不能用于拾取数据.我希望这是可能的,这似乎是不支持的基本特征.
是的你可以.添加未绑定列并处理CustomUnboundColumnData事件.
未绑定的列.
http://documentation.devexpress.com/#WindowsForms/CustomDocument1477
CustomUnboundColumnData
http://documentation.devexpress.com/#WindowsForms/DevExpressXtraGridViewsBaseColumnView_CustomUnboundColumnDatatopic
小智 2
假设您的代码中有以下类。
1)地址类
public class Address {
public string Street { get; set; }
public string City { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
2)用户类别
public class User {
public string UserName { get; set; }
public Address UserAddress { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在,您想要将列 Street 绑定到属性 User.Address.Street,不幸的是,仅将 FieldName 设置为“Address.Street”是行不通的
但是,如果按照您想要的方式完成它很重要,我建议您重写 Address 类的 ToString() 方法,如下所示:
public class Address {
public string Street { get; set; }
public string City { get; set; }
//Override ToString() method
public override string ToString() {
return this.Street;
}
}
Run Code Online (Sandbox Code Playgroud)
然后,将字段名称设置为“Address”,而不是“Address.Street”,这应该可以解决问题。
另一种方法是在 User 类中添加另一个名为 UserStreet 的只读属性:
public class User {
public string UserName { get; set; }
public Address UserAddress { get; set; }
public UserStreet {
get { return UserAddress != null ? UserAddress.Street : ""; }
}
}
Run Code Online (Sandbox Code Playgroud)
然后将 FieldName 设置为“UserStreet”。
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
8593 次 |
| 最近记录: |