Список <>. Найти (делегировать) проблему - PullRequest
0 голосов
/ 20 июня 2010

У меня есть многоколонный выпадающий список, где источником данных является список <> в моем классе выбора

Select selection = new Select();  
RadComboBox1.DataSource =  selection.GetAcctUtilCo(e.Text, 10).Skip(e.NumberOfItems); 

У меня есть несколько DataTextFields. Мой DataValueField является AcctID.
После того, как учетная запись выбрана, мне нужны значения полей datatext для заполнения некоторых полей в сетке.

Я пытаюсь использовать метод .Find () с помощью AcctID для получения данных безуспешно: (

int AcctID = Convert.ToInt32(RadComboBox1.SelectedValue); // *
List<Select> mylist = RadComboBox1.DataSource as List<Select>;  
mylist.Find(delegate(SelectTop act) { return act.AcctID == acctID; }); // ** exception here
Label lblAcctNo = (Label)grdAccts.HeaderRow.FindControl("lblAcctNo");  
lblAcctNo.Text = mylist.AccountNum;

Когда я отлаживаю, в указанной строке я получаю «Ссылка на объект не установлена ​​на экземпляр объекта». AcctID не является нулевым, когда я нахожу над ним. Однако, когда я наводю курсор мыши на mylist , он говорит, что ноль. Я новичок в методе .Find, и я действительно не уверен, что проблема в этом или в использовании источника данных в поле со списком в качестве источника mylist.
Может кто-нибудь помочь мне просветить

Ответы [ 2 ]

2 голосов
/ 20 июня 2010

Источник данных вашего поля со списком не список . Когда вы используете «как», результат будет нулевым, если вы попытаетесь привести к неверному типу, вместо того, чтобы генерировать исключение, подобное стандартному приведению. Поскольку вы использовали функцию Skip для создания источника данных, у вас фактически есть «IEnumerable <>».

1 голос
/ 20 июня 2010

Проблема вызвана RadComboBox1.DataSource - она ​​не сохраняется между запросами страницы.

  1. В своем коде, который устанавливает RadComboBox1.DataSource, сохраните копию значения RadComboBox1.DataSourceв смотровой площадке.например.ViewState ["RadComboBox1"] = RadComboBox1.DataSource;

  2. В случае запуска кода выше, восстановите RadComboBox1.DataSource, считав значение из состояния просмотра.например.RadComboBox1.DataSource = ViewState ["RadComboBox1"];

Надеемся, что вы должны найти значения, которые затем сохранятся между запросами.Удачи!

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