Нечетная проблема с ListBox. DataSource

Вы добавили неавторизованный путь для публичной розетки, так что это происходит. Вы можете удалить опцию розетки из app.routing.module.ts

  { path: 'unauthorized', component: UnauthorizedComponent, outlet: 'public'},

TO:

  { path: 'unauthorized', component: UnauthorizedComponent },

И html

<router-outlet *ngIf="isAuthenticated()"></router-outlet>
<router-outlet *ngIf="!isAuthenticated()" name="public"></router-outlet>

К

<router-outlet></router-outlet>
9
задан 23 March 2009 в 22:58
поделиться

8 ответов

Первое, что пришло на ум это вызвано тем, что ListBox.DataSource свойство должно содержать что-то, что реализует IList интерфейс. Ваш дженерик List<SubObject> не реализует IList; это реализует IList<T>System.Collections.Generic пространство имен). Array объекты, с другой стороны, наследуйтесь IList, так вручение данных на пути такие объектные работы.

Вы могли попытаться вытянуть Enumerator (который также реализует IList) из Вашего List<SubObject> возразите и включите это. Если это работает, то проблемой, которую я описал, является Ваша проблема. Если это не делает, то я говорю из своей шляпы.

Если это - действительно проблема, я удивлен, что, проталкиваясь неподдерживаемый объект не выдает исключение.

1
ответ дан 4 December 2019 в 23:07
поделиться

Вы могли попробовать

_listBox.DataSource = new BindingList<SubObject> (MyRootObject.MySubObjects);

вместо этого. BindingList реализует еще некоторые интерфейсы, чем Список, которые важны для DataBinding.

0
ответ дан 4 December 2019 в 23:07
поделиться

Я полагаю, что необходимо назвать _listbox. DataBind (); после присвоения источника данных. Однако я никогда не использовал свойство в качестве источника данных прежде, я только использовал методы. Вы попытались изменить свое свойство на метод, чтобы видеть, является ли это проблемой?

0
ответ дан 4 December 2019 в 23:07
поделиться

Вы могли попытаться использовать BindingSource (http://msdn.microsoft.com/en-us/library/system.windows.forms.bindingsource.aspx)

промежуток Поле списка и Ваш набор. Bindingsources обрабатывает набор материала и также включает Suspend/ResumeBinding properies, который может быть полезным при обновлении списка

Вы могли также испытать wpf, поскольку его привязка данных далеко превосходит привязку данных winforms :) но возможно это не возможно в Вашем случае

0
ответ дан 4 December 2019 в 23:07
поделиться

Я думаю, что необходимо звонить, Связывают метод после присвоения источнику данных поля списка что-то как _listBox. DataSource.bind () и у Вас будет свое поле списка исчезнувшим

0
ответ дан 4 December 2019 в 23:07
поделиться

до сих пор то, что я знаю, каждый раз, когда Вы хотите установить набор на a

[ComboBox,ListBox].DataSource

необходимо установить DisplayMember и ValueMember. DisplayMember и ValueMember переполнены названием свойства Класса в наборе, который присвоен полю списка/полю комбинированного списка.напр.

//Populate the data
RootObject root = new RootObject();
root.MySubObjects.Add(new SubObject("1", "data 1"));
root.MySubObjects.Add(new SubObject("2", "data 2"));

//Assign data to the data source
_listBox.DisplayMember = "DisplayProperty";
_listBox.ValueMember = "ValueProperty";
_listBox.DataSource = root.MySubObjects;

корень. MySubObjects возвращает Список SubObject, и SubObject должен иметь свойства под названием DisplayProperty и ValueProperty, напр.

public class RootObject
{
     public List<SubObject> MySubObjects { get; set; }
}

public class SubObject
{
     public string ValueProperty { get; set; }
     public string DisplayProperty { get; set; }
}
1
ответ дан 4 December 2019 в 23:07
поделиться

У меня есть специальное правило для проблем как это, что я всегда пытаюсь помнить прежде, чем пропасть впустую, весь день, стуча на нем (верьте мне, я провел много дней, стуча!). Правило: когда поведение системы является действительно странным, первопричина должна быть очень глупой. Как умные программисты, у нас есть тенденция искать тайные причины или ошибки в коде платформы для объяснения наших проблем. Иногда ответ - то, что мы спешили и сделали ошибку по невнимательности, которую мы еще не поймали.

Заключить Sherlock Holmes в кавычки, "когда Вы удалили невозможное, затем независимо от того, что остается, неважно, как невероятный, должно быть истиной". В этом случае невероятная истина - то, что свойство MySubObjects объекта MyRoot является пустым.

0
ответ дан 4 December 2019 в 23:07
поделиться
((CurrencyManager)_listBox.BindingContext[_listBox.DataSource]).Refresh();

Sux0r Я знаю, но это работает. (исходный ответ здесь )

5
ответ дан 4 December 2019 в 23:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: