【问题标题】:C# asp dropdownlist databind empty dataset selectedindexC# asp dropdownlist databind 空数据集 selectedindex
【发布时间】:2013-07-17 20:03:11
【问题描述】:

情况: 我正在使用一个变量 SQL 字符串填充 DropDownList 的 SqlDatasource,该字符串取决于页面上的用户输入(根据需要使用不同的表)。设置适当的字符串后,我使用 SqlDataSource 的 DataBind 用适当的数据填充下拉列表,并手动将一个选项(“All”)添加到值中。我在页面的 Page_Load 中执行此操作(那时我知道要使用什么 SQL 字符串)。

问题: 只要 SQL 不返回空数据集,这就可以正常工作。如果是这样,则页面最初会加载除“全部”之外的空下拉列表值。之后,无论我做什么(例如,单击一些完全不相关的按钮),我都会进入页面的 NEXT Page_Load: System.ArgumentOutOfRangeException 未被用户代码处理 Message='KLFDDropDownList' 有一个无效的 SelectedIndex,因为它不存在于项目列表中。 SelectedIndex 值为 0。

我做错了什么?

if (Typeselection == "3") KLFDSqlDataSource.SelectCommand = KLFDSQLhistorie; 
else KLFDSqlDataSource.SelectCommand = KLFDSQL; 
KLFDSqlDataSource.SelectParameters.Clear();
KLFDSqlDataSource.SelectParameters.Add("GBID", DbType.String, userName);
//User.Identity.Name); 
//TODO KLFDDropDownList.DataBind();

【问题讨论】:

    标签: c# asp.net data-binding


    【解决方案1】:

    可能是您将下拉选择的索引作为其数据源的索引传递,因为从下拉列表中您获得索引 0 但数据源为空,因此没有 0 索引

    【讨论】:

    • 在页面加载时,您是否使用下拉选择的索引值
    • 不,不使用它。甚至没有在成功的初始加载上使用 dd (也有一个空集......)
    • 能否请您发布一些代码,或者您遇到错误的那一行?
    • if (Typeselection == "3") KLFDSqlDataSource.SelectCommand = KLFDSQLhistory;否则 KLFDSqlDataSource.SelectCommand = KLFDSQL; KLFDSqlDataSource.SelectParameters.Clear(); KLFDSqlDataSource.SelectParameters.Add("GBID", DbType.String, userName); //User.Identity.Name); //TODO KLFDDropDownList.DataBind();
    • 正如您评论 Databind 行,只是为了确认,现在不会抛出错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多