【发布时间】:2011-05-18 01:11:38
【问题描述】:
我在包含名为 ddlAggerationUnitId 的 DropDownList 的自定义用户控件中有以下代码。 DropDownList 在 Page_Load() 事件上是 DataBind'd。 “值”设置为 40 并且它确实存在。如果我删除了 set 方法的逻辑,页面将加载并选择正确的项目,但如果该值是虚假的,则页面将引发异常。我想通过在尝试设置它之前查看该值是否存在来避免该异常,因此为什么需要该逻辑。
现在看起来编译器将 if 语句评估为假,尽管我知道它应该是真的。
public long? Value
{
get { return Int64.Parse(ddlAggerationUnitId.SelectedItem.Value); }
set
{
if (ddlAggerationUnitId.Items.FindByValue(value.ToString()) != null)
{
ddlAggerationUnitId.SelectedValue = value.ToString();
}
}
}
任何帮助将不胜感激!谢谢!
编辑:这是我的 Page_Load() 事件:
protected void Page_Load(object sender, EventArgs e)
{
ddlAggerationUnitId.DataSource = ExternalAccount.GetAggregationUnits();
ddlAggerationUnitId.DataTextField = "Value";
ddlAggerationUnitId.DataValueField = "Key";
ddlAggerationUnitId.DataBind();
}
【问题讨论】:
-
我们可以看到您的 Page_Load 您设置值和数据绑定的位置吗?
-
用 try catch 包围它,并在 catch ddlAggerationUnitId.SelectedValue = -1 中执行此操作。只是一种解决方法。
-
修改了上面的问题以包括 Page_Load。
-
下拉列表是否为 NULL,因为它试图在 DataBind 之前设置 SelectedValue?
标签: c# asp.net drop-down-menu selecteditem