如何禁用用户控件内的控件
本文关键字:控件 用户 何禁用 | 更新日期: 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;