【发布时间】: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