FindByValue on ASP.NET DropDownList

浪子不回头ぞ 提交于 2019-12-05 14:40:46

The following code currently works, however I think it's a bit strange to DataBind twice. This confirms my earlier suspicion that the data was being binded AFTER FindByValue()?

Anyone have any ideas on how to clean this code up?

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();
        }
    }
}

see if following code helps you

updated page_load

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        BindDdlAggerationUnitId();
    }
}

private void BindDdlAggerationUnitId()
{
    ddlAggerationUnitId.DataSource = ExternalAccount.GetAggregationUnits();
    ddlAggerationUnitId.DataTextField = "Value";
    ddlAggerationUnitId.DataValueField = "Key";
    ddlAggerationUnitId.DataBind();
}



public long? Value
{
    get { return Int64.Parse(ddlAggerationUnitId.SelectedItem.Value); }
    set
    {
        ListItem item = null;
        if (value.HasValue && ddlAggerationUnitId.Items.Count > 0 && ddlAggerationUnitId.SelectedIndex > 1)
            item = ddlAggerationUnitId.Items.FindByValue(value.ToString());
        if ( item != null)
        {
            ddlAggerationUnitId.SelectedValue = value.ToString();
        }
    }
}

Page_Load should be:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
       ddlAggerationUnitId.DataSource = ExternalAccount.GetAggregationUnits();
       ddlAggerationUnitId.DataTextField = "Value";
       ddlAggerationUnitId.DataValueField = "Key";
       ddlAggerationUnitId.DataBind();
    }
}

Just a work around:

public long? Value
{
get { return Int64.Parse(ddlAggerationUnitId.SelectedItem.Value); }
set
{
 try 
 {
    if (ddlAggerationUnitId.Items.FindByValue(value.ToString()) != null)
    {
        ddlAggerationUnitId.SelectedValue = value.ToString();
    }
 }
 catch 
 {
 ddlAggerationUnitId.SelectedIndex = -1;
 }
}
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!