我有一个表填充名为DropDownList_Tracking_Status的下拉列表。该表有3列; ID,TrackingName和Active。当我填写下拉列表时,我将每条记录拉到Active =“Y”。
当我在表单中读取数据时,我正在尝试为DropDownList_Tracking_Status预先选择合适的值。如果当前状态为空(尚未选择一个),我将其设置为2.否则,我将其设置为等于先前选择的任何值。我遇到的问题是,如果当前的跟踪状态是一个自那以后被标记为非活动状态(Active设置为“N”)的状态,则会引发错误。显然,因为它无法预先选择下拉列表中不存在的值。
关于如何解决这个问题的任何想法?我目前的代码块如下所示:
if ((DT["TrackingStatus"].ToString() == ""))
{
DropDownList_Tracking_Status.SelectedValue = "2";
}
else
{
DropDownList_Tracking_Status.SelectedValue = (DT["TrackingStatus"].ToString());
}
修改 我只想补充说,填充下拉列表的表是包含Active字段的表。名为DT的SqlDataReader中没有该字段。我想我可以创建一个连接两者的查询并检查Active的值,但我希望有一种更简单的方法。有些东西(伪代码):
If DropDownList_Tracking_Status.SelectedValue = (DT["TrackingStatus"].ToString()); throws you an error, do this instead...
答案 0 :(得分:2)
您可以将代码放在try-catch
块中,
try
{
DropDownList_Tracking_Status.SelectedValue = DT["TrackingStatus"].ToString();
}
catch
{
DropDownList_Tracking_Status.SelectedValue = "2";
}
它将绑定值,如果它存在,否则它将通过异常,您可以在catch
块中对任何默认值进行设置。
答案 1 :(得分:0)
以下是否可行(可能在检查空记录之前):
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似乎是一个很好的解决方案,或者另一种方法是查看下拉列表是否包含目标值。请参阅Stack Overflow问题here