1. ホーム
  2. asp.net

[解決済み] のSelectedValueは項目リストに存在しないため、無効です。どのようにデバッグするのですか?

2022-03-04 19:59:05

質問

ドロップダウン・リストへのasp.netのバインディングに問題があり、デバッグする方法がわかりません。この件に関する他の質問をスタックでチェックしましたが、何も役に立ちませんでした。私が見る限り、選択されるべきquot;name"はリスト内にあります。

<asp:DropDownList ID="dd1" runat="server" DataSourceID="ADataSource" DataTextField="Name" 
                                                    DataValueField="Name" SelectedValue='<%# Bind("Name") %>'   Width="255" 
                                                    AppendDataBoundItems="true" TabIndex="3"  Font-Size="small"  EnableViewState="true"    >
                                             <asp:ListItem Text="Select"  Value="" />
                                           </asp:DropDownList>

以下がそのエラーです。

<ブロッククオート

System.ArgumentOutOfRangeException was unhandled by user code Message='dd1' has a SelectedValue that is invalid because it doesn't exist in the list of items.このメッセージは項目リストに存在しないので無効です。 パラメータ名:value ソース=System.Web ParamName=value StackTrace: at System.Web.UI.WebControls.ListControl.PerformDataBinding(IEnumerable) dataSource) at System.Web.UI.WebControls.ListControl.OnDataBinding(EventArgs e) at System.Web.UI.WebControls.ListControl.PerformSelect() at System.Web.UI.WebControls.BaseDataBoundControl.DataBind() at System.Web.UI.Control.DataBindChildren() at System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) at System.Web.UI.Control.DataBind() at System.Web.UI.Control.DataBindChildren() at System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) at System.Web.UI.Control.DataBind() at System.Web.UI.Control.DataBindChildren() at System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) at System.Web.UI.Control.DataBind() at System.Web.UI.Control.DataBindChildren() at System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) at System.Web.UI.WebControls.DetailsView.CreateChildControls(IEnumerable dataSource, Boolean dataBinding) at System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerable) データ) at System.Web.UI.WebControls.DetailsView.PerformDataBinding(IEnumerable) データ) at System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable) データ) at System.Web.UI.DataSourceView.Select(DataSourceSelectArguments) 引数, DataSourceViewSelectCallbackコールバック) at System.Web.UI.WebControls.DataBoundControl.PerformSelect() at System.Web.UI.WebControls.BaseDataBoundControl.DataBind() System.Web.UI.WebControls.DetailsView.DataBind()にて。 行 233 の storeUpdate.GvStoresSelect_SelectedIndexChanged(Object sender, EventArgs e) にて。 at System.EventHandler.Invoke(Object sender, EventArgs e) at System.Web.UI.WebControls.GridView.OnSelectedIndexChanged(EventArgs e) at System.Web.UI.WebControls.GridView.HandleSelect(Int32 rowIndex) at System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) at System.Web.UI.WebControls.GridView.OnBubbleEvent(Object source, EventArgs e) at System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) at System.Web.UI.WebControls.GridViewRow.OnBubbleEvent(Object source.GridViewRow.OnBubbleEvent) EventArgs e) at System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) at System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e) at System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) at System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String) eventArgument) at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler) sourceControl, String eventArgument). at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) InnerExceptionが発生しました。

解決方法は?

から来る値は <%# Bind("Name") %> が、SelectedValue プロパティに渡される、そのコレクション内の項目と一致しません。 最も可能性の高い原因

  • リストがバインドされる前に評価が行われるため、DropDownListに項目がない。
  • リストは結合されているが、この特定の値がない
  • 返された値がNULLである可能性があります