我在包含名为ddlAggerationUnitId的DropDownList的自定义用户控件中有以下代码。 DropDownList在Page_Load()事件上是DataBind的。 “价值”设置为40,它是存在的。如果我删除了set方法的逻辑,页面将加载并选择正确的项目,但是如果值为假,页面会引发异常。我想通过在设置它之前查看该值是否存在来避免这种异常,因此为什么逻辑是必需的。ASP.NET上的FindByValue DropDownList
现在看起来编译器正在评估if语句为false,即使我知道它应该是真的。
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你在哪里设置值和数据绑定? – Marcie 2010-11-30 18:20:37
使用try catch环绕它,并在catch ddlAggerationUnitId.SelectedValue = -1中执行此操作。只是一个解决办法。 – franklins 2010-11-30 18:21:12
编辑上面的问题以包含Page_Load。 – mhenry 2010-11-30 18:39:19