2013-09-25 3 views
3

Как загрузить данные в combobox из базы данных? Я хочу отобразить supportID в поле со списком в форме. код, который я использую, здесь. Я вызываю BindData() в formload. Я получаю исключение как: Не могу привязываться к новому элементу отображения. Имя параметра: newDisplayMember. код я использовал:Как загрузить данные в combobox из базы данных

public void BindData() 
    { 
     SqlConnection con = new SqlConnection(@"server=RSTT2; database = Project ; User Id=sa; Password=PeaTeaCee5#"); 
     con.Open(); 
     string strCmd = "select supportID from Support"; 
     SqlCommand cmd = new SqlCommand(strCmd, con); 
     SqlDataAdapter da = new SqlDataAdapter(strCmd, con); 
     DataSet ds = new DataSet(); 
     da.Fill(ds); 
     cbSupportID.DataSource = ds; 
     cbSupportID.DisplayMember = "supportID"; 
     cbSupportID.ValueMember = "supportID"; 
     cbSupportID.Enabled = true; 
     cmd.ExecuteNonQuery(); 
     con.Close(); 

    } 

ответ

6

DataSource для combobox должен быть в этом случае DataTable, попробуйте следующее:

cbSupportID.DataSource = ds.Tables[0]; 

Или лучше, вы должны заполнить данные в DataTable вместо DataSet как это:

DataTable dt = new DataTable(); 
da.Fill(dt); 
//... 
cbSupportID.DataSource = dt; 
1
public void BindData() 
{ 
    SqlConnection con = new SqlConnection(@"server=RSTT2; database = Project ; User Id=sa; Password=PeaTeaCee5#"); 
    con.Open(); 
    string strCmd = "select supportID from Support"; 
    SqlCommand cmd = new SqlCommand(strCmd, con); 
    SqlDataAdapter da = new SqlDataAdapter(strCmd, con); 
    DataSet ds = new DataSet(); 
    da.Fill(ds); 
    cmd.ExecuteNonQuery(); 
    con.Close(); 

    cbSupportID.DisplayMember = "supportID"; 
    cbSupportID.ValueMember = "supportID";  
    cbSupportID.DataSource = ds; 

    cbSupportID.Enabled = true; 

} 

Надеюсь, это поможет.

0

Следуйте этот пример:

using System; 
using System.Data; 
using System.Data.SqlClient; 
using System.Windows.Forms; 

namespace ComboBoxData 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      string conStr = @"Server =.\SQLEXPRESS2014; Database=NORTHWND; User Id=sa; Password=******"; 
      SqlConnection conn = new SqlConnection(conStr); 
      DataSet ds = new DataSet(); 
      string getEmpSQL = "SELECT E.LastName FROM dbo.Employees E;"; 
      SqlDataAdapter sda = new SqlDataAdapter(getEmpSQL, conn); 

      try 
      { 
       conn.Open(); 
       sda.Fill(ds); 
      }catch(SqlException se) 
      { 
       MessageBox.Show("An error occured while connecting to database" + se.ToString()); 
      } 
      finally 
      { 
       conn.Close(); 
      } 

      comboBox1.DataSource = ds.Tables[0]; 
      comboBox1.DisplayMember = ds.Tables[0].Columns[0].ToString(); 
     } 
    } 
} 
0
CmbDefaultPrinter.DisplayMember = "[table fieldname]"; 
CmbDefaultPrinter.ValueMember = "[table fieldname]"; 
CmbDefaultPrinter.DataSource = ds.Tables[0]; 
CmbDefaultPrinter.Enabled = true; 
+2

Вы должны избегать отправки ответов только на код. – croxy

0

упоминается имя столбца в DataField, который вы хотите загрузить.

и в aspx.cs при загрузке страницы свяжите сетку.

enter code here 
<asp:TemplateField> 
<ItemTemplate> 
<asp:CheckBox ID="chkSelect" runat="server" /> 
</ItemTemplate> 
</asp:TemplateField> 
<asp:BoundField DataField="User_Group" HeaderText="UserName" ItemStyle 
Width="150px" /> 
Смежные вопросы