Как связать значение и текст с выпадающим списком (полем со списком), который присутствует в сетке свойств? - PullRequest
0 голосов
/ 19 сентября 2019

Как мне связать пользовательский объект, который имеет значение и текст для привязки к раскрывающемуся списку в сетке свойств

Например, у меня есть собственный список, как показано ниже

List<Employee>  _employeeList;

public class Employee{
int employeeId;
string employeeName;
}

Я могу связать список строк с выпадающим списком в сетке свойств, но не со списком пользовательских объектов.

Ответы [ 2 ]

0 голосов
/ 19 сентября 2019

Вы должны использовать открытые свойства, а не частные поля:

public class Employee
{
  public int EmployeeId {get; set; }
  public string EmployeeName {get; set; }
}
  • Открытые для использования вне класса.
  • Свойства с хотя бы геттером, подходящие дляOO design.

Использование открытых свойств может решить проблему, вызванную использованием закрытых полей, поскольку привязки используют только открытые свойства.

Вам также следует реализовать ToString (), например:

public override string ToString()
{
  return EmployeeName;
}

Это позволяет элементам управления отображать строковое представление объектов.

0 голосов
/ 19 сентября 2019

Обычно вы устанавливаете DataSource комбинированного списка, DisplayMember - строку имени свойства для отображения, а ValueMember - строку имени свойства, которое будет использоваться в качестве значения (при вызове selectedValue):

public class Person{
  public string Name { get; set; }
  public int Id { get; set; }
}
var peeps = new List<Person>(){
  new Person(){ Name="John",Id=1 },
  new Person(){ Name="Jane",Id=2 }
};
combo.DataSource = peeps;
combo.DisplayMember = "Name";
combo.ValueMember = "Id";

Выберите «Jane» в комбо, и (int)combo.SelectedValue будет 2

Если вы не установите элементы display и value, комбо будет просто вызывать ToString для каждогоэлемент в списке и использовать его в качестве отображаемого текста, а весь объект в качестве значения.Без переопределенной ToString по умолчанию просто возвращается тип Name.Следовательно, вы, вероятно, видите список, полный «YourNamespace.Person» или эквивалентного

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