C#.NET ComboBox控件

时间:2009-09-20 23:28:20

标签: c# compact-framework combobox

我有一个使用C#.NET在.NET Compact Framework上手持设备的应用程序。我面临的问题是ComboBox控件的表现非常不明显,有时它会显示内容,但有时它只是在ComboBox中显示System.DataRow类型的字符串。虽然它显示了这个System.DataRow字符串,但它仍然有它的值。我在combobox上有一个selectedIndexChanged事件,它返回正确的值,即使UI显示System.DataRow作为显示。

提前致谢。 欢呼声。

2 个答案:

答案 0 :(得分:3)

在加载ComboBox的代码中,您可能会看到如下内容:

foreach (DataRow row in YourDataTable.Rows)
{
    YourComboBox.Items.Add(row);
}

您基本上将每个DataRow加载到ComboBox中,而ComboBox使用的是DataRow的默认ToString()值,即“System.Data.DataRow”。你需要用一个DataRow的字段加载你的ComboxBox,如下所示:

foreach (DataRow row in YourDataTable.Rows)
{
    YourComboBox.Items.Add(row["column1"].ToString());
}

更新:您的DisplayMember属性可能有拼写错误。这段代码:

DataTable dt = new DataTable();
dt.Columns.Add("ID");
dt.Columns.Add("Name");
dt.Rows.Add(1, "Bob");
dt.Rows.Add(2, "Doug");
dt.Rows.Add(3, "Beth");
comboBox1.ValueMember = "ID";
comboBox1.DisplayMember = "Name";
comboBox1.DataSource = dt;

按预期正常工作,但DisplayMember区分大小写,因此如果我将倒数第二行更改为:

comboBox1.DisplayMember = "name";

ComboBox中的所有项目都说“System.Data.DataRowView”。我想你只需要查看你的列名。

答案 1 :(得分:1)

感谢您的帮助。我解决了这个问题。因此,方案是使用数据库中的值填充组合框。数据库查询返回三列ID,名称,大小。但我只需要2列名称和ID为combobox。我从数据库中获取值,然后在填充到组合框之前在客户端添加一个新行到该数据表中。在这个客户端行中,我只添加了2列Name和ID,但没有添加大小。这件事充满了一切。它很奇怪,但它现在工作正常。我想我会做更多测试,看看是否再次出现错误。

感谢您的帮助。