如何将对象从组合框中选定的项目转换为字符串
本文关键字:项目 转换 字符串 对象 组合 | 更新日期: 2023-09-27 18:03:47
这一切都在WINDOWS FORM C#中,MICROSOFT VISUAL STUDIO 2008
我有一个组合框是这样显示的:
private void populateCombos()
{
string GetConn1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = c:''Data''Db''Comp.mdb";
string queryString = "SELECT DISTINCT DC FROM Comp";
OleDbDataAdapter dA = new OleDbDataAdapter(queryString, GetConn1);
DataTable dC = new DataTable();
dA.Fill(dC);
comboBoxDC.DataSource = dC;
comboBoxDC.DisplayMember = "DC";
string GetConn2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = c:''Data''Db''Comp.mdb";
string queryString2 = "SELECT DISTINCT PL FROM Comp";
OleDbDataAdapter dA2 = new OleDbDataAdapter(queryString2, GetConn2);
DataTable pL = new DataTable();
dA2.Fill(pL);
comboBoxPL.DataSource = pL;
comboBoxPL.DisplayMember = "PL";
}
我在这里遇到了问题,因为我无法将所选项目制作成字符串:
object da = comboBoxDC.SelectedItem;
object pr = comboBoxPL.SelectedItem;
Console.WriteLine(da.ToString());
Console.WriteLine(da);
Console.WriteLine(pr);
//Connection...
var list = new List<dataQuery>();
string GetConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = c:''Data''Db''Comp.mdb";
string connectionString = GetConnectionString;
string queryString = "SELECT DC, PL, CompID, User, Email FROM Comp WHERE DC = ''" + da + "'' AND PL = ''" + pr + "''";
为了查询这些命令,我需要所选项目comboBoxDC是一个字符串,对于comboBoxPL也是如此。
答案!!!!:
所以我发现了这个:
代码:
string da = comboBoxDC.Text.ToString();
string pr = comboBoxPL.Text.ToString();
Console.WriteLine(da)
Console.WriteLine(pr)
text.tostring的输出是成功的,实际上是字符串。
MessageBox.Show(comboBoxDC.SelectedItem.ToString());
适用于我的WPF解决方案。
您需要将selecteditem强制转换为特定的类,然后再转换为字符串。在本例中,您已经用combobox绑定了datatable,因此以这种方式强制转换。
String str = ((DataRowView)comboBox1.SelectedItem)["ColumnName"].ToString();
您可以在SelectedItem上调用toString方法。来自MSDN,
Object selectedItem = comboBox1.SelectedItem;
MessageBox.Show("Selected Item Text: " + selectedItem.ToString());
假设这是在WinForms中,我猜当你调用comboBoxDC.SelectedItem时,结果是"System.Data.DataRowView"。你的代码的问题是你只设置了DisplayMember。如果未设置ValueMember属性,则如果数据源是DataTable(或DataView(,则组合框选择的默认值是DataRowView。
要获得您要查找的数据,请按照下面的示例修改您的代码。
编辑抱歉,假设您的字段是文本对象,我的方法会起作用。如果它们不是(例如Decimals、Ints等(,则需要首先将它们强制转换为各自的数据类型,然后对结果调用ToString((。
如果为数据对象中的字段设置ValueMember,则该字段将不是DataRowView,而是指定的字段。如果字符串结果仍然是"System.Data.DataRowView",则代码中存在另一个错误。请更新你的问题,我会帮你找到的。
private void populateCombos()
{
string GetConn1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = c:''Data''Db''Comp.mdb";
string queryString = "SELECT DISTINCT DC FROM Comp";
OleDbDataAdapter dA = new OleDbDataAdapter(queryString, GetConn1);
DataTable dC = new DataTable();
dA.Fill(dC);
comboBoxDC.DataSource = dC;
comboBoxDC.DisplayMember = "DC";
comboBoxDC.ValueMember = "DC"; //Add this line.
string GetConn2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = c:''Data''Db''Comp.mdb";
string queryString2 = "SELECT DISTINCT PL FROM Comp";
OleDbDataAdapter dA2 = new OleDbDataAdapter(queryString2, GetConn2);
DataTable pL = new DataTable();
dA2.Fill(pL);
comboBoxPL.DataSource = pL;
comboBoxPL.DisplayMember = "PL";
comboBoxPL.ValueMember = "PL"; //Add this line, too.
}
现在,更改获得文本值的代码如下:
string sDa = comboBoxDC.SelectedValue.ToString(); //Do this if this is a string column
string sPr = comboBoxPL.SelectedValue.ToString(); // '' '' '' '' ''
//If your data is not strings, cast them to their respective types
Console.WriteLine(da.ToString());
Console.WriteLine(sDa);
Console.WriteLine(sPr);
SelectedItem以字符串形式公开,但您已将其强制转换为对象。尝试将分配替换为:
string da = comboBoxDC.SelectedItem;
string pr = comboBoxPL.SelectedItem;