gpt4 book ai didi

c# - 是否可以将复杂类型属性绑定(bind)到数据网格?

转载 作者:IT王子 更新时间:2023-10-29 04:40:36 26 4
gpt4 key购买 nike

我将如何将以下对象 Car 绑定(bind)到 gridview?

public class Car{   long Id {get; set;}   Manufacturer Maker {get; set;}}public class Manufacturer{   long Id {get; set;}   String Name {get; set;}}

基本类型很容易绑定(bind),但我找不到为 Maker 显示任何内容的方法。我想让它显示 Manufacturer.Name。有可能吗?

有什么方法可以做到这一点?我是否也必须将 ManufacturerId 存储在 Car 中,然后设置一个包含制造商列表的 lookupEditRepository?

最佳答案

好吧,伙计们...这个问题已经回复了,但我只是找到了一种相当不错且简单的方法,通过在 cell_formatting 事件中使用反射来检索嵌套属性。

是这样的:

    private void Grid_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{

DataGridView grid = (DataGridView)sender;
DataGridViewRow row = grid.Rows[e.RowIndex];
DataGridViewColumn col = grid.Columns[e.ColumnIndex];
if (row.DataBoundItem != null && col.DataPropertyName.Contains("."))
{
string[] props = col.DataPropertyName.Split('.');
PropertyInfo propInfo = row.DataBoundItem.GetType().GetProperty(props[0]);
object val = propInfo.GetValue(row.DataBoundItem, null);
for (int i = 1; i < props.Length; i++)
{
propInfo = val.GetType().GetProperty(props[i]);
val = propInfo.GetValue(val, null);
}
e.Value = val;
}
}

就是这样!您现在可以在列的 DataPropertyName 中使用熟悉的语法“ParentProp.ChildProp.GrandChildProp”。

关于c# - 是否可以将复杂类型属性绑定(bind)到数据网格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/121274/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com