【问题标题】:Databinding with a custom object to datagridview - Column Header Text使用自定义对象将数据绑定到 datagridview - 列标题文本
【发布时间】:2010-11-02 02:06:57
【问题描述】:

我有一个绑定到 DataGridView 的对象列表 (PrintJob)。这是 PrintJob 对象的缩减版(不想让你完全无聊!!):

public class PrintJob 
{
        private long pagesToPrint;
        public long PagesToPrint
        {
            get { return pagesToPrint; }
        }

        private long recipientRef;
        public long RecipientRef
        {
            get { return recipientRef; }
            set { recipientRef = value; }
        }
}

然后我列出这些对象并像这样绑定到 dataGridView:

dataGridView1.DataSource = uiModel.GetPrintJobs();

到目前为止一切顺利吗?

除列标题外,所有内容都显示良好 - 它与我的对象中的属性名称完全相同,即“PagesToPrint”出现在列标题中,理想情况下,我希望它在标题文本中显示“要打印的页面” .

如何让列标题文本显示更易读的内容 - 我猜是基于属性名称。

干杯。

【问题讨论】:

    标签: c# data-binding datagridview


    【解决方案1】:

    是的,您可以将设计器与绑定的数据源一起使用。只需在设计器中设置每一列的“DataPropertyName”属性值即可。

    例如...对于第 1 列,“DataPropertyName”属性值将是“PagesToPrint”,而“HeaderText”属性将是您希望显示为列标题的实际文本(“要打印的页面”?)。

    【讨论】:

      【解决方案2】:
       [DisplayName("Pages to print")]
       public long PagesToPrint {...}
      

      等(代码文件顶部带有using System.ComponentModel;

      【讨论】:

      • 你还能用属性预设列宽之类的东西吗?
      • 不,你不能。你可以控制一些东西,比如类型转换器(用于渲染和解析值),但仅此而已。
      • (对不起最后一个问题)我可以绑定到我已经使用设计器设置的列吗?
      • 我不完全理解这个问题;但如果 设计者 已经添加了列,则不会使用 [DisplayName]。如果您使用 AutoGenerateColumns,它们将是(我相信 new 设计师使用会选择 [DisplayName])。但是,如果您想要一种可以针对 DataGridView 运行的方法来修复列标题,那么自动化并不难(如果您需要这个,请告诉我 - 我猜 10 行)。
      • 嗨 - 抱歉刚从意大利的霍尔斯回来。我的意思是 - 我已经按照我喜欢使用 VS 表单设计器的顺序和格式设置了列。我只是想知道您是否可以绑定到这些手动创建的列-我猜您将不得不为 dataGridView 使用 ColumnAdded 事件并做一些诡计多端的操作-不确定所有这些是否首先否定了数据绑定的好处地方 ???干杯。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多