显示/隐藏Div

时间:2013-12-12 16:55:42

标签: c# javascript jquery asp.net

我有从数据库和两个div填充的asp下拉列表。 我希望当我选择下拉列表中的任何项目来隐藏现有div并显示另一个时,如果我选择相反的第一个项目。 这是我的代码:

<asp:DropDownList runat="server" 
                    ID="brandsList" 
                    AutoPostBack="True" 
                    DataSourceID="brandsDataSource" 
                    DataTextField="BrandName" 
                    DataValueField="BrandId" 
                    OnDataBound="brandsList_DataBound" 
                    OnSelectedIndexChanged="brandsList_SelectedIndexChanged" 
                    ClientIDMode="Static">
</asp:DropDownList>

我的下拉列表的C#代码:

if (brandsList.Items.Count > 0)
        {
            brandsList.Items.Insert(0, " * SELECT BRAND *");
            brandsList.Items[0].Value = "1";
            brandsList.SelectedIndex = 0;
        }

javascript代码:

<script type="text/javascript">
        $(function () {
            $("<%=brandsList.ClientID%>").change(function () {
                ToggleDropdown();
            });
            ToggleDropdown();
        });
        function ToggleDropdown(){
            if ($("<%=brandsList.ClientID %>").val() != "1") {
                $("#cats").hide(); $("items").show();
            }
            else { $("#cats").show();$("#items").hide(); }
        };
    </script>

P.S:我想在同一个地方显示两个div

提前thx!

萨姆

2 个答案:

答案 0 :(得分:3)

由于您使用的是回发,因此请将div设置为runat='server'设置条件以显示或隐藏div或onSelectedIndexChanged事件。当然,这可能不是最好的方式,它在之前的项目中对我有用。

cats.Attributes["style"] = "display: block;";
items.Attributes["style"] = "display: none;";

编辑:

我之前做过一些事情,这不是jquery,而是JavaScript。

首先,您需要在页面加载事件中添加内容,并且还要取消AutoPostBack='true',如果您依赖回发,请忽略它:(

protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            ddlTest.Attributes.Add("onchange", "test();");
        }
    }

这是我的下拉列表和div:

<asp:DropDownList runat="server" ID="ddlTest">
 <asp:ListItem>default</asp:ListItem>
 <asp:ListItem Value="1">20</asp:ListItem>
 <asp:ListItem Value="2">55</asp:ListItem>
 </asp:DropDownList>
<div id="items">
<p>
    This is Div items
</p>
</div>
<div id="cats">
<p>
    This is Div Cats
</p>
</div>

这是JavaScript

<script type="text/javascript">

    function ShowOrHideDiv(id) {
        switch(id)
        {
            case "1":
                DisplayDiv("cats");
                HideDiv("items");
                break;
            case "2":
                DisplayDiv("items");
                HideDiv("cats");
                break;
            default:
                DisplayDiv("items");
                DisplayDiv("cats");
        }

    }

    function DisplayDiv(ctrl) {
        var div = document.getElementById(ctrl);

        div.style.display = 'block';
    }

    function HideDiv(ctrl) {
        var div = document.getElementById(ctrl);

        div.style.display = 'none';
    }

    function test(){
    var testDDL = document.getElementById('<%=ddlTest.ClientID%>');
    var value = testDDL.options[testDDL.selectedIndex].value;

    ShowOrHideDiv(value);
    }

</script>

答案 1 :(得分:2)

除了您没有在ID选择器中提供#的地方外,您的代码似乎没问题。

更改

$("#cats").hide(); $("items").show();

$("#cats").hide(); $("#items").show();