Jac*_*b K 11 c# asp.net listbox
我有4个服务器端ListBox控件.所有这些都将其Enabled属性设置为false,但在渲染时它们肯定已启用.它们都是多选的.它们没有数据绑定或触摸它们的任何代码.下面是所有这些标记(保存ID).我正在使用IIS6运行.NET Framework的v4.
<asp:ListBox runat="server" ID="lstProduct" Enabled="false" SelectionMode="Multiple" Rows="6"></asp:ListBox>
Run Code Online (Sandbox Code Playgroud)
这是运行时生成的标记:
<select size="6" name="ctl00$ctl00$MainContent$MainContent$lstProduct" multiple="multiple" id="MainContent_MainContent_lstProduct" class="aspNetDisabled">
Run Code Online (Sandbox Code Playgroud)
Jac*_*b K 15
我找到了解决方案.在<system.web>web.config部分中,您必须添加<pages controlRenderingCompatibilityVersion="3.5">.
使用Asp.net 4.0时,任何不接受特定用户输入(文本框或密码)的控件disabled="disabled"在Control.Enabled = false设置时都不会使用属性进行渲染.
试试这个:
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
this.lstProduct.Attributes.Add("disabled", "");
}
}
Run Code Online (Sandbox Code Playgroud)
要删除它,您可以删除禁用的标记,如下所示:
this.lstProduct.Attributes.Remove("disabled");
Run Code Online (Sandbox Code Playgroud)
小智 6
更好的解决方案是从ListBox类继承,然后重写SupportsDisabledAttribute属性.详细信息可以在MSDN库中找到
例如
public class MyListBox : ListBox
{
public override bool SupportsDisabledAttribute { get { return true; } }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18476 次 |
| 最近记录: |