在usercontrol的Dropdownlist中设置选定的索引

时间:2010-11-11 15:26:45

标签: asp.net visual-studio user-controls

我对usercontrols相当新。到目前为止,我发现它们对于处理大量重复用户输入字段非常有用。但是,我在预控制控件中的下拉列表时遇到问题。我在我的ascx页面添加了一个ddl然后绑定了ddl并将其公开:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        List<Travel_CarSize> tc = Travel_CarSizes.GetCarSizes();
        ddlCarSize.DataSource = tc;
        ddlCarSize.DataTextField = "CarSize";
        ddlCarSize.DataValueField = "CarSizeID";
        ddlCarSize.DataBind();
    }
}

public string CarSize
{
    get { return ddlCarSize.SelectedValue.ToString(); }
    set { ddlCarSize.SelectedIndex = ddlCarSize.Items.IndexOf(ddlCarSize.Items.FindByValue(value)); }
}

然而,当我以编程方式尝试在控件中设置ddl的选择时,我总是设置它然后绑定它。在我的aspx.cs文件中,我设置了:

CarControl1.CarSize = "3";

该程序旨在显示一个空的usercontrol(带有数据绑定ddl)和gridview。用户选择gridview条目,并且该usercontrol将填充数据。所以ddl从一开始就被绑定,然后发生导致“预选”ddl的事件。

如果这没有给我结果我正在寻找我在if(!IsPostBack)上设置断点,ddlCarSize.DataBind();和集{}。我运行程序,它绑定我的ddl,我在gridview中做出选择。当我点击选择时我发现它在用户控件中命中if(!IsPostBack)并说“哦,这是一个回发,不要进入if。”然后它命中集{}但是ddl现在是空的。然后它再次点击if(!IsPostBack)并且由于某种原因现在说它不是回发并重新绑定ddl。

我认为这是一个非常常见的问题,但我还没有找到解决方案。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        Bind()
    }
}

public Bind()
{
    if (ddlCarSize.Items.Count == 0)
    {
        List<Travel_CarSize> tc = Travel_CarSizes.GetCarSizes();
        ddlCarSize.DataSource = tc;
        ddlCarSize.DataTextField = "CarSize";
        ddlCarSize.DataValueField = "CarSizeID";
        ddlCarSize.DataBind();
    }
}

public string CarSize
{
    get { return ddlCarSize.SelectedValue.ToString(); }
    set 
    {
        Bind();
        ddlCarSize.SelectedIndex = ddlCarSize.Items.IndexOf(ddlCarSize.Items.FindByValue(value)); }
}