Проблема привязки данных в .Net Listbox - PullRequest
0 голосов
/ 26 августа 2009

У меня есть основной класс, который создает и заполняет DataSet, и экземпляр этого класса затем передается в подуправление моего приложения по ссылке. Я хочу использовать этот набор данных для привязки данных к компонентам, в данном случае к списку. Это для приложения Windows Forms.

Вот что я пытаюсь:

channelTypesLB.DataBindings.Add("Text", synData.ds, "ChannelTypes.channelType");

Обратите внимание, я также пробовал это: (не уверен, если есть разница)

channelTypesLB.DataBindings.Add("Text", synData.ds.Tables["ChannelTypes"], "channelType");

Theres нет ошибок, и я не вижу данных в списке ... когда я вывожу synData.ds.Tables["ChannelTypes"].Rows.Count, это говорит мне, что на самом деле есть данные в этой таблице данных.

Я что-то упустил? Я также истолковал channelTypesLB.Refresh (); после установки привязки данных.

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

private DataSet _ds = new DataSet();
public DataSet ds { get { return _ds; } }

Ответы [ 2 ]

3 голосов
/ 26 августа 2009

Попробуйте установить источник данных Listbox вместо привязки к свойству Text:

channelTypesLB.DataSource = synData.ds;
channelTypesLB.DisplayMember = "ChannelTypes.channelType";

Я ни в коем случае не эксперт по связыванию данных, но я считаю, что при привязке данных к тому, как вы это делаете в настоящее время, элемент управления привязывается к PropertyManager, который используется для привязки одного значения объекта к одному значению другого. При установке DataSource он должен связываться с CurrencyManager, который используется для связывания с Collection .

Вот краткий обзор привязки данных WinForms

1 голос
/ 26 августа 2009

Я предполагаю, что winforms здесь, так как нет тега ASP.NET ...

channelTypesLB.DataSource = synData.ds.Tables["ChannelTypes"].DefaultView;
channelTypesLB.DisplayMember = "channelType";

На всякий случай это ASP.NET, хотя попробуйте:

channelTypesLB.DataSource = synData.ds.Tables["ChannelTypes"].DefaultView;
channelTypesLB.DataTextField = "channelType";
channelTypesLB.DataValueField = "channelTypeId"; // I'm assuming this field exists, replace with your id field

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