Walid Ibrahim Mohey-Eldin Ответов: 2

C#: добавить элемент " select” в метод динамической заливки combobox


Мне нужно добавить "Select" в индекс 0 без знания количества столбцов DataTable или имени, потому что этот метод в DataAccessLayer и будет использоваться позже

// ComboBox Fill Method
        public static void ComboBoxFill(ComboBox cbo, string Query, string cboDisplayMember, string cboValueMember)
        {
            con.Open();
            SqlCommand cmd = new SqlCommand(Query, con);
            SqlDataReader dr = cmd.ExecuteReader();
            DataTable dt = new DataTable();
            dt.Load(dr);
            cbo.DataSource = dt;
            cbo.DisplayMember = cboDisplayMember;
            cbo.ValueMember = cboValueMember;
            cbo.SelectedIndex = 0;
            con.Close();
        }


Что я уже пробовал:

cbo.Items.Insert(0, "Select");

2 Ответов

Рейтинг:
2

Michael Haephrati

Сначала прочтите документацию
Класс ComboBox (System.Окна.Формы)[^]

Тогда попробуйте это:

HWND hComboBox = GetDlgItem( m_hWnd, IDC_COMBOBOX );
int nIndex = SendMessage( hComboBox , CB_GETCURSEL, 0, 0 );
SendMessage( hComboBox , CB_GETLBTEXT, nIndex, (LPARAM)pFilename );


Walid Ibrahim Mohey-Eldin

Спасибо, что я решил ее другим кодом и добавил.
Большое спасибо за ВАШ интерес

Richard MacCutchan

Это не сработает в C#.

Рейтинг:
18

Walid Ibrahim Mohey-Eldin

Я решил эту проблему следующим кодом. Спасибо за все ...


public static void ComboBoxFill(ComboBox cbo, string Query, string cboDisplayMember, string cboValueMember)
    {
        con.Open();
        SqlCommand cmd = new SqlCommand(Query, con);
        SqlDataReader dr = cmd.ExecuteReader();
        DataTable dt = new DataTable();
        dt.Load(dr);
        DataRow drow = dt.NewRow();
        for (int i = 0; i < dt.Columns.Count ; i++)
        {
            if (dt.Columns[i].ColumnName == cboDisplayMember)
            {
                drow[i] = "Select";
            }
            else if (dt.Columns[i].ColumnName == cboValueMember)
            {
                drow[i] = 0;
            }
            else
            {
                drow[i] = null;
            }
        }

        dt.Rows.InsertAt(drow, 0);

        cbo.DataSource = dt;
        cbo.DisplayMember = cboDisplayMember;
        cbo.ValueMember = cboValueMember;
        cbo.SelectedIndex = 0;
        con.Close();
    }