C #: присвоение текста и значения элементу комбинированного списка - PullRequest
0 голосов
/ 12 февраля 2011

Я думаю, что знал, как это сделать когда-то, но я не могу понять это прямо сейчас. Я пытаюсь назначить элемент списка в поле со списком, который имеет соответствующее значение. Причина в том, что я заполняю его списком имен из базы данных, но я хочу, чтобы он сохранил первичный ключ как значение, чтобы я мог вызвать его непосредственно в следующем запросе. Например, вы выбираете имя из списка супервизоров, в котором первичный ключ этого супервизора будет храниться в переменной для использования в событии, в котором перечислены все сотрудники, которым этот ключ назначен в качестве супервизора. Это имеет смысл? Довольно стандартный. Вот что у меня есть, это загрузка только текстовой части имен в:

Запрос:

static string sql = "select rtrim(elname),rtrim(efname) from employee where pos_id = 2";

Код, который заполняет список:

try
            {
                conn.Open();
                //determine how many records affected/returned              
                int records = dbAdapter.Fill(results); //fills the datatable with results and returns the number of records

                if (records > 0)
                {
                    //do something with the results (stored in the datatable)
                    foreach (DataRow dr in results.Rows)
                    {
                        cboSupervisor.Items.Add(dr[0] + ", " + dr[1]);

                    }
                    cboSupervisor.Sorted = true;
                }
            }
            catch { }

Это заполняет раскрывающийся список с фамилией, именем

Ответы [ 2 ]

3 голосов
/ 12 февраля 2011

Лучший способ - создать класс, содержащий информацию, которую вы хотите отобразить, и тот, который вы хотите сохранить, а затем специализировать ToString ():

    public class ComboItem : object
    {
        protected String    name;
        ....
        ....
        protected int   id;

        public ComboItem(String name, int id)
        {
            this.name= name;

            this.id = id;
        }

        public override string ToString()
        {
            return name;
        }

    };
0 голосов
/ 12 февраля 2011

Не могли бы вы использовать ComboBoxItem, использовать свойство содержимого для задания имени и использовать свойство тега для установки значения?Затем добавьте ComboBoxItem в коллекцию предметов ComboBox?

...