如何禁用用户控件内的控件

本文关键字:控件 用户 何禁用 | 更新日期: 2023-09-27 18:35:50

我认为这将是一件简单的事情,但我遇到了一些问题。服务器控件的初始 asp.net 标记如下所示:

<ucTextArea:UserControlTextArea ID="taRemarks" runat="server" />

但是,在代码隐藏中,我有一个条件语句,用于检查用户权限以启用或不启用此文本字段,如下所示:

if (CurrentUser.AccountTypeID == 4 || CurrentUser.AccountTypeID == 6)
    taRemarks.Attributes.Add("enabled", "");
else
    taRemarks.Attributes["disabled"] = "true";

以上是我尝试完成此操作的两种方法,但在浏览器中呈现时不起作用。如何禁用此服务器控件?

编辑:UserControlTextArea.ascx定义如下:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="UserControlTextArea.ascx.cs"  Inherits="stuff....UserControlTextArea" %>
<script type="text/jscript" language="javascript">
    $(document).ready(function () {
        var counterLabel = $('#<%=lblCounter.ClientID %>');
        var textArea = $('#<%=tbTextArea.ClientID %>');
        var maxNumber = parseInt('<%=txtMaxCharacters.Value%>');
        FieldCounter(textArea, counterLabel, maxNumber);
        $(textArea).keyup(function () {
            CheckFieldLength($(textArea), maxNumber);
            FieldCounter(textArea, $(counterLabel), maxNumber);
        });
    });
</script>
<div id="OuterContainer" runat="server">
    <asp:TextBox ID="tbTextArea" runat="server" TextMode="MultiLine" Width="100%"></asp:TextBox>
    <span class="fieldLengthCounter">
        characters left: 
        <asp:Label ID="lblCounter" runat="server"></asp:Label>
    </span>
    <input type="hidden" runat="server" id="txtMaxCharacters" />
</div>

如何禁用用户控件内的控件

你的问题不清楚,但肯定是一个UserControl,而不是一个 ASP.Net 文本框。因此,您可以像这样禁用UC中的文本框:-

方法1(首选):

在用户控件代码隐藏中添加公共属性:-

public bool DisableMyTextbox
{
   set { tbTextArea.Enabled = value; }
}

然后,您只需使用此属性在Webform中禁用文本框:-

UserControlTextArea.DisableMyTextbox = false;//或 true 以启用返回。

方法2:

在用户控件类中找到您的文本框,然后禁用它:-

TextBox txt1 = (TextBox)SimpleUserControl1.FindControl("tbTextArea");
txt1.Enabled = false;