1

次のマークアップがあります。

<asp:DropDownList ID="ddlTownships" DataTextField="Name" AutoPostBack="True" AppendDataBoundItems="True" DataValueField="Id" runat="server" OnSelectedIndexChanged="ddlTownships_SelectedIndexChanged">
                        <asp:ListItem Value="0" Text="Please select a township"></asp:ListItem>
                    </asp:DropDownList>

これは背後にあるコードです:

protected void ddlRegions_SelectedIndexChanged(object sender, EventArgs e)
        {
            var townshipDAO = (TownshipDAO)FactoryDAO.getInstance().getDAOByType(DAOEnum.Township);
            ddlTownships.DataSource = townshipDAO.getAllTownshipsByRegionId(Int64.Parse(ddlRegions.SelectedValue));
            ddlTownships.DataBind();
            liTownships.Visible = true;
            liSettlements.Visible = false;
            divPhasesConsole.Visible = false;
            liNumberOfStands.Visible = false;
            divFirstDelimiter.Visible = false;
        }

基本的に、ユーザーが ddlRegion からアイテムを選択するたびに、選択された regionId を持つすべてのタウンシップを取得し、ドロップダウン リストを再作成します。ただし、ddlTownships は、以前に選択されたさまざまな地域のタウンシップを記憶しています。AppendDataBoundItems="True" というプロパティがあることに注意してください。これは、「タウンシップを選択してください」というリスト項目を追加できる唯一の方法だったからです。listitem をマークアップで定義したままにし、ddl が再作成された後に以前の項目が表示されないようにするにはどうすればよいですか。

御時間ありがとうございます。

4

1 に答える 1

1

コード ビハインドから特定のインデックスに新しいリスト項目を挿入できます。したがって、データバインディングの後にこれを削除AppendDataBoundItemsして追加できます。

ddlTownships.Items.Insert(0, new ListItem() { Text = "Please select a township", Value = "0" });

知っておくと役立つもう 1 つのことは、データバインディングの前にリストをクリアできることです。

ddlTownships.Items.Clear();
于 2012-12-09T17:41:54.533 に答える