Значение по умолчанию для поля со списком - всегда табличное значение SQL - C#

Я получаю datatable из Stored Procedure и Combobox показывает эти данные, но я хочу показать -Выбрать программу- в качестве значения по умолчанию Combobox но он всегда показывает первую запись данных.

InitializeComponent();
        cbxProgram.Items.Insert(0, "-SELECT PROGRAM-");
        cbxProgram.SelectedIndex = 0;
        cbxProgram.DataSource = SomeBL.GetProgramName().Tables[0];
        cbxProgram.DisplayMember = "ProgramName";

        cbxType.DataSource = SomeBL.GetType("").Tables[0].DefaultView;
        cbxType.DisplayMember = "Type";

        cbxNumber.DataSource = SomeBL.GetNumber("", "").Tables[0].DefaultView;
        cbxNumber.DisplayMember = "Number";

        cbxType.Enabled = false;
        cbxType.Enabled = false;

3 ответа

Решение

Вы должны добавить свою собственную строку в таблицу перед привязкой.

Я не проверял это, но это должно выглядеть примерно так:

DataTable dt = SomeBL.GetProgramName().Tables[0];
DataRow dr = dt.NewRow();
dr[0] = "-SELECT PROGRAM-";  // Look at the index of your desired column
dt.Rows.InsertAt(dr,0);      // Insert on top position



cbxProgram.DataSource = dt;
cbxProgram.SelectedIndex = 0;
cbxProgram.DisplayMember = "ProgramName";

Используя свойство источника данных, вы удаляете существующие данные в первую очередь. Вы должны вставить строку "-SELECT PROGRAM-" после заполнения поля со списком из источника данных. Попробуй это:

cbxProgram.DataSource = SomeBL.GetProgramName().Tables[0];
cbxProgram.DisplayMember = "ProgramName";
cbxProgram.Items.Insert(0, "-SELECT PROGRAM-");
cbxProgram.SelectedIndex = 0;

Если это не позволяет вам добавить еще одну строку после установки источника данных, вы можете рассмотреть возможность добавления строки в источник данных. (Я не рекомендую добавлять его из базы данных SQL путем изменения хранимой процедуры.)

Проверьте этот псевдокод:

SomeBL.GetProgramName().Tables[0].Rows.Add(new DataRow(0, "-SELECT PROGRAM-"));
cbxProgram.DisplayMember = "ProgramName";
cbxProgram.Items.Insert(0, "-SELECT PROGRAM-");
cbxProgram.SelectedIndex = 0;
Другие вопросы по тегам