gpt4 book ai didi

c# - 将自定义列表属性绑定(bind)到 DatagridView

转载 作者:行者123 更新时间:2023-11-30 12:16:20 25 4
gpt4 key购买 nike

我有一个很难解释的问题。本质上,我有一个我们可以称为 MyObj 的特定类的列表。该对象的属性之一是自定义列表本身。我想将此 List 绑定(bind)到 dataGridView 并显示这个也是列表的特定属性。有任何想法吗?我够清楚吗? :-P..

这是一个想法。我有自己的自定义列表对象来覆盖 ToString() 方法:

public class CategoriesList : List<Category>  
{
public override string ToString()
{...}
}

这用作对象中的属性,例如:

public MyObj  
{
public string Property1 {get; set; }
public string Property2 {get; set; }
public CategoriesList Categories {get; set; }
}

反过来,我有这些对象的列表,例如:

List<MyObj> myDataSouce = SomeRepository.GetMyObjList(); 

我将它绑定(bind)到数据 GridView 的地方:

MyDataGridView.DataSource = myDataSource; 

Property1 和 Property2 是自动生成的。有什么办法也可以添加 CategoriesList 属性吗?我以前认为重写类上的 ToString() 方法就足够了..

我真的迷失在这个问题上,因为我什至不知道如何用谷歌搜索它:-P

最佳答案

假设您想要在数据 GridView 中显示一个特定的值来代替列表,您将需要使用自定义类型转换器。否则,您需要在支持列表的 datagridview 列中放置一个控件,例如下拉列表并绑定(bind)到它。

对于前者:

基本上用自定义类型转换器装饰您的类别属性:

[TypeConverter(typeof(MyConverter))] 
public CategoriesList Categories { get; set; }

然后使用一个自定义类型转换器,基本上告诉数据网格当它遇到类别属性时显示什么:

public class MyConverter : TypeConverter
{

public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
if (value is CategoriesList) {
return value.ToString();
}
return base.ConvertFrom(context, culture, value);
}
}

您需要通过添加一个未绑定(bind)的列来手动添加要进行数据绑定(bind)的列,并为要映射到该列的属性指定 DataPropertyName,在本例中为“类别”

如果您也希望显示二级属性,那么这可能会有所帮助: http://blogs.msdn.com/b/msdnts/archive/2007/01/19/how-to-bind-a-datagridview-column-to-a-second-level-property-of-a-data-source.aspx

关于c# - 将自定义列表属性绑定(bind)到 DatagridView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5579170/

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