Uwakpeter Ответов: 3

Как заполнить поле со списком из базы данных и вставить новый элемент в индекс ноль в C#


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

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

private void LoadGrade()
    {
        using (SQLiteConnection conn = new SQLiteConnection(connstring))
        {

            try
            {
                string query = "select GradeCode, GradeName from Grade";
                SQLiteDataAdapter da = new SQLiteDataAdapter(query, conn);
                conn.Open();
                DataSet ds = new DataSet();
                da.Fill(ds, "OrgGrade");
                cboGrade.Items.Insert(0,"---Select---);
                cboGrade.DisplayMember = "GradeName";
                cboGrade.ValueMember = "GradeCode";
                cboGrade.DataSource = ds.Tables["OrgGrade"];

            }
            catch (Exception ex)
            {

                MessageBox.Show("Error occured loading grade!");
            }
        }
    } 




но это не работает для меня. Кроме того, я хочу иметь возможность извлекать и отображать displaymember и displayvalue в поле со списком при извлечении из базы данных без повторения элементов

3 Ответов

Рейтинг:
25

Karthik_Mahalingam

пробовать

DataTable dt = new DataTable();
           dt.Columns.Add("GradeName");
           dt.Columns.Add("GradeCode");
           dt.Rows.Add("aaa", "11");
           var row = dt.NewRow();
           row["GradeName"] = "Select";
           row["GradeCode"] = "0";
           dt.Rows.InsertAt(row, 0);
           cboGrade.DisplayMember = "GradeName";
           cboGrade.ValueMember = "GradeCode";
           cboGrade.DataSource = dt;


Uwakpeter

Я не хочу жестко связывать элементы списка: dt. Rows. Add("aaa", "11"); я получаю элементы списка из базы данных

Karthik_Mahalingam

Это просто для примера
Вместо этого вы должны использовать свой набор данных

Karthik_Mahalingam

var row = ds. Tables ["OrgGrade"]. NewRow();
row ["GradeName"] = " Select";
строка ["GradeCode"] = " 0";
ds. таблицы ["OrgGrade"]. строки.InsertAt(строка, 0);
cboGrade.DisplayMember = " GradeName";
cboGrade.ValueMember = " GradeCode";
cboGrade.DataSource = ds. Tables ["OrgGrade"];

Uwakpeter

Да, это работает спасибо, я также хочу иметь возможность вставлять извлеченные displaymember и valuemember в ограниченный список без дублирования этого конкретного элемента списка, скажем, я ищу сведения о сотруднике, и у сотрудника есть класс старшего персонала, старший персонал уже ограничен списком, скажем, по индексу 4, я хочу иметь возможность выбрать его и отобразить, я пробовал cboGrade.Предметы.Insert(0, retrievedValue), это, кажется, работает, но он дублирует извлеченный элемент каждый раз, когда нажимается кнопка поиска.

Karthik_Mahalingam

найдите этот конкретный элемент и удалите его с помощью "RemoveAt(index);" и " insert The new item

Animesh Datta

мои 5!

Karthik_Mahalingam

Спасибо Анимеш Датта

Рейтинг:
0

Graeme_Grant

Вы не можете работать непосредственно с ComboBox, так как вы привязали его к набору данных. Вместо этого вам нужно работать с тем, где находятся данные, используя Сбор данных.Метод InsertAt (DataRow, Int32) (System. Data)[^]

Таким примером может быть (непроверенный):

var insertRow = ds.Details.NewDetailsRow();

insertRow.Id = "0";
insertRow.Description = "---Select---";

ds.Details.Rows.InsertAt(insertRow, 0);


Uwakpeter

Откуда взялись подробности?

Graeme_Grant

Просто с макушки моей головы, отсюда и "(непроверенный)". Взгляните на предоставленную ссылку.

Рейтинг:
0

Sheel Ratan

private void LoadGrade()
    {
        using (SQLiteConnection conn = new SQLiteConnection(connstring))
        {
 
            try
            {
                string query = "select GradeCode, GradeName from Grade";
                SQLiteDataAdapter da = new SQLiteDataAdapter(query, conn);
                conn.Open();
                DataSet ds = new DataSet();
                da.Fill(ds, "OrgGrade");
                
                cboGrade.DisplayMember = "GradeName";
                cboGrade.ValueMember = "GradeCode";
                cboGrade.DataSource = ds.Tables["OrgGrade"];
                cboGrade.Items.Insert(0,"---Select---);
 
            }
            catch (Exception ex)
            {
 
                MessageBox.Show("Error occured loading grade!");
            }
        }
    }