【问题标题】:SelectedValue null in dropdownlist so errow thrown下拉列表中的 SelectedValue null 因此抛出错误
【发布时间】:2011-07-28 05:24:06
【问题描述】:

这是我在 aspx 中的代码:

 <EditItemTemplate>           
    <asp:DropDownList ID="DropDownList1" runat="server" 
         DataSourceID="SqlDataSource2" SelectedValue='<%#GetSYSACCID(Eval("SYSACCID"))%>'
         DataTextField="UserName" DataValueField="SYSACCID">
    </asp:DropDownList>
  </EditItemTemplate>

DropDownList 在gridview 的TemplateField 的EditItemTemplate 里面。 GetSYSACCID 是在 aspx.cs 中定义的函数。问题是当 Eval("SYSACCID") 为 null 时,GetSYSACCID 返回 null 并因此引发错误。我该如何处理?我知道这看起来很简单,但仍然让我很痛苦。

提前致谢:)

【问题讨论】:

  • 为什么不从后面的代码中执行此操作,在对下拉列表进行数据绑定之后?这将允许您使用旧好的if (yourvalue != null){}
  • 当你得到一个空值时从GetSYSACCID返回0。
  • @Steve B:我很想这样做,但这种肮脏的东西不是我开发的。这是另一位员工送给我的礼物。

标签: c# asp.net gridview drop-down-menu sqldatasource


【解决方案1】:

你可以做类似...

SelectedValue='<%# GetSYSACCID(Eval("SYSACCID") == null ? 0 : Eval("SYSACCID"))%>'

你有默认值来处理空值。例如

<asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlDataSource2" AppendDataBoundItems="true"
            SelectedValue='<%#GetSYSACCID(Eval("SYSACCID"))%>' DataTextField="UserName" DataValueField="SYSACCID" >
            <asp:ListItem Value="0" Text="---Select---"></asp:ListItem>
        </asp:DropDownList>

【讨论】:

  • 我收到此错误:“'DropDownList1' 的 SelectedValue 无效,因为它不存在于项目列表中。参数名称:值”
  • 您的 SqlDatasource 是否返回任何内容?换句话说,您是否尝试在空列表中设置 SelectedValue
  • @Antony Scott:你想设置一个吗?意味着什么?我的 SqlDataSource 返回一个列表,它们都有值。但是数据绑定表达式是 selectedvalue 有时是 null 这就是为什么我会遇到各种异常。
  • @Antony:没有返回列表。它不是空列表。
  • @Bob Lee Swagger,对不起,我在 ipad 屏幕键盘上按了返回键而不是退格键 :)
【解决方案2】:

试试这个:

SelectedValue='<%# GetSYSACCID(Eval("SYSACCID")) ?? 0 %>'

或在收到空输入时将GetSYSACCID 修改为return 0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    • 1970-01-01
    相关资源
    最近更新 更多