在datagridview中将对象列表绑定到单元格

时间:2017-10-03 20:44:35

标签: c# winforms datagridview formatting entity-framework-6

我正在尝试在datagridview单元格中表示我的实体框架中的对象列表。

为了显示它我将覆盖cellFormatting事件并将单元格中的值设置为以逗号分隔的对象的id列表。

现在,如果用户想要编辑该单元格,那么我需要对输入做一些事情。

我想的是覆盖Cellparsing并在那里设置数据结构中的正确对象,并使单元格显示。但是,单元格只是空白,因为我无法在没有控件抛出强制转换异常的情况下看到设置其内容的位置。我可以再次调用格式化事件吗?

我是否应该忘记这种方法,并在代码中有另一个层,它输出一个视图,可以将所有这些绑定到datagrid?

三江源。

'something'

2 个答案:

答案 0 :(得分:0)

(1)不要在单元格格式化事件中做它昂贵的。首先格式化数据然后显示

(2)现在,如果用户想要编辑并且您想要格式化数据。然后使用belo事件来跟踪编辑

  private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
    {
        // here check for formatting.
    }

答案 1 :(得分:0)

如果我在绑定之前格式化数据,我将不得不创建另一个对象,如简单属性的视图,因此它是我将展示的所有复杂实体的另一层对象。我不能只在它们上面使用一个简单的linq表达式,因为它使用了非同类对象(任何其他方式?),这意味着这些列是只读的。

现在处理编辑过的数据我不知道在endEdit中放什么。我无法从单元格中获取字符串并转换回对象,它仍然会在管道的pushValue部分抛出无效的强制转换异常。我在哪里将字符串转换回对象?