2

DataBind()ASP.NET 4 で DropDownListを呼び出すと、ArgumentNullException がスローされます。

System.ArgumentNullException: 値を null にすることはできません。パラメーター名: System.Web.UI.DataBinder.GetPropertyValue のコンテナー (オブジェクト コンテナー、文字列 propName) System.Web.UI.DataBinder.GetPropertyValue のコンテナー (オブジェクト コンテナー、文字列 propName、文字列形式) System.Web.UI.WebControls。 System.Web.UI.WebControls.ListControl.OnDataBinding(EventArgs e) の ListControl.PerformDataBinding(IEnumerable dataSource) 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();

マークアップで設定したドロップダウンの DataValueField および DataTextField 設定を削除することを提案しているように見えるこのフォーラム投稿を見つけました。それを行って、コードの最後から 2 番目の行を次のように変更すると、オプションに意味のあるテキストが表示されます。

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

...それはまだ動作しません。ただし、「-Select-」オプションを追加する行を削除すると機能します。また、データがバインドされる前に要素が選択されていない場合にのみ壊れます。

どうしたの?

4

1 に答える 1