You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET中依赖患者中心的ddlDialyser下拉框无法获取选中值问题

问题根因

  1. 未做空值校验:如果数据库存储的透析器值不在当前动态加载的下拉选项范围内,Items.FindByText()会返回Nothing,直接调用.Selected会抛出空引用异常,导致选中逻辑失效
  2. 未提前清空原有选中状态:直接设置新选中项时,可能和下拉框默认的选中项冲突,导致选中不生效
  3. 存在冗余操作:你已经提前把透析器值赋值给了dialyser变量,但后续逻辑又重复读取DataRow数据,容易出现类型转换错误

修复代码

将出问题的代码段替换为如下实现:

' 先清空原有选中状态
ddlDialyser.ClearSelection()

If Not IsDBNull(hd.Tables(0).Rows(0).Item("Dialyser")) Then
    ' 统一做类型转换和去空格,避免匹配失败
    Dim targetDialyser As String = hd.Tables(0).Rows(0).Item("Dialyser").ToString().Trim()
    ' 先判断目标选项是否存在,避免空引用异常
    Dim targetOption As System.Web.UI.WebControls.ListItem = ddlDialyser.Items.FindByText(targetDialyser)
    If targetOption IsNot Nothing Then
        targetOption.Selected = True
    End If
End If

补充注意事项

  • 若你需要在其他逻辑中获取用户选中的透析器值,直接调用ddlDialyser.SelectedValue或ddlDialyser.SelectedItem.Text即可
  • 注意回发逻辑处理:如果你的下拉框绑定逻辑写在Page_Load中,必须套上If Not IsPostBack Then判断,否则每次页面回发都会重新绑定下拉框,清空用户的选中值
  • 你现有代码中不同中心的下拉框绑定逻辑重复度很高,可以封装为公共方法,传入中心名称参数即可完成绑定,减少冗余代码

内容的提问来源于stack exchange,提问作者Novester

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 14:45:03