【问题标题】:Datagridview Combobox Column not displaying select combobox valueDatagridview 组合框列不显示选择组合框值
【发布时间】:2013-12-08 05:32:04
【问题描述】:

我使用的是普通的 Datagridview,但我遇到了问题。
这样我在我的网格中填充数据并向其中添加组合框列

db.DataEntities ss = new db.DataEntities();
DataGridview1.DataSource = ss.table1.ToList();

if (!DataGridview1.Columns.Contains("dgcolUser"))
{
    DataGridViewComboBoxColumn dgcombocolUser = new DataGridViewComboBoxColumn();
    dgcombocolUser.Name = "dgcolUser";

    var listOfAllUsers = ss.secAccountInformations.ToList();
    dgcombocolUser.DataSource = listOfAllUsers;
    dgcombocolUser.DisplayMember = "AccountName";
    dgcombocolUser.ValueMember = "UserId";
    DataGridview1.Columns.Add(dgcombocolUser);
}

foreach ( DataGridViewRow dgr in DataGridview1.Rows)
{
    dgr.Cells["dgcolUser"].Value = dgr.Cells["PermittedUserId"].Value;
}

我在 MDI 父级中打开此表单

Form1 frm = new Form1() { MdiParent = MdiForm1};
frm.Show();

当我打开我的表单时,它没有在 Comboboxcolumn 中显示任何选定的值 但是当我打开我的 Form frm1 而不是 MdiParent 时,它会在 Comboboxcolumn 中显示选定的值

Form1 frm = new Form1();
frm.Show();

这真的会发生吗,因为当我在没有 MdiParnet 的情况下显示我的表单时它会显示数据,或者是否有任何其他原因导致它没有发生
请给我更好的建议.. 因为没有 MdiParent 显示表单不是有效的解决方案。

【问题讨论】:

  • 无法重现;这听起来也不太合乎逻辑。观察这两种不同行为的最可能原因是,其中一种行为未达到 foreach 循环(之前发生过崩溃)。调试代码并确认是这种情况。如果仍然看不到问题,请提供更清晰的信息:编写整个代码(如果您发布的 3 个 sn-ps 之间还有更多),确认您的意思是 frm.Controls.Add(DataGridView) 等。跨度>
  • @varocarbas 感谢您的评论...但是在 3 个 sn-ps 之间没有发生任何事情,也没有发生崩溃 .. 虽然如果发生任何崩溃,但它在显示它时也没有给出正确的输出没有 Mdi Parent
  • 好的。请注意,如果发生“轻微崩溃”(例如,当“thisVal”不是组合框的元素时执行 dgr.Cells["dgcolUser"].Value = "thisVal"),则不会分析之后的任何代码行,但是之前的所有代码都将得到完美的解释(=正是您抱怨的内容以及我无法重现的内容)。请调试代码并确认完全到达循环(并且它遍历所有单元格没有任何问题)。
  • 正如你所说,“thisVal”不是 Combobox 的一个元素,它引发和异常,我通过 DataError 事件处理了该异常,因为有时“thisVal”为空。在处理异常后,它会显示所有值。但实际问题是它仅在不在 Mdi Parent 中时显示
  • ??!! (我最近参与了长时间的对话,但原因仍然不明朗->人们寻求帮助;得到它;但显然对现实不满意并开始讨论?!)。如果您在发布代码时运行代码(没有错误处理代码,例如 try...catch)并且您引入了错误的值,它将显示我所描述的行为,即:到目前为止一切都很好,但没有将执行进一步的代码行。这是我所谓的“轻微错误”的一个例子,在这部分你不必发生这种情况(只是一个例子)。

标签: c# .net datagridview datasource windows-forms-designer


【解决方案1】:

我遇到了同样的问题。我相信您正在表单加载事件中填充 DGV。如果您将该代码移动到表单激活事件,那么这应该在 MDI 表单中工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-09
    • 2014-05-29
    • 2013-02-03
    • 1970-01-01
    • 2014-12-13
    相关资源
    最近更新 更多