如何在ASP.Net Mvc3Razor中动态隐藏dropdownlist2中的dropdownlist1选定值

时间:2012-10-12 13:55:44

标签: javascript asp.net-mvc-3 jquery

我使用的是ASP.Net MVC3 Razor,我在.cshtml中有两个下拉列表,让我们说ddl1和ddl2。 我在控制器中绑定了数据并使用viewbag发送到下拉列表。 两个ddl都有相同的数据,如A,B,C,D。如果我在ddl1中选择A,它应该在ddl2中隐藏A;如果选择B,它应该在ddl2中隐藏B.任何人都可以帮我使用javascript或jquery。

这是我的控制器,我已经绑定..

 public ActionResult Index()
        {
            ViewBag.ddl1 = new SelectList(db.Collection, "ID", "Name");
            ViewBag.ddl2 = new SelectList(db.Collection, "ID", "Name");
            return View();
        }

并且视图是(上述操作的.cshtml)

<table class="table">
    <tr>
        <td>      
       @Html.DropDownList("ddl1", "-select name-")
        </td>
        <td>
        @Html.DropDownList("ddl2","-select name-")
          </td>
    </tr>
    </table>

Thanx提前

1 个答案:

答案 0 :(得分:1)

这是主要的想法。假设我们有2个下拉列表:

<select id="ddl1">
    <option>Select</option>
    <option value="A">A</option>
    <option value="B">B</option>
    <option value="C">C</option>
    <option value="D">D</option>
</select><br/><br/>
<select id="ddl2">
    <option>Select</option>
    <option value="A">A</option>
    <option value="B">B</option>
    <option value="C">C</option>
<option value="D">D</option>
</select>​

从ddl2中删除ddl1选定值:

$('#ddl1').change(function() {
    $('#ddl2 option').each(function() {
        if ($(this).attr('value') == $('#ddl1 option:selected').attr('value')) {
            $(this).remove();
        }
    });
});

还要从ddl1:

中删除ddl2选定值
$('#ddl2').change(function() {
    $('#ddl1 option').each(function() {
        if ($(this).attr('value') == $('#ddl2 option:selected').attr('value')) {
            $(this).remove();
        }
    });
});

如果您想在每次更改时重新加载下拉值,只需再次调用您的下拉列表功能。我希望这会有所帮助......

此处还有演示:http://jsfiddle.net/cJ8wN/8/