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