mhe*_*nry 4 c# asp.net selecteditem drop-down-menu
我在自定义用户控件中有以下代码,其中包含名为ddlAggerationUnitId的DropDownList.DropDownList是Page_Load()事件上的DataBind."值"设置为40并且它存在.如果我删除set方法的逻辑,页面将加载并选择正确的项目,但如果值为false,则页面会抛出异常.我想通过在尝试设置它之前查看值是否存在来避免该异常,因此逻辑是必要的.
现在,看起来编译器正在将if语句评估为false,即使我知道它应该是真的.
public long? Value
{
get { return Int64.Parse(ddlAggerationUnitId.SelectedItem.Value); }
set
{
if (ddlAggerationUnitId.Items.FindByValue(value.ToString()) != null)
{
ddlAggerationUnitId.SelectedValue = value.ToString();
}
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!谢谢!
编辑:这是我的Page_Load()事件:
protected void Page_Load(object sender, EventArgs e)
{
ddlAggerationUnitId.DataSource = ExternalAccount.GetAggregationUnits();
ddlAggerationUnitId.DataTextField = "Value";
ddlAggerationUnitId.DataValueField = "Key";
ddlAggerationUnitId.DataBind();
}
Run Code Online (Sandbox Code Playgroud)
以下代码目前有效,但我认为DataBind两次有点奇怪.这证实了我之前怀疑数据是否在FindByValue()之后绑定了?
任何人都有关于如何清理此代码的任何想法?
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
BindDdlAggerationUnitId();
}
}
private void BindDdlAggerationUnitId()
{
ddlAggerationUnitId.DataSource = SIGOpsGUI.App_Code.Business.ExternalAccount.GetAggregationUnits();
ddlAggerationUnitId.DataTextField = "Value";
ddlAggerationUnitId.DataValueField = "Key";
ddlAggerationUnitId.DataBind();
}
public long? Value
{
get { return Int64.Parse(ddlAggerationUnitId.SelectedItem.Value); }
set
{
BindDdlAggerationUnitId();
ddlAggerationUnitId.SelectedIndex = -1;
ListItem item = ddlAggerationUnitId.Items.FindByValue(value.ToString());
if (item != null)
{
ddlAggerationUnitId.SelectedValue = value.ToString();
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21499 次 |
| 最近记录: |