C# 当rad组合框显示空消息字符串时,将文本框的可见性设置为false

C# 当rad组合框显示空消息字符串时,将文本框的可见性设置为false,c#,asp.net,combobox,telerik,radcombobox,C#,Asp.net,Combobox,Telerik,Radcombobox,我有一个用户控件,其中我使用一个可编辑的rad组合和一个rad文本框。取决于combo的值,我需要设置文本框的可见性。它起作用了。代码如下。 1.用户控制 <asp:Panel ID="pnl44" runat="server" Visible="false"> <table width="100%"> <tr> <td style="width: 20%;"> Qua

我有一个用户控件,其中我使用一个可编辑的rad组合和一个rad文本框。取决于combo的值,我需要设置文本框的可见性。它起作用了。代码如下。
1.用户控制

<asp:Panel ID="pnl44" runat="server" Visible="false">
    <table width="100%">
        <tr>
            <td style="width: 20%;">
                Quantity<span style='color: red'>* </span>
            </td>
            <td align="left" style="vertical-align: top; width: 80%;">
                <table width="100%">
                    <tr>
                        <td align="left" style="vertical-align: top; width: 63%;">
                            <telerik:RadComboBox ID="pnl44_ddlUnit" runat="server" DropDownAutoWidth="Enabled" 
                             Width="150px" AutoPostBack="true" OnSelectedIndexChanged="ddlUnit_SelectedIndexChanged" 
                             EmptyMessage="---Select---" markfirstmatch="True" allowcustomtext="false" onclientblur="OnClientBlurHandler"></telerik:RadComboBox>
                        </td>
                        <td>
                            <asp:TextBox ID="pnl44_txtQuantity" MaxLength="10" runat="server" CssClass="textfield"
                                Width="145px"  />
                            <ajaxtoolkit:FilteredTextBoxExtender ID="ftetxtQuantity" FilterType="Numbers" runat="server"
                                TargetControlID="pnl44_txtQuantity" />
                        </td>
                    </tr>
                </table>
            </td>
        </tr>
    </table>
</asp:Panel>

数量*
在代码隐藏中,am处理选定的已更改事件以设置可见性,其工作正常。on blur的javascript如下所示(在aspx页面中)


函数OnClientBlurHandler(发送方){
var item=sender.findItemByText(sender.get_text());
如果(!项){
sender.clearSelection();
}
}
每当组合值为null时,它都会显示空消息

情况是这样的

默认情况下,txtQuantity的可见性为false。 当用户从组合框中选择“value1”时,txtQuantity可见性为true; 然后用户使用delete/backspace删除value1,组合框将显示空消息字符串,但此时txtQuantity可见性为true,而不是false


请帮助我解决此问题…

您似乎更改了服务器上的文本框可见性,因此您需要启动一个请求,在清除组合选择时为您执行此操作。基本知识:

    function OnClientBlurHandler(sender) {                                                                                  
        var item = sender.findItemByText(sender.get_text());
        if (!item) {
            sender.clearSelection();
            __doPostBack("", "");
        }

    }
这将生成一个通用回发。您可以使用隐藏按钮、隐藏字段或其他参数来了解此回发的来源

选项2:使用JavaScript隐藏文本框,例如:

    function OnClientBlurHandler(sender) {                                                                                  
        var item = sender.findItemByText(sender.get_text());
        if (!item) {
            sender.clearSelection();
            document.getElementById("<%=pnl44_txtQuantity.ClientID%>").style.display="none";
        }
    }
函数OnClientBlurHandler(发送方){
var item=sender.findItemByText(sender.get_text());
如果(!项){
sender.clearSelection();
document.getElementById(“”.style.display=“无”;
}
}

或者类似的操作,具体取决于ACT控件对文本框的操作。

谢谢您的帮助。我在javascript中添加了sender.postback(),效果很好。
    function OnClientBlurHandler(sender) {                                                                                  
        var item = sender.findItemByText(sender.get_text());
        if (!item) {
            sender.clearSelection();
            document.getElementById("<%=pnl44_txtQuantity.ClientID%>").style.display="none";
        }
    }