在Items.Clear()

时间:2017-07-25 14:16:35

标签: asp.net webforms

我用几个项目填充下拉列表。当用户选择其中一个项目时,将填充第二个下拉列表。

当用户点击第一个下拉列表中的“x”按钮时,必须清除这两个下拉列表。第一个下拉列表会自动清除,我使用“dropdown.Items.Clear()”清除第二个下拉列表。

当我再次加载第一个下拉列表的数据时,第二个下拉列表不会更新。

这是代码:

protected void DropDownDiagStati_SelectedIndexChanged(object sender, EventArgs e)
    {
        int selectedIndex = this.DropDownDiagStati.SelectedIndex;
        PopulateDDLStates(selectedIndex);
    }

private void PopulateDDLStates(int selectedIndex)
    {
        // Ottengo i diagrammi di stato in sessione
        ArrayList diagrammiStato = Session["stateDiagrams"] as ArrayList;

        if(selectedIndex > 0)
        {
            // Ottengo il diagramma di stato selezionato
            DocsPaWR.DiagrammaStato currDiagStato = (DocsPaWR.DiagrammaStato)diagrammiStato[selectedIndex - 1];

            // Ottengo gli stati del diagramma di stato selezionato
            Stato[] stati = currDiagStato.STATI;

            for(int i = 0; i < stati.Length; i++)
            {
                ListItem item = new ListItem();

                item.Value = Convert.ToString(stati[i].SYSTEM_ID);
                item.Text = stati[i].DESCRIZIONE;

                this.DropDownStati.Items.Add(item);
                this.UpPanelStatiDdl.Update();
            }
        }
        else
        {
            this.DropDownStati.Items.Clear();
            this.UpPanelStatiDdl.Update();
        }
    }

我只看到第二个下拉列表中的旧值,我无法选择它。

2 个答案:

答案 0 :(得分:0)

您需要删除更新窗格,或者您可以将数据源设置为下拉列表。

ddl1.datasource = DataSource;
ddl1.DataTextField = "name";
ddl1.DataValueField = "id";
ddl1.DataBind();

答案 1 :(得分:0)

问题是clear函数还删除了默认的空Item。我解决了创建一个私有方法,删除所有项目,但第一个。