我有一组"动态数据",我需要绑定到GridControl.到目前为止,我一直在使用标准的DataTable类,它是System.Data命名空间的一部分.这工作得很好,但我被告知我不能使用它,因为它对于客户端和服务器之间的网络序列化太重了.
所以我认为我可以通过简单地使用List<Dictionary<string, object>>List表示行集合的类型来轻松复制DataTable类的"简化"版本,并且每个Dictionary表示一行,其中列名称和值为KeyValuePair类型.我可以设置Grid以使列DataField属性与Dictionary中的键匹配(就像我为DataTable的列名所做的那样).
但是做完之后
gridControl.DataSource = table;
gridControl.RefreshDataSource();
Run Code Online (Sandbox Code Playgroud)
网格没有数据......
我想我需要实施IEnumerator- 对此的任何帮助都将不胜感激!
示例调用代码如下所示:
var table = new List<Dictionary<string,object>>();
var row = new Dictionary<string, object>
{
{"Field1", "Data1"},
{"Field2", "Data2"},
{"Field3", "Data3"}
};
table.Add(row);
gridControl1.DataSource = table;
gridControl1.RefreshDataSource();
Run Code Online (Sandbox Code Playgroud) 我有一个以特定方式实现属性的类,以处理业务逻辑系统的一些自定义需求.
这种"特定方式"使得属性在数据绑定的上下文中不可操作.基本上,如果我将类的对象放到表单上,数据绑定在对象上找不到任何内容,并且该对象的属性检查器虽然列出了属性,但不允许我编辑它们.
我想知道的是,如果有一个接口或类似的东西,我可以在我的类中实现,它将向表单设计器报告可以绑定的属性,并实现代表数据绑定系统所需的自定义代码.我的财产.
请注意,我不需要在属性检查器中编辑对象的属性值,这只是属性非功能性的一个示例.我只需要数据绑定支持.
是否有这样的界面,如果是这样,它是什么?
我们举一个简单的例子.
我们假设我有这门课程:
public class CustomDataBinding : Component
{
private Dictionary<String, Object> _Properties = new Dictionary<String, Object>();
public CustomDataBinding()
{
_Properties["Property1"] = 10;
_Properties["Property2"] = "Test";
}
}
Run Code Online (Sandbox Code Playgroud)
有没有什么我可以对我的对象做什么,没有实际制作属性,这将为这两个"属性"添加数据绑定支持?
请注意,对于我的真实类,我知道每个属性的类型,因此如果它更容易,请将上面的代码更改为仅使用字符串值:
public class CustomDataBinding : Component
{
private Dictionary<String, String> _Properties = new Dictionary<String, String>();
public CustomDataBinding()
{
_Properties["Property1"] = "Property1";
_Properties["Property2"] = "Property2";
}
}
Run Code Online (Sandbox Code Playgroud)
我还需要验证支持,因为我们的类也可以报告每个属性的验证状态,但我已经实现了IDataErrorInfo和IDataValidationInfo,我认为它会给我这个.我也实现了INotifyPropertyChanged,所以我想到了改变机制,但我需要发现并与属性交谈.除了这些接口之外,我应该研究的任何其他内容都是受欢迎的信息.