2016-03-10 5 views
0

Мой клиент попросил меня добавить описательный текст в выпадающий список со списком. У меня есть эта часть, работающая правильно, но данные не загружаются должным образом обратно в поле со списком. Я решил, что это связано с тем, что когда описательный текст установлен в свойстве ListItem.Text, он распространяется на ListItem.Value. Но я не хочу менять Value.Изменение текста ListItem в поле со списком без изменения его значения

Мой код:

public static List<ListItem> MakeDescriptiveList() 
    { 
     List<ListItem> items = new List<ListItem>(); 
     items.Add(new ListItem(string.Empty)); 
     for (double i = 1.0; i > -1E-9; i -= 0.05) //Roundoff error discovered! 
     { 
      string value = i.ToString("0.0#"); 
      items.Add(new ListItem(value)); 
     } 
     items.Find(x => x.Value == "1.0").Text = "1.0\t Foo foo foo"; 
     items.Find(x => x.Value == "0.9").Text = "0.9\t Bar bar bar"; 
     items.Find(x => x.Value == "0.8").Text = "0.8\t Baz baz baz"; 
     ///intermediate items skipped 
     items.Find(x => x.Value == "0.0").Text = "0.0\t FAIL"; 
     return items; 

На загрузке данных, код пытается установить ComboBox1.SelectedValue = value, где value является «1,0» при преобразовании в строку. Но это не так, как ни Text, ни Value матч.

Каков наилучший способ настроить мой описательный текст в поле со списком, не изменяя значения выбранных?

(Моя долгосрочная цель, за отставания текущего выпуска, является, чтобы переместить все это в базу данных. Тогда я могу просто установить Text = db.Text с последующим Value = db.Value и все будет работать, как я хочу.)

ответ

0

Линия items.Add(new ListItem(value)) устанавливает Text нового ListItem. Поскольку Value null, запросить ValueText.

Я решил это, явно установив Value в конструктор: items.Add(new ListItem(value, value)). Тогда изменение Text правильно не повлияло Value.