【问题标题】:set the visibility of text box to false when the rad combo box shows empty message string当 rad 组合框显示空消息字符串时,将文本框的可见性设置为 false
【发布时间】:2014-12-02 08:19:50
【问题描述】:

我有一个用户控件,其中使用了一个可编辑的 rad 组合和一个 rad 文本框。取决于组合的值,我需要设置文本框的可见性。它的工作。代码如下。
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>

在处理选定的更改事件以设置可见性的代码中,它工作正常。 on blur 的 javascript 如下(在 aspx 页面中)。

<script type="text/javascript" language="javascript">   
        function OnClientBlurHandler(sender) {                                                                                  
            var item = sender.findItemByText(sender.get_text());
            if (!item) {
                sender.clearSelection();
            }

        }
    </script>

只要组合值为空,它就会显示空消息。

剧情是这样的

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

请帮我解决问题...

【问题讨论】:

    标签: c# asp.net combobox telerik radcombobox


    【解决方案1】:

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

        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";
            }
        }
    

    或类似的东西,取决于 ACT 控件对文本框的作用。

    【讨论】:

    • 感谢您的帮助。我在 javascript 中添加了 sender.postback() 并且对我来说工作正常。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    相关资源
    最近更新 更多