6

フォームに2つのドロップダウンリスト(ddl1とddl2)があります。それらは一緒にテキストボックス-txt1の可視性を決定します。そのために私はこのチェックを行います:

if (ddl1.SelectedIndex==2 && ddl2.SelectedIndex>2)
   {
     if (!txt1.Visible)
        {txt1.Visible=true;// And then I want to call postback}

   }
else
   {
     if (txt1.Visible)
        {txt1.Visible=false;// And then I want to call postback}
   }

ご覧のとおり、上記の条件が当てはまる場合にのみ、ページをサーバーに投稿したいと思います。上記のコードは、両方のドロップダウンリストのSelectedIndexChangedイベントでトリガーされます。ある条件でどのように達成できますか、または達成できますか?

4

2 に答える 2

6

私があなたの問題を理解しているかどうかはわかりませんが、特定の条件が満たされた場合にのみポストバックを達成したいと考えています。両方のドロップダウンにjavascript関数を接続できますonchange="return onchange();" Autopostback=trueに設定します。

      function Onchange() {
        var ddl1 = document.getElementById('<%= ddl1.ClientID %>');
        var ddl2 = document.getElementById('<%= ddl2.ClientID %>');
        var txtbox = document.getElementById('<%= txtbox.ClientID %>');
        if (ddl1.selectedIndex == 2 && ddl2.selectedIndex > 2) {
            txtbox.style.display = "inline";
            __doPostBack(ddl1, '');
        }
        else {
            txtbox.style.display = "none";
            return false;
        }
    }

Aspxコードは次のようになります。

<asp:DropDownList runat="server" AutoPostBack="true" ID="ddl1" onchange="return Onchange();"
            OnSelectedIndexChanged="ddl1_SelectedIndexChanged">
            <asp:ListItem Text="text1" />
            <asp:ListItem Text="text2" />
            <asp:ListItem Text="text3" />
            <asp:ListItem Text="text4" />
        </asp:DropDownList>
        <asp:DropDownList runat="server" AutoPostBack="true" ID="ddl2" onchange="return Onchange();"
            OnSelectedIndexChanged="ddl1_SelectedIndexChanged">
            <asp:ListItem Text="text1" />
            <asp:ListItem Text="text2" />
            <asp:ListItem Text="text3" />
            <asp:ListItem Text="text4" />
        </asp:DropDownList>
        <asp:TextBox runat="server" ID="txtbox" />

それをテストし、それは動作します...

于 2012-05-02T13:39:44.243 に答える
1

AutoPostBack = Trueの場合、イベントが発生するためには、条件が満たされたときに関数を呼び出す必要があります。ASP.NETは常にポストバックします。条件を処理する必要があります。それ以外の場合は、JavaScriptを使用して検証を処理し、ページを手動でポストする必要があります。

   if (ddl1.SelectedIndex==2 && ddl2.SelectedIndex>2)
   {
        if (!txt1.Visible)
        {
           txt1.Visible=true;// And then I want to call postback
           //dowork
        }

   }
   else
   {
        if (txt1.Visible)
        {
            txt1.Visible=false;// And then I want to call postback
            //do work
        }
   }
于 2012-05-02T13:20:25.647 に答える