在页面加载时从.aspx中删除下拉项

本文关键字:删除 aspx 加载 | 更新日期: 2023-09-27 18:33:00

我有以下代码,当选择 dropdown1 中的值时,它会从 dropdown2 中删除在 dropdown1 中选择的项目:

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        DropDownList2.Items.Remove(DropDownList1.SelectedItem);
    }

这工作正常。 但是,我尝试在页面加载时添加相同的代码,但它并没有删除我猜测的值,因为没有选择任何内容,我该如何完成此操作?

 protected void Page_Load(object sender, EventArgs e)
    {
        DropDownList2.Items.Remove(DropDownList1.SelectedItem);
    }

这是不起作用的,有什么想法吗?

在页面加载时从.aspx中删除下拉项

你试过吗?

if(!IsPostback)
{
    DropDownList2.Items.Remove(DropDownList1.SelectedItem);
}

在您的Page_Load活动中?另外,您如何绑定数据?为什么不在Selected_IndexChanged适当的DropdowsList而不是Page_Load上执行此操作?在我看来,这就是这段代码所属的地方。

我想做的是在下拉列表 2 上不显示当前在下拉列表 1 中选择的内容。

您的问题是什么,在页面加载时,所有内容都会"重置"回来。因此,DropDownList1.SelectedItem 是列表中的第一个或默认项目。如果 DropDownList1.SelectedItem 是"One",它将始终从 DropDownList2 中删除"One"。

您需要的是 DropDownList1 的按钮或 OnSelectedIndexChanged 事件。

试试我在下面所做的,它对我有用。

<form id="form1" runat="server">
<div>
    <asp:DropDownList ID="ddlOne" runat="server" OnSelectedIndexChanged="ddlOne_OnSelectedIndexChanged" AutoPostBack="true" />
    <br />
    <br />
    <asp:DropDownList ID="ddlTwo" runat="server" />
    <br />
    <br />
    <asp:Button ID="btRemove" runat="server" Text="Remove" 
        onclick="btRemove_Click" />
</div>
</form>

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            // Bind data
            BindLists();
        }
    }
    /// <summary>
    /// Removes whatever Selected Item from ddlTwo that is 
    /// currently selected in ddlOne.
    /// </summary>
    private void RemoveFromTwoWhatIsSelectedInOne()
    {
        ddlTwo.Items.Remove(ddlOne.SelectedItem);
    }
    /// <summary>
    /// Click handler for btRemove. Calls the method 
    /// RemoveFromTwoWhatIsSelectedInOne()
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btRemove_Click(object sender, EventArgs e)
    {
        RemoveFromTwoWhatIsSelectedInOne();
    }
    /// <summary>
    /// OnSelectedIndexChanged handler for ddlOne. Calls the method 
    /// RemoveFromTwoWhatIsSelectedInOne()
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void ddlOne_OnSelectedIndexChanged(object sender, EventArgs e)
    {
        RemoveFromTwoWhatIsSelectedInOne();
    }
    /// <summary>
    /// Binds a list of names the two Drop Down Lists, ddlOne and ddlTwo, by using 
    /// the same Data Source from the Manager.
    /// </summary>
    private void BindLists()
    {
        // Get the data
        Manager theManager = new Manager();
        List<Names> theNames = theManager.GetNames();
        // Assign the data source
        ddlOne.DataSource = theNames;
        ddlTwo.DataSource = theNames;
        // Bind each drop down list
        ddlOne.DataBind();
        ddlTwo.DataBind();
    }