【问题标题】:Set selected index in a Dropdownlist in usercontrol在用户控件的下拉列表中设置选定的索引
【发布时间】:2010-11-11 15:26:45
【问题描述】:

我对用户控件相当陌生。到目前为止,我发现它们对于处理大量重复的用户输入字段非常有用。但是,我在控件中预填充下拉列表时遇到问题。我将 ddl 添加到我的 ascx 页面,然后绑定 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";

该程序旨在显示一个空的用户控件(带有数据绑定 ddl)和一个网格视图。用户选择一个 gridview 条目,该用户控件被数据填充。因此,ddl 从一开始就被绑定,然后发生导致“预选”ddl 的事件。

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

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

【问题讨论】:

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


    【解决方案1】:
    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)); }
    }
    

    【讨论】:

    • 猎人,你是我新的个人英雄。这是一个如此简单的解决方案,我从未想过它。谢谢。
    猜你喜欢
    • 2010-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多