Arhn - архитектура программирования

Выбранное значение Combobox не получает

Это функция, которую я использовал для загрузки поля со списком. Я могу загрузить поле со списком, но когда я пытаюсь получить selectedvalue поля со списком, отображается null; Я не получаю фактическое значение.

public static DataTable GetComboBoxedDataTable(DataTable oldDataTable, string valueColumn, string textColumn, string topRowValue, string topRowText, ComboBox cmb)
{
    DataTable newDataTable = new DataTable();
    newDataTable.Columns.Add(valueColumn);
    newDataTable.Columns.Add(textColumn);
    foreach (DataRow oldDR in oldDataTable.Rows)
    {
        DataRow newDR = newDataTable.NewRow();
        newDR[0] = oldDR[valueColumn].ToString();
        newDR[1] = oldDR[textColumn].ToString();
        newDataTable.Rows.InsertAt(newDR, newDataTable.Rows.Count);
    }

    // Add your 'Select an item' option at the top
    DataRow dr = newDataTable.NewRow();
    dr[0] = topRowValue;
    dr[1] = topRowText;
    newDataTable.Rows.InsertAt(dr, 0);

    cmb.ValueMember = valueColumn;
    cmb.DisplayMember = textColumn;
    return newDataTable;
}

Код для заполнения поля со списком:

PolosysHMS.General.Classes.GeneralClass.GetComboBoxedDataTable(ds.Tables[0], "RoomID", "RoomNo", "0", "Select", cmbroomno);

код, где мне нужно combobox.selectedvalue:

private void cmbroomno_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                object[,] ParamArray = new object[,] { { "@RoomID", cmbroomno.SelectedValue } };---code where i need selected value
                DataSet ds = new DataSet();
                ds = DB.ExecuteQuery_SP("SelectGuestDetailsForService", ParamArray);

Код для заполнения поля со списком:

29.08.2014

  • покажите код, как вы получаете выбранное значение. 29.08.2014
  • Где вы установили DataSource для комбо? 29.08.2014
  • //Набор данных ds = DB.ExecuteQuery_SP(SelectRoomsByCheckStatus); // PolosysHMS.General.Classes.GeneralClass.GetComboBoxedDataTable(ds.Tables[0], RoomID, RoomNo, 0, Select, cmbroomno); 29.08.2014
  • проверьте, что ваш valueColumn правильно передается методу GetComboBoxedDataTable. 29.08.2014
  • В источнике данных были таблицы и поле со списком, также привязывающиеся, но выбранное значение показывает нуль.... 29.08.2014
  • да, я проверял......, отказавшись от этого метода, я использовал другой метод.. //DataSet ds = new DataSet(); //ds = DB.ExecuteQuery_SP(SelectRoomsByCheckStatus); //if (ds.Tables.Count › 0) //{ // cmbroomno.DataSource = ds.Tables[0]; // cmbroomno.DisplayMember = RoomNo; // cmbroomno.ValueMember = RoomID; //} 29.08.2014
  • Он работает нормально, но я хочу сократить код.... 29.08.2014
  • почему вы создаете новую таблицу внутри метода GetComboBoxedDataTable? без привязки напрямую из датасета 29.08.2014

Ответы:


1

Прежде всего, вы должны изменить свой код, чтобы заполнить поле со списком. это выглядит странно.

public static DataTable GetComboBoxedDataTable(DataTable oldDataTable, string valueColumn, string textColumn, string topRowValue, string topRowText, ComboBox cmb)
{
    DataTable newDataTable = oldDataTable.Copy();
    DataRow dr = newDataTable.NewRow();
    dr[0] = topRowValue;
    dr[1] = topRowText;
    newDataTable.Rows.InsertAt(dr, 0);

    cmb.ValueMember = valueColumn;
    cmb.DisplayMember = textColumn;
    cmb.DataSource = newDataTable;
    return newDataTable;
} 

Во-вторых, вы объявляете многомерный массив для хранения значения

private void cmbroomno_SelectedValueChanged(object sender, EventArgs e)
{
    object[,] ParamArray = new object[,] { { "@RoomID", cmbroomno.SelectedValue } };
    DataSet ds = DB.ExecuteQuery_SP("SelectGuestDetailsForService", ParamArray);
}
29.08.2014

2

Вы пропустили установку DataSet.

cmb.DataSource = newDataTable 
cmb.ValueMember = valueColumn;
cmb.DisplayMember = textColumn;
return newDataTable;
29.08.2014
  • для источника данных достаточно таблицы данных... если мы используем набор данных, мы выбираем в нем таблицу..... 29.08.2014
  • Вы сказали, что не получаете значение выбранного элемента? Правильно. это потому, что ваш источник данных cmb имеет значение null. просто замените код моим кодом и проверьте. 29.08.2014
  • Поле со списком привязывается и отображает данные в поле со списком, но когда вы переходите к выбранному значению, оно показывает нулевое значение, если источник данных равен нулю, как поле со списком будет связываться и отображать данные 29.08.2014
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..