gpt4 book ai didi

data-binding - 自定义 DataGridView 列中多个字段的自定义绑定(bind)(WinForms)

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

我对自定义 DataGridViewColumn 的数据绑定(bind)(多个属性)有疑问。这是我拥有的控件的架构,我需要使其可与 DataGridView 数据源绑定(bind)。任何想法或指向讨论此事的文章的链接?

控件

  • Graph Control(custom): 显示在自定义 DataGridView 列。拥有诸如“开始日期”之类的属性,“结束日期”,Windows 图表控件,它本身是可绑定(bind)的,等等。
  • 自定义单元格(DataGridViewCustomCell 继承来自 DataGridViewCell)图形控制和处理一些事件(OnEnter 事件,例如,将焦点传递给自定义图形拖放类型的列事件等)
  • 自定义列(DataGridViewCustomColumn继承自 DataGridViewColumn)定义了单元格模板类型:单元格模板 = 新DataGridViewCustomCell();还有一个数据绑定(bind)的主要选择

数据结构:

  • 要在其他 DataGridView 列中显示的主表
  • 图表 - 通过父子关系与主表相关。保存图形数据
  • 图表通过父子关系与图表相关。保存 win-form 图表的数据,它是我的 Graph 控件的一部分。

到目前为止,我什至无法将图表表中的数据绑定(bind)到图表控件或包含图表的列/单元格。

最佳答案

谢谢您的回答。我的数据源不是 SQL 数据源,事实上我在谈论 win-forms 的 datagridview(我不确定是否清楚)。

由于我在提出问题的任何论坛上都没有得到回复,所以我想,我会概述一个我想出的解决方案,以供那些可能有类似问题的人和可能的批评者使用。 :-)

(步骤 1-2 在著名的 MS 示例中也有说明)1.创建自己的继承自DataGridViewColumn和DataGridViewCell的类,设置列模板;2. 创建你的“CustomEdit”控件

  1. 在数据项中,无论是 DataRow 还是 List 项,添加一个返回对象本身的只读属性。此属性绑定(bind)到自定义列。

自定义单元格:

public partial class MyCell : DataGridViewCell 
{
protected override void Paint(...)
{...} // draws control
// receives data item as a value
// in my case I have to custom-draw entire control in this fnc.
public override void InitializeEditingControl(...)
{...} // initialize control editing
// override some other properties
public override Type EditType {
get{
return typeof(MyEditControl);
}
}
public override Type ValueType{
get{
return typeof(MyItem);
}
}
}

自定义列:

public partial class MyColumn : DataGridViewColumn
{
public MyColumn(){ ...
CellTemplate = new MyCell();
}
}

编辑控件:

public partial class MyEditControl : UserControl, IDataGridViewEditingControl
{... // implements IDataGridViewEditingControl
// value is our data item
}

Data Item,数据源变成List

public class MyItem:Object{
...
[XmlIgnore] // I need it because I do serialization
public MyItem Self {
get {
return this;
}
}
}

关于data-binding - 自定义 DataGridView 列中多个字段的自定义绑定(bind)(WinForms),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/390584/

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