Несколько полей со списком с одним и тем же источником данных (C #)


ОБНОВЛЕНИЕ: теперь проблема решена, см. Ответ ниже.


В одной из моих форм (в приложении Windows Forms) я имеют 3 поля со списком. Эти поля со списком должны отображать список цен (в тексте, с целочисленным внутренним значением).

Все эти поля со списком используют один и тот же источник данных (список <> типа TSPrice , с ValueMember, установленным на Price, и DisplayMember, установленным на Description).

Моя проблема в том ... Каждый раз, когда я выбираю вариант цены из одного из раскрывающихся списков, ВСЕ они меняются на одно и то же значение ... Связано ли это с тем, что все они привязаны к одному источнику данных?

Вот как я их привязываю:

var priceList = new List<TSPrice>
                    {
                        new TSPrice(0, ""),
                        new TSPrice(0, "Half Day"),
                        new TSPrice(0, "Full Day"),
                        new TSPrice(0, "1 + Half"),
                        new TSPrice(0, "2 Days"),
                        new TSPrice(0, "Formal Quote Required")
                    };

objInsuredPrice.DataSource = priceList;
objTPPrice.DataSource = priceList;
objProvSum.DataSource = priceList;

objInsuredPrice.ValueMember = "Price";
objTPPrice.ValueMember = "Price";
objProvSum.ValueMember = "Price";

objInsuredPrice.DisplayMember = "Description";
objTPPrice.DisplayMember = "Description";
objProvSum.DisplayMember = "Description";

objInsuredPrice.SelectedIndex = 0;
objTPPrice.SelectedIndex = 0;
objProvSum.SelectedIndex = 0;

//objInsuredPrice.DataSource      = objTPPrice.DataSource     = objProvSum.DataSource     = priceList;
//objInsuredPrice.ValueMember     = objTPPrice.ValueMember    = objProvSum.ValueMember    = "Price";
//objInsuredPrice.DisplayMember   = objTPPrice.DisplayMember  = objProvSum.DisplayMember  = "Description";
//objInsuredPrice.SelectedIndex   = objTPPrice.SelectedIndex  = objProvSum.SelectedIndex  = 0;

Изменить: Проблема заключалась в том, что все они были привязаны к одному и тому же источнику данных, что подтверждено Саурабом. Вот как я это решил.

var priceList = new List<TSPrice>
                    {
                        new TSPrice(0, ""),
                        new TSPrice(1, "Half Day"),
                        new TSPrice(2, "Full Day"),
                        new TSPrice(3, "1 + Half"),
                        new TSPrice(4, "2 Days"),
                        new TSPrice(5, "Formal Quote Required")
                    };

var insuredList = new TSPrice[5];
var TPList = new TSPrice[5];
var provList = new TSPrice[5];

priceList.CopyTo(insuredList);
priceList.CopyTo(TPList);
priceList.CopyTo(provList);

objInsuredPrice.DataSource = insuredList;
objTPPrice.DataSource = TPList;
objProvSum.DataSource = provList;

objInsuredPrice.ValueMember     = objTPPrice.ValueMember    = objProvSum.ValueMember    = "Price";
objInsuredPrice.DisplayMember   = objTPPrice.DisplayMember  = objProvSum.DisplayMember  = "Description";
objInsuredPrice.SelectedIndex   = objTPPrice.SelectedIndex  = objProvSum.SelectedIndex  = 0;
28
задан StuartLC 25 November 2014 в 18:36
поделиться