具有一个无效的SelectedValue,因为它不存在于项列表中.你怎么调试?

cho*_*bo2 7 asp.net data-binding

我有一个asp.net绑定到下拉列表的问题,我不知道如何调试.我在堆栈上查看了有关此问题的其他问题,但没有任何帮助.据我所知,它应该选择的"名称"在列表中.

<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>
Run Code Online (Sandbox Code Playgroud)

以下是错误

用户代码未处理System.ArgumentOutOfRangeException消息='dd1'具有SelectedValue,该ListValue无效,因为它在项列表中不存在.参数名称:value Source = System.Web ParamName = value StackTrace:位于System.Web的System.Web.UI.WebControls.ListControl.OnDataBinding(EventArgs e)的System.Web.UI.WebControls.ListControl.PerformDataBinding(IEnumerable dataSource)中System.Web.UI.Control.DataBind上的System.Web.UI.Control.DataBindChildren()处的System.Web.UI.UI.WebControls.BaseDataBoundControl.DataBind()处的.UI.WebControls.ListControl.PerformSelect()(Boolean raiseOnDataBinding)在System.Web.UI.Control.DataBind()在System.Web.UI.Control.DataBindChildren()在System.Web.UI.Control.DataBind(布尔raiseOnDataBinding)在System.Web.UI.Control.DataBind() System.Web.UI.Control.Data上的System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding)上的System.Web.UI.Control.DataBindChildren()处于System.Web.UI.Control.DataBind( System.Web.UI.WebCont上的System.Web.UI.WebControls.DetailsView.CreateChildControls(IEnumerable dataSource,Boolean dataBinding)中的System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding)System.Web.UI.DataSourceView上的System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable data)中的System.Web.UI.WebControls.DetailsView.PerformDataBinding(IEnumerable data)中的rols.CompositeDataBoundControl.PerformDataBinding(IEnumerable data).在System.Web.UI.WebControls.DetailsView.DataBind()的System.Web.UI.WebControls.BaseDataBoundControl.DataBind()上的System.Web.UI.WebControls.DataBoundControl.PerformSelect()中选择(DataSourceSelectArguments参数,DataSourceViewSelectCallback回调)位于System.Web.UI的System.Web.UI.WebControls.GridView.OnSelectedIndexChanged(EventArgs e)的System.EventHandler.Invoke(Object sender,EventArgs e)第233行的storeUpdate.GvStoresSelect_SelectedIndexChanged(Object sender,EventArgs e). System.Web.UI.WebControls.GridView.OnBubbleEvent(对象源,System.Web.UI.WebControls.GridView.HandleEvent(EventArgs e,Boolean causeValidation,String validationGroup)中的WebControls.GridView.HandleSelect(Int32 rowIndex)EventArgs e)位于System.Web.UI.Con.RaiseBubbleEvent的System.Web.UI.WebControls.GridViewRow.OnBubbleEvent(Object source,EventArgs e)的System.Web.UI.Control.RaiseBubbleEvent(Object source,EventArgs args)上. System.Web.UI.WebControls.LinkBut​​ton.System上System.Web.UI.WebControls.LinkBut​​ton.RaisePostBackEvent(String eventArgument)的System.Web.UI.WebControls.LinkBut​​ton.OnCommand(CommandEventArgs e)中的对象源,EventArgs args) System.Web.UI上System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)的System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,String eventArgument)中的.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument). Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)InnerException:

Bri*_*ins 6

<%# Bind("Name") %>传递给SelectedValue属性的值与其集合中的项不匹配.最可能的原因:

  • DropDownList没有项目,因为评估发生在列表绑定之前
  • 列表已绑定但缺少此特定值
  • 返回的值可以为null

  • 在控件外部使用`&lt;%#Eval(“ Name”)%&gt;`,然后查看其加载的内容。 (2认同)

Dav*_*d P 5

数据绑定很糟糕。我尝试了所有提到的建议,但没有一个有效。最终设置SelectedValue为 null,清除所有项目 ( myDDL.Items.Clear()),然后迭代我的列表并手动添加新的 ListItems - myDDL.Items.Add(new ListItem(myListEntry.Text,myListEntry.Value))