[英]DropDownList with a SelectedValue that doesn't exist
我有一张表,该表填充了一个名为DropDownList_Tracking_Status的下拉列表。 该表有3列; ID,TrackingName和有效。 当我填写下拉列表时,我提取Active =“ Y”的每条记录。
在将数据读取到表单中时,我正在尝试为DropDownList_Tracking_Status预选适当的值。 如果当前状态为空(尚未选择一个),则将其设置为2。否则,将其设置为等于先前选择的任何值。 我的问题是,如果当前的跟踪状态是自被标记为非活动状态(“活动”设置为“ N”)后,它将引发错误。 显然,因为它无法预先选择下拉列表中不存在的值。
关于如何解决这个问题的任何想法? 我当前的代码块如下所示:
if ((DT["TrackingStatus"].ToString() == ""))
{
DropDownList_Tracking_Status.SelectedValue = "2";
}
else
{
DropDownList_Tracking_Status.SelectedValue = (DT["TrackingStatus"].ToString());
}
编辑我将要添加的是,填充dropdownlist的表是包含Active字段的表。 名为DT的SqlDataReader中没有该字段。 我想我可以创建一个将两者结合起来并检查Active值的查询,但是我希望有一种更简单的方法。 上面写着(用伪代码):
If DropDownList_Tracking_Status.SelectedValue = (DT["TrackingStatus"].ToString()); throws you an error, do this instead...
您可以将代码放在try-catch
块中,如下所示:
try
{
DropDownList_Tracking_Status.SelectedValue = DT["TrackingStatus"].ToString();
}
catch
{
DropDownList_Tracking_Status.SelectedValue = "2";
}
它将绑定该值(如果存在),否则将通过异常绑定,您可以在该异常上为catch
块分配任何默认值。
是否可能出现以下情况(可能在检查空记录之前):
if ((DT["TrackingStatus"].ToString() == ""))
{
DropDownList_Tracking_Status.SelectedValue = "2";
}
else if(DT["Active"] == "N")
{
DropDownList_Tracking_Status.SelectedValue = "2";
}
else
{
DropDownList_Tracking_Status.SelectedValue = (DT["TrackingStatus"].ToString());
}
更新将Active字段添加到DT似乎是一个很好的解决方案,或者另一种方法是查看下拉列表是否包含目标值。 请参阅此处的堆栈溢出问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.