0

私はこれを機能させるのに多くの問題を抱えていたので、ページに2つのドロップダウンがあり、最初は非表示にしたい別のドロップダウンがあります. 2 番目のドロップダウン (任意の選択) で選択が行われた後、3 番目のドロップダウンとそのラベルが表示されるようにします。それらはすべてデータベースに接続されています。コードのその側面を視覚化する簡単な方法で再作成しました。Web でヘルプを検索しました。私は .NET を初めて使用し、jquery や ajax を使用したことがありません。可能であれば、C# だけで使用したいと考えています。jqueryをお勧めする場合は、さらに詳しく説明してください。この時点で、CS ページはほとんど空です。どんな助けでも大歓迎です。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>Dropdowns</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>



        <asp:DropDownList ID="ddlManu" runat="server" AutoPostBack="True" 
            DataSourceID="SqlDataSource1" DataTextField="Field1" DataValueField="ID" >
        </asp:DropDownList>    
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
            ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" 
            SelectCommand="SELECT [Version] FROM [ProductVersion]"
            DataSourceMode="DataReader">
            </asp:SqlDataSource>


        <asp:DropDownList ID="ddlProduct" runat="server" 
            DataSourceID="SqlDataSource2" DataTextField="Field1" DataValueField="ID" 
            AutoPostBack="True"  >
        </asp:DropDownList>

        <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
            ConnectionString="<%$ ConnectionStrings:ConnectionString2 %>" 
            ProviderName="<%$ ConnectionStrings:ConnectionString2.ProviderName %>" 
            SelectCommand="SELECT [ID], [Field1], [Field2],[FKID] FROM [MSProducts] 
            WHERE FKID = @ID" DataSourceMode="DataReader">

            <SelectParameters>
            <asp:ControlParameter ControlID="ddlManu" Name="ID"
            PropertyName="SelectedValue" DefaultValue="" />
            </SelectParameters>
        </asp:SqlDataSource>

        <br />
        <asp:Label ID="Label1" runat="server" Text="Category1:"></asp:Label>
        <asp:DropDownList ID="ddlPop" runat="server" DataSourceID="SqlDataSource1">
        </asp:DropDownList>
        <br />
        <br />
        <br />
                    <br />
                    <br />
                    <br /> 

    </form>
</body>
</html>
4

3 に答える 3

2

まず、3 番目の dd を visible false に設定します。

<asp:DropDownList ID="ddlPop" runat="server" Visible="false"></asp:DropDownList>

次に、2 番目の dd のメソッド OnSelectedIndexChanged で、次のようにします。

protected void ddlProduct_SelectedIndexChanged(object sender, EventArgs e)
{
    ddlPop.Visible = true;
}

jquery を使用して同じことを行う小さなサンプルを作成しました。ただし、このメソッドを有効にするには、コントロールのポストバックを無効にする必要があることに注意してください。

http://jsfiddle.net/Gys5Y/1/

于 2013-09-25T16:35:25.687 に答える
1

この機能はクライアント側で実行することをお勧めします。ドロップダウンの onchange イベントに JavaScript 関数を割り当て、 $("#myddl").css("display", "none"); のようなものを配置するだけです。それに。このようにして、サーバーへの無駄なリクエストを避けることができ、アプリの動作が速くなります。

于 2013-09-28T09:19:03.297 に答える
1

このようにコードを書き直してください

<form id="form1" runat="server">
<div>



    <asp:DropDownList ID="ddlManu" runat="server" AutoPostBack="True" 
        DataSourceID="SqlDataSource1" DataTextField="Field1" DataValueField="ID" >
    </asp:DropDownList>    
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
        ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" 
        SelectCommand="SELECT [Version] FROM [ProductVersion]"
        DataSourceMode="DataReader">
        </asp:SqlDataSource>


    <asp:DropDownList ID="ddlProduct" runat="server" 
        DataSourceID="SqlDataSource2" DataTextField="Field1" DataValueField="ID" 
       onselectedindexchanged="ddlProductSelectedIndexChanged" autopostback="true">
    </asp:DropDownList>

    <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
        ConnectionString="<%$ ConnectionStrings:ConnectionString2 %>" 
        ProviderName="<%$ ConnectionStrings:ConnectionString2.ProviderName %>" 
        SelectCommand="SELECT [ID], [Field1], [Field2],[FKID] FROM [MSProducts] 
        WHERE FKID = @ID" DataSourceMode="DataReader">

        <SelectParameters>
        <asp:ControlParameter ControlID="ddlManu" Name="ID"
        PropertyName="SelectedValue" DefaultValue="" />
        </SelectParameters>
    </asp:SqlDataSource>

    <br />
    <asp:Label ID="Label1" runat="server" Text="Category1:" visible="false"></asp:Label>
    <asp:DropDownList ID="ddlPop" runat="server" DataSourceID="SqlDataSource1" visible="false">
    </asp:DropDownList>
    <br />
    <br />
    <br />
                <br />
                <br />
                <br /> 

</form>

次に、あなたのコードで

protected void ddlProductSelectedIndexChanged(object sender, EventArgs e){
ddlPop.Visible = true;
Label1.Visible=true;}
于 2013-09-27T10:00:51.020 に答える