C#/DataSet:在XXXDataSet.cs中的DataSet的DataTable中创建并绑定自定义列/属性

C#/DataSet:在XXXDataSet.cs中的DataSet的DataTable中创建并绑定自定义列/属性,c#,datatable,dataset,C#,Datatable,Dataset,我有一个数据集,其中的DataTable具有列号和描述 我不想将这两个属性都绑定到绑定到2个控件的BindingSource 我想要的是数据表中的第三列,名为NumberDescription,这是一个组合 数量和描述。此属性仅绑定到1个控件/BindingSource的属性 不是2 有部分XXXDataSet.Designer.cs文件和部分XXXDataSet.cs文件。当然,我已经在XXXDataSet.cs文件中定义了公共字符串NumberDescription{get(在这里做一些检查

我有一个数据集,其中的DataTable具有列号和描述

我不想将这两个属性都绑定到绑定到2个控件的BindingSource

我想要的是数据表中的第三列,名为NumberDescription,这是一个组合

数量和描述。此属性仅绑定到1个控件/BindingSource的属性

不是2

有部分XXXDataSet.Designer.cs文件和部分XXXDataSet.cs文件。当然,我已经在XXXDataSet.cs文件中定义了公共字符串NumberDescription{get(在这里做一些检查;set(在这里也做一些检查)}

但所有这些都不会将我的新属性/列绑定到DataTable绑定到的BindingSource,因为数据集不知道新的列/属性

要使这个新属性/列为已知,我可以在DataSet designer视图中将一个新列添加到DataTAble中,命名为NumberDescription。至少我在BindingSource的列表中看到知道这个新属性,以便我可以选择它。但所有这些都没有帮助


那么如何正确地执行这些操作呢?我应该调用Number AND Description属性中的NumberDescription属性吗?

在类型化行类中创建自定义属性并将其用于数据绑定是不可能的。
您可以尝试自己实现
IListSource
IBindingList
ITypedList
,并返回
PropertyDescriptor
,但这将涉及大量的工作


相反,您可以通过为新项目创建列并设置其
Expression
属性来创建计算列。

是的……我也会建议使用表达式列。给出合理的概述是的,属性编号说明位于XXXDataSet.cs文件中的部分DataRow类中。因此,我在表达式中写入我的NumberDescription列的属性:Number+Description,对吗?但是我的新属性NumberDescription现在在哪里使用?问题是我不能马上将Number+Description作为一个列,因为我仍然需要对Number和Description进行一些null检查,并根据这些检查返回null或string.concat(数字+“”+描述)我真的需要那个“空字符…你可以在
表达式中完成所有这些操作
。这样你就不会自己创建属性了。thx bro工作得很好。数字+“”+描述在表达式中。