【问题标题】:Complex databinding to DataGridView header text到 DataGridView 标题文本的复杂数据绑定
【发布时间】:2009-01-21 03:49:54
【问题描述】:

有没有办法将复杂的数据绑定到列的标题文本?还是手动设置值并从源侦听更改事件的唯一方法?

为了记录,我都试过了

MyDataGrid.DataBindings.Add("Columns[<columnIndex>].HeaderText",MySource,"MyProperty");

MyDataGrid.DataBindings.Add("Columns[\"ColumnName\"].HeaderText",MySource,"MyProperty");

无济于事,DataGridViewColumnDataGridViewColumnHeaderCell 都没有 DataBindings 属性。

【问题讨论】:

  • 你将 DataGridView 绑定到什么?如果将其绑定到 DataTable,然后更改底层 DataTable 的列名,它会自动更新 DataGridView 上的列。
  • 我正在绑定一个 DataTable,但这并不是我想要的。首先,我的标题有空格,但问题是标题会根据另一个表而改变。无论哪种方式,我都必须听取更改并更新文本(我无法将 DataTable 列标题绑定到某些东西,对吧?)。

标签: .net winforms data-binding datagridview


【解决方案1】:

不,列标题不支持数据绑定,因为据了解,此元数据将(大部分)是静态的。

在这种情况下,我会按照您的建议手动执行(从属性读取并订阅事件以更新列标题)。

对于更复杂的需求(仅出于完整性考虑),如果您编写自己的 PropertyDescriptor 实现,可以通过 TypeDescriptionProviderITypedList 公开 - 或者更好的是 IBindingList 实现,您可以在其中获得更多控制权引发ListChanged 类型为ListChangedType.PropertyDescriptorChanged 的事件;然而,其中任何一项都是大量的工作,而且仅仅因为你的建议是不值得的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-02
    • 2015-01-05
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 2012-07-10
    相关资源
    最近更新 更多