2017-08-17 8 views
-1

私は持っているデータベースのいくつかの行を表示し、コンボボックス内に表示する必要があります。コンボボックスに行を表示

このコードは動作していますが、正しい行を表示する代わりに、System.Data.DataRowと表示されます。ここで

は私のコードです:ここでは

public Form1() 
    { 
     InitializeComponent(); 
     string setting = ConfigurationManager.AppSettings["setting1"]; 
     string conn = ConfigurationManager.ConnectionStrings["test"].ConnectionString; 
     using (SqlConnection sqlConn = new SqlConnection(conn)) 
     { 
      string sqlQuery = @"SELECT CDU_ESTADOS from testetiposdestados"; 
      MessageBox.Show(sqlQuery); 
      SqlCommand cmd = new SqlCommand(sqlQuery, sqlConn); 
      SqlDataAdapter da = new SqlDataAdapter(cmd); 
      DataTable table = new DataTable(); 
      da.Fill(table); 
      comboBox1.DataSource = new BindingSource(table, null); 

     } 

    } 

は、コンボボックスが表示さ何のスクリーンショットです:

enter image description here

そしてここで、コンボボックスが表示されるはずです何:

enter image description here

もしあなたがhavコードに関する質問など何でもお気軽にお問い合わせください

+5

あなたはコンボボックスValueMemberでとDisplayMemberを定義していますか? –

+0

私はDataGrindViewでそれをやっていませんでした。 –

+0

ComboBoxはDataGridViewではありません。データバインドコンボボックスを使用する場合は、DisplayMemberとValueMemberを定義する必要があります。 –

答えて

2

コンボボックスDisplayMemberのプロパティを設定する必要があります。 それ以外の場合はそれだけで価値が(この場合は、System.Data.DataRow)データ項目のToString()から返さ表示されます。

combobox1.DisplayMember = "CDU_ESTADOS"; 

あなたのコードの文脈で言えば:

ところで
public Form1() 
{ 
    InitializeComponent(); 
    string setting = ConfigurationManager.AppSettings["setting1"]; 
    string conn = ConfigurationManager.ConnectionStrings["test"].ConnectionString; 
    using (SqlConnection sqlConn = new SqlConnection(conn)) 
    { 
     string sqlQuery = @"SELECT CDU_ESTADOS from testetiposdestados"; 
     MessageBox.Show(sqlQuery); 
     SqlCommand cmd = new SqlCommand(sqlQuery, sqlConn); 
     SqlDataAdapter da = new SqlDataAdapter(cmd); 
     DataTable table = new DataTable(); 
     da.Fill(table); 
     combobox1.DisplayMember = "CDU_ESTADOS"; 
     comboBox1.DataSource = new BindingSource(table, null); 
    } 
} 

SqlCommandSqlDataAdapterDataTableはすべてIDisposableインターフェイスを実装しているため、usingステートメントで使用する必要があります。 また、私は地元のパラメータのvarキーワードを使用して起動することをお勧めし、それはあなたのコードは短く、読みやすくなります。

public Form1() 
{ 
    InitializeComponent(); 
    var setting = ConfigurationManager.AppSettings["setting1"]; 
    var conn = ConfigurationManager.ConnectionStrings["test"].ConnectionString; 
    using (var sqlConn = new SqlConnection(conn)) 
    { 
     var sqlQuery = @"SELECT CDU_ESTADOS from testetiposdestados"; 
     MessageBox.Show(sqlQuery); 
     using(var cmd = new SqlCommand(sqlQuery, sqlConn)) 
     { 
      using(var da = new SqlDataAdapter(cmd)) 
      { 
       using(var table = new DataTable()) 
       { 
        da.Fill(table); 
        combobox1.DisplayMember = "CDU_ESTADOS"; 
        comboBox1.DataSource = new BindingSource(table, null); 
       } 
      } 
     } 
    } 
} 
関連する問題