这一切都在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成功输出,实际上是字符串。
答案 0 :(得分:3)
MessageBox.Show(comboBoxDC.SelectedItem.ToString());
适用于我的WPF解决方案。
答案 1 :(得分:2)
您需要将selecteditem转换为特定类,然后转换为字符串。 在这种情况下,你已经使用combobox绑定数据表,以便以这种方式进行投射。
String str = ((DataRowView)comboBox1.SelectedItem)["ColumnName"].ToString();
答案 2 :(得分:0)
您可以在SelectedItem上调用toString方法。来自MSDN,
Object selectedItem = comboBox1.SelectedItem;
MessageBox.Show("Selected Item Text: " + selectedItem.ToString());
答案 3 :(得分:0)
假设这是在WinForms中,我的猜测是当你调用comboBoxDC.SelectedItem时,结果是“System.Data.DataRowView”。您的代码的问题是您只设置了DisplayMember。如果未设置ValueMember属性,则如果数据源是DataTable(或DataView),则ComboBox选择的默认值为DataRowView。
要获取您要查找的数据,请修改您的代码,如下例所示。
修改强> 道歉,我的方法会起作用,假设你的字段是文本对象。如果它们不是(即十进制,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);
答案 4 :(得分:-1)
SelectedItem以字符串形式公开,但您已将其强制转换为对象。尝试用以下内容替换作业:
string da = comboBoxDC.SelectedItem;
string pr = comboBoxPL.SelectedItem;