2012-10-15 246 views
0
DataTable _dt = new DataTable(); 

using (SqlConnection _cs = new SqlConnection("Data Source=COMNAME; Initial Catalog=DATABASE; Integrated Security=True")) 
{ 
    string _query = "SELECT * FROM Doctor"; 
    SqlCommand _cmd = new SqlCommand(_query, _cs); 

    using (SqlDataAdapter _da = new SqlDataAdapter(_cmd)) 
    { 
     _da.Fill(_dt); 
    } 
} 
cbDoctor.DataSource = _dt; 
foreach(DataRow _dr in _dt.Rows) 
{ 
    cbDoctor.Items.Add(_dr["name"].ToString()); 
} 

有一個錯誤......C#填充組合框

結果是System.Data.DataRowView,而不是從數據庫數據..

+1

當你寫的'cbDoctor.DataSource = _dt;'是集數據源到'cbDoctor'控制,並應自動從'DT添加的所有項目'它的集合(你也可以調用'cbDoctor.DataBind()'來更新綁定),所以你不必手動添加項目。請提供更多信息,例如,這是一個桌面應用程序和'cbDoctor'是什麼類型的控件。 –

+0

桌面應用程序,我只是想用我的組合框中的數據從表格加載數據表中填充.. – mardagz

回答

4

我還不確定代碼中的確切錯誤是什麼,但如果你確定有沒有使用DataTable,你可以這樣來做:

using (SqlConnection sqlConnection = new SqlConnection("connstring")) 
{ 
    SqlCommand sqlCmd = new SqlCommand("SELECT * FROM Doctor", sqlConnection); 
    sqlConnection.Open(); 
    SqlDataReader sqlReader = sqlCmd.ExecuteReader(); 

    while (sqlReader.Read()) 
    { 
     cbDoctor.Items.Add(sqlReader["name"].ToString()); 
    } 

    sqlReader.Close(); 
} 

欲瞭解更多信息,看看SqlDataReader reference on MSDN

在您找到您發佈的原始代碼中的問題時,請提供您獲得該異常的哪一行的信息(或者它是否阻止應用程序編譯的錯誤?)以及它的整個消息是什麼。

+0

工作很好:)沒關係,沒關係DataTable嗯,非常感謝... – mardagz

+0

如何用'SqlDataAdapter' – newbieguy

0

我認爲問題是,你要插入將多個列轉換爲comboBox(只能接受一列)。調整你的SELECT語句,以便它結合了所有你需要合併到一列中的數據:

例子: 'SELECT名稱+「」 +姓氏'「+ ID AS‘DoctorData’FROM Doctor'

通過使用+操作符可以組合數據庫中的多個列,並將其表示爲單個數據。我認爲你的代碼應該在那之後工作(你甚至可以評論foreach循環,我認爲添加數據源到你的組合框就足夠了)

+0

已經做到了,我只是想填充組合框與名稱列從數據表 – mardagz

+0

而且你得到相同的錯誤? – NDraskovic

+0

yeapp .. 'System.Data.DataRowView System.Data.DataRowView' – mardagz

0

您還可以將組合框的DisplayMember屬性指定給任何列名稱。 例如,如果你想顯示名稱字段中,你可以做

Combobox1.DisplayMember="Name";