Winforms ComboBox добавляет позицию во время выполнения - PullRequest
0 голосов
/ 27 апреля 2018

ОБНОВЛЕНО НИЖЕ

var billers = user.FindBillers();
billers.Insert(0, new user { strLName = "- -" });
billers.Insert(1, new user { strLName = "Provider Default" });


cboBillingProvdr.DataSource = null;
cboBillingProvdr.DataSource = billers;
cboBillingProvdr.DisplayMember = "FullName";
cboBillingProvdr.ValueMember = "ID";


if (Currentuser.billerid == -1)
    cboBillingProvdr.SelectedIndex = 1;
else if (CurrentUser.billerid > 0)
    cboBillingProvdr.SelectedValue = CurrentUser.billerid ;
else
    cboBillingProvdr.SelectedIndex = 0;

Вот как ComboBox отображается на Form, если из базы данных поступает какое-либо значение биллера (> 0):

 - -
 Provider Default
 --
 Provider 1
 Provider 2
 Provider 3 

ОБНОВЛЕНИЕ: я не видел нигде в user.findbillers добавление этого "-". Но в той же форме этот код делает то, во что я верю. Когда я это комментирую, кажется, все работает.

    var Physicians= user.FindBillers();
    cboPhysician.DataSource = null;
    Physicians.Insert(0, new user { strFName = "--" });
    Physician.DataSource = Physicians;
    Physician.DisplayMember = "FullName";

Это вызывает загрузка формы и последующие клики, но я не знаю, почему одно должно влиять на другое.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

ПОСТАНОВИЛИ. Я добавил другой метод FindBillers1 () в пользовательский класс и вызвал его, чтобы заполнить 2-ю комбинацию, и он сработал так же безумно, как кажется. Между FindBillers и FindBillers1 нет никакой разницы, кроме названия.

0 голосов
/ 27 апреля 2018

Ваш код в этой области не добавляет элемент "-", вам нужно проверить свой метод user.FindBillers () (или опубликовать его здесь как правку). Там должна быть строка кода, похожая на:

/* assuming the returned collection's name is 'findBillers' */
findBillers.Insert(0, new user { "--" });
/* or */
findBillers.Add(new user { "--" });

Таким образом, ваш опубликованный список будет возвращен в результате:

--
Provider 1
Provider 2
Provider 3 

А потом, с вашими двумя строками кода

billers.Insert(0, new user { strLName = "- -" });
billers.Insert(1, new user { strLName = "Provider Default" });

Вы заканчиваете этот список

- - (Inserted at 0)
Provider Default (Inserted at 1)
--
Provider 1
Provider 2
Provider 3 

Итак, вы должны либо

a) Комментарий / удаление строки внутри пользователя. FindBillers ()

b) Прокомментируйте / удалите две вставки в биллеры и добавьте Provider Default в user.FindBillers ()

РЕДАКТИРОВАТЬ: Вы можете опубликовать код пользователя. FindBillers (), и я обновлю свой ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...