'Невозможно выполнить привязку к новому элементу значения. Имя параметра: newDisplayMember'.

Я использую С# в Visual Studio 2010. У меня есть 2 поля со списком, которые извлекают данные из базы данных. Код выглядит примерно так:

        cbo1.DisplayMember = "Name";
        cbo1.ValueMember = "HROfficeLocationID";
        cbo1.DataSource = offices;
        cbo2.DisplayMember = "Name";
        cbo2.ValueMember = "HROfficeLocationID";
        cbo2.DataSource = offices;

Я продолжал получать это исключение: «Невозможно выполнить привязку к новому элементу значения. Имя параметра: newDisplayMember'. Я поискал, а затем реорганизовал строки кода так, чтобы cbo.DataSource стоял перед .DisplayMember и .ValueMember. В итоге это выглядело примерно так:

       cbo1.DataSource = offices;
       cbo1.DisplayMember = "Name";
       cbo1.ValueMember = "HROfficeLocationID";
       cbo2.DataSource = offices;
       cbo2.DisplayMember = "Name";
       cbo2.ValueMember = "HROfficeLocationID";

Исключение исчезло. Просто решил поделиться.


person Tatiana Laurent    schedule 09.07.2013    source источник


Ответы (4)


У меня это произошло, когда внутренний класс, который я использовал, имел переменные как «внутренние». Изменил их на «общедоступные», и все заработало.

person RCinAL    schedule 10.09.2013

Укажите как свойство, а не как переменную в классе, например,

public class projectData
{
     public string ProjName { get; set; }
     public string ProjId { get; set; }
}


List<projectData> projects = getProjects();


lBoxFDTProjects.DataSource = projects;

lBoxFDTProjects.ValueMember = "ProjId";
lBoxFDTProjects.DisplayMember = "ProjName";
person ptsivakumar    schedule 26.11.2014

Некоторые атрибуты свойств также вызывают эту ошибку, например [Browsable(false)].

person rajeemcariazo    schedule 10.06.2014

public class CmbStringItem
{

    public CmbStringItem(string text, string val)
    {
        Text = text;
        Value = val;
    }

    private string text;

    public string Text
    {
        get {return text;}
        set {text = value;}
    }
    private string val;

    [System.ComponentModel.BrowsableAttribute(true)] // must use
    public string Value
    {
        get {return val;}
        set {val = value;}
    }

    public override string ToString()
    {
        return Text;
    }
}

        List<CmbStringItem> items = new List<CmbStringItem>();
        items.Add(new CmbStringItem("Onula",  "0"));
        items.Add(new CmbStringItem("Jedna",  "1"));
        items.Add(new CmbStringItem("Dva", "2"));
        items.Add(new CmbStringItem("Tri", "3"));

        this.cmbSklad.DataSource = items;

        this.cmbSklad.ValueMember = "Value";
        this.cmbSklad.DisplayMember = "Text";
        this.cmbSklad.SelectedIndex = 0;

// установить Chombobox - отображать значение

cmbSklad.SelectedValue = "1";

person skorec1    schedule 27.08.2015