当我在combobox中获取SelectedItem时返回System.Data.DataRowView

这是sql到combobox中的retrive两个字段的函数: 代码:

public void FillCmbKala() { cmbKala.Items.Clear(); objCon.Connecting(); string SQL = "SELECT [kID],[kName] FROM tblKala ORDER BY kName"; DataSet ds = new DataSet(); using (SqlConnection cn = new SqlConnection(objCon.StrCon)) { using (SqlDataAdapter adapter = new SqlDataAdapter(SQL, cn)) { cn.Open(); try { adapter.Fill(ds); } catch (SqlException e) { MessageBox.Show("There was an error accessing your data of 'Kala'. DETAIL: " + e.ToString()); } finally { cn.Close(); } } } cmbKala.DataSource = ds.Tables[0]; cmbKala.DisplayMember = "kName"; cmbKala.ValueMember = "kID"; } 

当我使用combobox返回System.Data.DataRowView!

例如 :

 string str= cmbKala.SelectedItem; 

结果是: str = System.Data.DataRowView

这是MSDN参考 。

由于SelectedItem返回Object。 它返回选中的特定行对象。 以下是您将获得价值的方式:

 DataRowView oDataRowView = cmbKala.SelectedItem as DataRowView; string sValue = string.Empty; if (oDataRowView != null) { sValue = oDataRowView.Row["kName"] as string; } 
  DataRowView dv = (DataRowView)comboBox1.SelectedItem; string s = (string)dv.Row["kName"]; int m1 = (int)dv.Row["kID"]; 

你选择的东西是DataRowView。 您应该选择项目的ID或文本吗? 像字符串str = cmbKala.SelectedItem.Text或字符串str = cmbKala.SelectedItem.Value?

我知道这个问题已经过时了,但我只是想让你们知道,如果你收到这个错误,请确保你正在使用

  ComboBoxName.DisplayMemberPath = "name of the column that you want to show in the combobox (ex: name)" ComboBoxName.SelectedValuePath = "name of the column (ex:id)"; 

这将非常有助于你

在load事件上你想要只写这段代码

 onformload() { cmb_dept.Items.Clear(); SqlConnection conn = new SqlConnection(@"DATA SOURCE=(localdb)\MSSQLLocalDB;INTEGRATED SECURITY=true;INITIAL CATALOG=EMPLOYEE;"); conn.Open(); SqlCommand command = new SqlCommand("select dept_id, dept_name from department", conn); SqlDataAdapter adapter = new SqlDataAdapter(command); DataSet ds = new DataSet(); adapter.Fill(ds); cmb_dept.ValueMember = "dept_id"; cmb_dept.DisplayMember = "dept_name"; cmb_dept.DataSource = ds.Tables[0]; } 

尝试使用使用您想要访问值的代码……..

 string dept = cmb_dept.Text; MessageBox.Show("val=" + dept); YOUR combobox.text = System.Data.DataRowView Will be Solved ##