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

时间:2014-12-30 16:58:31

标签: c# html asp.net webforms markup

我认为这是一件很简单的事情,但我遇到了一些问题。我最初的服务器控件的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>

1 个答案:

答案 0 :(得分:2)

你的问题不清楚,但绝对是UserControl而不是ASP.Net文本框。因此,您可以禁用UC中的文本框,如下所示: -

方法1(首选):

在UserControl代码隐藏中添加公共属性: -

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

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

UserControlTextArea.DisableMyTextbox = false; //或true表示启用。

方法2:

在UserControl类中找到您的文本框,然后将其禁用: -

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