ASP.NET - 以编程方式控制下拉列表回发

Mik*_*yev 6 asp.net postback

我的form-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}
   }
Run Code Online (Sandbox Code Playgroud)

如您所见,我想仅在上述条件为真的情况下才将页面发布到服务器.上述代码在两个下拉列表的SelectedIndexChanged事件中触发.我怎么能或有可能达到条件?

Kam*_*aiz 7

我不确定我是否理解你的问题,但只有在满足某些条件时才想实现回发.你可以在下拉列表中连接一个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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

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" />
Run Code Online (Sandbox Code Playgroud)

测试它,它的工作原理......