Quand je reçois SelectedItem dans la liste déroulante, retourne System.Data.DataRowView

Cette fonction permet de resortingver deux champs de SQL dans une liste déroulante: Code:

public void FillCmbKala() { cmbKala.Items.Clear(); objCon.Connecting(); ssortingng 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.ToSsortingng()); } finally { cn.Close(); } } } cmbKala.DataSource = ds.Tables[0]; cmbKala.DisplayMember = "kName"; cmbKala.ValueMember = "kID"; } 

quand j’utilise le combobox return System.Data.DataRowView!

Par exemple :

 ssortingng str= cmbKala.SelectedItem; 

le résultat est: str = System.Data.DataRowView

Voici la référence MSDN .

Comme SelectedItem retourne Object. Il retourne un object de ligne spécifique qui est sélectionné. Voici comment vous obtiendrez de la valeur:

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

La chose que vous sélectionnez EST un DataRowView. Vous devez sélectionner l’id de l’élément ou le texte à la place, non? Comme la chaîne str = cmbKala.SelectedItem.Text ou la chaîne str = cmbKala.SelectedItem.Value?

Je sais que cette question est ancienne, mais je voulais simplement vous faire savoir que si vous obtenez cette erreur, assurez-vous de l’utiliser

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

CECI VOUS AIDERA ENFIN

sur le chargement de l’événement que vous voulez simplement écrire ce code

 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]; } 

essayez d’utiliser Utilisez le code où vous souhaitez accéder aux valeurs ……..

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