如何在ASP.NET的另一个下拉列表中基于用户选择禁用下拉列表项? [英] How do I disable a dropdownlist item based on a user selection on another drop down in ASP.NET?

查看:43
本文介绍了如何在ASP.NET的另一个下拉列表中基于用户选择禁用下拉列表项?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个带有少数项目的下拉列表。



如果用户选择X,则需要从下一个下拉列表中禁用X。



如果用户选择Y,则需要从下一个下拉菜单中禁用Y。



反之亦然。



我尝试了此操作,但没有用:

 保护无效ddlSearchColumn1_SelectedIndexChanged(object sender,EventArgs e)
{
var ddl =(DropDownList)sender;

字符串itemSelected = ddl.SelectedValue;

ddlSearchColumn2.Items.FindByValue(itemSelected).Enabled = false;
}

有人可以帮我吗?

解决方案

您非常接近:



MarkUP:

 列表1:< asp:DropDownList ID = ddlSearchColumn1 runat = server OnSelectedIndexChanged = ddlSearchColumn1_SelectedIndexChanged AutoPostBack = true /> 
列表2:< asp:DropDownList ID = ddlSearchColumn2 runat = server AutoPostBack = true />

后面的代码:

 公共局部类_Default:页面
{
受保护的void Page_Load(对象发送者,EventArgs e)
{
if(!Page.IsPostBack)
{//只需在下拉框中输入内容
var items1 = new List< ListItem>()
{
new ListItem( Select Option),
new ListItem( 测试1),
新的ListItem(测试2),
新的ListItem(测试3)
};

var items2 = new List< ListItem>()
{
new ListItem( Select Option,),
new ListItem( DDL 2测试1),
新ListItem( DDL 2测试2),
新ListItem( DDL 2测试3)
};

ddlSearchColumn1.DataSource = items1;
ddlSearchColumn1.DataBind();

ddlSearchColumn2.DataSource = items2;
ddlSearchColumn2.DataBind();
}
}

受保护的无效ddlSearchColumn1_SelectedIndexChanged(对象发送者,EventArgs e)
{
DropDownList list =发送者为DropDownList;
if(list == null || list.SelectedValue.ToLower()!= test 1)//或任何符合条件的
返回;

ddlSearchColumn2.Items.FindByValue( DDL 2测试1)。Attributes.Add( Disabled, Disabled);
}
}

如果您对客户端解决方案感兴趣: / p>

使用jQuery:

 清单1:< asp:DropDownList ID = ddlSearchColumn1 runat =服务器 /> 
清单2:< asp:DropDownList ID = ddlSearchColumn2 runat = server />

< script>
jQuery('#<%= ddlSearchColumn1.ClientID%>')。change(function()
{
if(jQuery(this).val()!='测试1 ')//更改您的条件
返回;

jQuery('#<%= ddlSearchColumn2.ClientID%> option [value = DDL 2 Test 1]')。attr (已禁用,已禁用);
});
< / script>

只使用javascript no库:

 列表1:< asp:DropDownList ID = ddlSearchColumn1 runat = server /> 
清单2:< asp:DropDownList ID = ddlSearchColumn2 runat = server />

< script>
document.getElementById('<%= ddlSearchColumn1.ClientID%>')。onchange =函数()
{
var orgDdl = document.getElementById('<%= ddlSearchColumn1。 ClientID%>');
var org2ddl = document.getElementById(’<%= ddlSearchColumn2.ClientID%>’);

,如果(orgDdl.value!='Test 1')
返回;

for(var i = 0,ii = org2ddl.options.length; i< ii; i ++)
{
if(org2ddl.options [i] .value = = DDL 2测试1)
{
org2ddl.options [i] .disabled = disabled;
休息时间;
}
}
};
< / script>


I have two drop down lists with a handful of items.

If the user selects X, X needs to be disabled from the next drop down.

If the user selects Y, Y needs to be disabled from the next drop down.

And vice-versa.

I tried this but it is not working:

protected void ddlSearchColumn1_SelectedIndexChanged(object sender, EventArgs e)
{
    var ddl = (DropDownList) sender;

    string itemSelected = ddl.SelectedValue;

    ddlSearchColumn2.Items.FindByValue(itemSelected).Enabled = false;
}

Can anyone give me a hand?

解决方案

You were very close:

MarkUP:

List 1: <asp:DropDownList ID="ddlSearchColumn1" runat="server" OnSelectedIndexChanged="ddlSearchColumn1_SelectedIndexChanged" AutoPostBack="true" />
List 2: <asp:DropDownList ID="ddlSearchColumn2" runat="server" AutoPostBack="true" />

Code Behind:

public partial class _Default : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {//JUST PUT SOMETHING IN THE DROPDOWN BOXES
            var items1 = new List<ListItem>()
            {
                new ListItem("Select Option"),
                new ListItem("Test 1"),
                new ListItem("Test 2"),
                new ListItem("Test 3")
            };

            var items2 = new List<ListItem>()
            {
                new ListItem("Select Option", ""),
                new ListItem("DDL 2 Test 1"),
                new ListItem("DDL 2 Test 2"),
                new ListItem("DDL 2 Test 3")
            };

            ddlSearchColumn1.DataSource = items1;
            ddlSearchColumn1.DataBind();

            ddlSearchColumn2.DataSource = items2;
            ddlSearchColumn2.DataBind();
        }
    }

    protected void ddlSearchColumn1_SelectedIndexChanged(object sender, EventArgs e)
    {
        DropDownList list = sender as DropDownList;
        if (list == null || list.SelectedValue.ToLower() != "test 1") // OR WHATEVER YOUR CRITERIA IS
            return;

        ddlSearchColumn2.Items.FindByValue("DDL 2 Test 1").Attributes.Add("Disabled", "Disabled");
    }
}

IF you are interested in a client side solution:

With jQuery:

List 1: <asp:DropDownList ID="ddlSearchColumn1" runat="server" />
List 2: <asp:DropDownList ID="ddlSearchColumn2" runat="server" />

<script>
    jQuery('#<%= ddlSearchColumn1.ClientID %>').change(function ()
    {
        if (jQuery(this).val() != 'Test 1')//CHANGE YOUR CRITERIA
            return;

        jQuery('#<%= ddlSearchColumn2.ClientID %> option[value="DDL 2 Test 1"]').attr('disabled', 'disabled');
    });
</script>

Just using javascript no library:

List 1: <asp:DropDownList ID="ddlSearchColumn1" runat="server" />
List 2: <asp:DropDownList ID="ddlSearchColumn2" runat="server" />

<script>
    document.getElementById('<%= ddlSearchColumn1.ClientID %>').onchange = function ()
    {
        var orgDdl = document.getElementById('<%= ddlSearchColumn1.ClientID %>');
        var org2ddl = document.getElementById('<%= ddlSearchColumn2.ClientID %>');

        if (orgDdl.value != 'Test 1')
            return;

        for (var i = 0, ii = org2ddl.options.length; i < ii; i++)
        {
            if (org2ddl.options[i].value == "DDL 2 Test 1")
            {
                org2ddl.options[i].disabled = "disabled";
                break;
            }
        }
    };
</script>

这篇关于如何在ASP.NET的另一个下拉列表中基于用户选择禁用下拉列表项?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆