karthik reddy mereddy Ответов: 5

Как загрузить данные в combobox из базы данных


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


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();
           
        }

5 Ответов

Рейтинг:
41

Rick van Woudenberg

Есть так много способов достичь этого:

1). свяжите свой ComboBox.

this.comboBox1.DisplayMember = "FullName";
this.comboBox1.ValueMember = "your field"; //Field in the datatable which you want to be the value of the combobox 
this.comboBox1.DataSource = ds.Tables["tEmployee"];
2). вручную добавьте элементы в ComboBox
private void ComboBoxTest_Load(object sender, EventArgs e)

        {
            DataTable dt = new DataTable("Terrorists");
            dt.Columns.Add("FirstName");
            dt.Columns.Add("LastName");
            
            dt.Rows.Add("Osama", "Bin Laden");
            dt.Rows.Add("Saddam", "Hoessein");
            dt.Rows.Add("George", "Bush");

            for (int j = 0; j < dt.Rows.Count; j++)

            {
                string text = dt.Rows[j]["FirstName"].ToString() + " " + dt.Rows[j]["LastName"].ToString();
                this.comboBox1.Items.Add(text);
            }
        }
3). владелец рисует элементы comboBox:
namespace Sample
{
    public partial class ComboBoxTest : Form
    {
        public ComboBoxTest()
        {
            InitializeComponent();
        }

        private void ComboBoxTest_Load(object sender, EventArgs e)
        {
            DataTable dt = new DataTable("Terrorists");
            dt.Columns.Add("FirstName");
            dt.Columns.Add("LastName");
            
            dt.Rows.Add("Osama", "Bin Laden");
            dt.Rows.Add("Saddam", "Hoessein");
            dt.Rows.Add("George", "Bush");

            this.comboBox1.DisplayMember = "FirstName";
            this.comboBox1.DataSource = dt;
            this.comboBox1.DrawMode = DrawMode.OwnerDrawFixed;
            this.comboBox1.DrawItem += new DrawItemEventHandler(comboBox1_DrawItem);
        }
 
        void comboBox1_DrawItem(object sender, DrawItemEventArgs e)
        {
            e.DrawBackground();
            DataRowView dv = this.comboBox1.Items[e.Index] as DataRowView;
            string text = dv["FirstName"].ToString() +" "+ dv["LastName"].ToString();
            e.Graphics.DrawString(text, e.Font, new SolidBrush(e.ForeColor), e.Bounds);
        }
    }
}
Выбирайте сами :)


Рейтинг:
30

seyed mahmud shahrokni

это очень просто
но не забудьте добавить эти вещи

using System.Data;
using System.Data.SqlClient;
using System.Web.Configuration;





        SqlDataAdapter da;
        DataTable dtbl = new DataTable();

        SqlConnection con = new SqlConnection(WebConfigurationManager.ConnectionStrings["sql"].ToString());
// you should use your Connection String 
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;
        cmd.CommandText = "select ClerkId from Clerk"; // you should use your table name .
        

        try
        {
            da = new SqlDataAdapter(cmd);
            da.Fill(dtbl);
            Combo1.DataSource = dtbl;
            Combo1.DataTextField = dtbl.Columns["ClerkId"].ToString();
            Combo1.DataBind();
        }
        catch (Exception ex)
        {
            con.Close();
         
        }


Рейтинг:
27

karthik reddy mereddy

public void BindData()
       {
           SqlConnection con = Helper.getconnection();
           con.Open();
           string strCmd = "select supportID, Name from Support";
           SqlCommand cmd = new SqlCommand(strCmd, con);
           SqlDataAdapter da = new SqlDataAdapter(strCmd, con);
           DataSet ds = new DataSet();
           da.Fill(ds);
           cbSupportID.DataSource = ds.Tables[0];
           cbSupportID.DisplayMember = "Name";
           cbSupportID.ValueMember = "supportID";
           cbSupportID.Enabled = true;
           this.cbSupportID.SelectedIndex = -1;
           cmd.ExecuteNonQuery();
           con.Close();
       }


Рейтинг:
2

mca projects

Вот пример кода для заполнения данных из базы данных в выпадающий список ddlstate

SqlConnection cn = mcls.OpenCn();
               string sql;
               sql = "Select stateid,statename from StateMaster";
               DataTable dt = new DataTable();
               SqlDataAdapter da = new SqlDataAdapter(sql, cn);
               da.Fill(dt);
               ddlstate.DataSource = dt;
               ddlstate.DataBind();
               ddlstate.DataTextField = "StateName";
               ddlstate.DataValueField = "Stateid";
               ddlstate.DataBind();
               ddlstate.Items.Insert(0, "-Please Select-");
               ddlstate.SelectedIndex = 0;


Richard Deeming

Этот вопрос был задан, дан ответ и решен ЧЕТЫРЕ ГОДА НАЗАД.

И ваше решение ничего не добавляет к существующим решениям - кроме накладных расходов на вызов DataBind дважды потому что вы не потрудились понять код, который вы разместили.

Рейтинг:
2

Member 14706652

написать метод в от.Здесь BindDepartment - это мое имя метода:

частный пустотный отдел привязки()
{
пробовать
{
DataTable dt = новый DataTable();
objEmployee = новый сотрудник();
dt=objEmployee.GetDeprtmentofDrop(Конвертировать.Метод toString(comboBoxdepartment.SelectedValue));
Доктор строкаданных = ДТ.Невров();
dr["DeptName"] = 0;
dr["DeptName"] = "--выберите отдел--";
ДТ.строки.InsertAt(dr, 0);
comboBoxdepartment.Источник данных = dt;
comboBoxdepartment.DisplayMember = "DeptName";
comboBoxdepartment.ValueMember = "DeptName";
}
поймать (исключение бывший)
{
бросок экс;
}
}
передайте параметры методу

public DataTable GetDeprtmentofDrop(string DeptName)
{
if (Connection == null)
{
Соединение = новый объект sqlconnection();
}
SqlCommand cmd = соединение.CreateCommand();
УМК.Свойства commandtext = "spDepartment";
УМК.CommandType = CommandType.Хранимая процедура;
SqlDataAdapter da = новый SqlDataAdapter(cmd);
cmd.параметры.AddWithValue("@Action", "select");
cmd.параметры.AddWithValue("@DeptName", DeptName);
DataTable dt = новый DataTable();
да.Заполнить(ДТ);
возврат dt;
}


ЗАПИСКАЗдесь ObjEmployee - это объект вашего имени класса
Пример:- Employee ObjEmployee=новый сотрудник;