列表框在回发时重复(重复)

问题描述 投票:2回答:1

我知道这个问题已经发布并且已经给出了答案,但我的情况有所不同,因为我在单个方法上填充了多个下拉列表,因此如果我按照此链接After every postback dropdownlist items repeats,它将仅保留最后一个下拉列表中的项目,因为它会清除之前的所有清单。

下面是我的代码,我使用此方法作为gridview的过滤器。

private void BindDropDownList()
{
        PopulateDropDown(ddlgvsite, lblsite.Text);
        PopulateDropDown(ddlgvskill, lblskill.Text);
        PopulateDropDown(ddlgvshift, lblshift.Text);
        PopulateDropDown(ddlgvtm, lbltm.Text);
        PopulateDropDown(ddlgvgrpm, lblgrpm.Text);
        PopulateDropDown(ddlgvopsm, lblopsm.Text);
        PopulateDropDown(ddlgvltype, lblltype.Text);
}
private void PopulateDropDown(ListBox ddl, string columnName)
{
        ddl.DataSource = BindDropDown(columnName);
        ddl.DataTextField = columnName;
        ddl.DataValueField = columnName;
        ddl.DataBind();
        ddl.Items.Insert(0, new ListItem("Please Select", "0"));
}
private void setDropdownselectedItem(string selectedvalue, ListBox ddl)
{
        if (!string.IsNullOrEmpty(selectedvalue))
        {
            ddl.Items.FindByValue(selectedvalue).Selected = true;
        }
}
protected void DropDownChange(object sender, EventArgs e)
    {
        ListBox dropdown = (ListBox)sender;
        string selectedValue = dropdown.SelectedItem.Value;
        switch (dropdown.ID.ToLower())
        {
            case "ddlgvsite":
                ViewState["Site"] = selectedValue;
                break;
            case "ddlgvskill":
                ViewState["Skill"] = selectedValue;
                break;
            case "ddlgvshift":
                ViewState["Shift"] = selectedValue;
                break;
            case "ddlgvtm":
                ViewState["TM"] = selectedValue;
                break;
            case "ddlgvgrpm":
                ViewState["GrpM"] = selectedValue;
                break;
            case "ddlgvopsm":
                ViewState["OpsM"] = selectedValue;
                break;
            case "ddlgvltype":
                ViewState["Ltype"] = selectedValue;
                break;
        }
        this.BindGrid();
    }
private DataTable BindDropDown(string columnName)
    {
        String strConnString = System.Configuration.ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
        MySqlConnection con = new MySqlConnection(strConnString);
        MySqlCommand cmd = new MySqlCommand("SELECT DISTINCT (" + columnName + ") FROM approved WHERE " + columnName + " IS NOT NULL", con);
        MySqlDataAdapter sda = new MySqlDataAdapter(cmd);
        DataTable dt = new DataTable();
        sda.Fill(dt);
        return dt;
    }

那么有没有办法让我避免在回发时重复列表?请告诉我。提前致谢。

c# asp.net drop-down-menu
1个回答
2
投票

听起来像DataBind没有清除旧值,所以你可以尝试:

ddl.Items.Clear();

在PopulateDropDown的开头

© www.soinside.com 2019 - 2024. All rights reserved.