2012-06-11 4 views
2

Когда я звоню DataBind() на DropDownList в ASP.NET 4, он выбрасывает ArgumentNullException:ArgumentNullException когда DataBind() вызывалась на DropDownList

System.ArgumentNullException: Значение не может быть пустым. Имя параметра: Контейнер по System.Web.UI.DataBinder.GetPropertyValue (Object контейнер, String PROPNAME) на System.Web.UI.DataBinder.GetPropertyValue (контейнер Object, String PROPNAME, формат строки) в System.Web .UI.WebControls.ListControl.PerformDataBinding (IEnumerable DataSource) в System.Web.UI.WebControls.ListControl.OnDataBinding (EventArgs е) при System.Web.UI.WebControls.ListControl.PerformSelect() в System.Web .UI.WebControls.BaseDataBoundControl.DataBind() в MyNamespace.MyClass.MyFunction()

Вот мой код:

myDropdown.Items.Clear(); 
myDropdown.ClearSelection(); 
myDropdown.Items.Add(new ListItem("-Select-", "-1")); 
myDropdown.DataSource = myDataSource; //List<T> of my business objects 
myDropdown.DataBind(); 

Я нашел this forum post, что, кажется, предположить, забирая настройки DataValueField и DataTextField на выпадающем списке, который я настроил в разметке. Когда я делаю это, и изменить вторую к последней строке моего кода на это, так что я до сих пор получить осмысленный текст в опциях:

myDropdown.DataSource = myDataSource.Select(elem => new ListItem(elem.Text, elem.Id)); 

... она до сих пор не работает. Однако он работает, когда я убираю строку, которая добавляет параметр «-Выбрать-». И он ломается только тогда, когда элемент не выбран до привязки данных.

Что происходит?

+0

Что такое '' хранится? Проверьте, пуст он или нет? – Rahul

+0

@ Рахул - см. Мой ответ ниже. Я обнаружил, что вызывает ошибку. Причина причины - загадка на данный момент. –

ответ

2

Дальнейший поиск в Google this other post указывает на то, что нулевые объекты в источнике данных могут вызвать эту проблему. Я изменил свою линию DataSource на следующее:

myDropdown.DataSource = myDataSource.Where(elem => elem != null); 

И это сработало.

Мне еще предстоит определить, почему/как у меня есть нулевые значения в этом списке. Хм.

Смежные вопросы