以下是我的ASP.Net标记:
<div>
<asp:ListBox ID="listSourceBox" runat="server" DataSourceID="sqlDataSource" SelectionMode="Multiple"
Enabled="false" DataTextField="Title" DataValueField="Id"></asp:ListBox>
<asp:Button ID="btnSourceToDest" Text=">>" runat="server" OnClick="btnSourceToDest_Click" />
<asp:Button ID="btnDestToSource" Text="<<" runat="server" OnClick="btnDestToSource_Click" />
<asp:ListBox ID="listDestBox" runat="server" Enabled="false"></asp:ListBox>
<asp:SqlDataSource ID="sqlDataSource" runat="server" ConnectionString="<%$ConnectionStrings: Movies %>"
SelectCommand="SELECT Id, Title FROM Movies"></asp:SqlDataSource>
</div>
listSourceBox 和 listDestBox 都被禁用。当我运行我的应用程序时,它抛出&#34;对象引用未设置为对象的实例&#34;主要是由于 listSourceBox 被禁用。但是,当我启用 listSourceBox 时,一切正常,理想情况下, listDestBox 应该被禁用,但它不是!!此外,当 Enabled = false 应该像所有其他ASP .Net控件一样禁用ListBox,但它的行为有所不同。为什么呢?
思想?
谢谢!
答案 0 :(得分:1)
ASP Listbox
并不尊重Enabled
属性,您需要在代码中明确地执行此操作,如下所示: -
listSourceBox.Attributes.Add("disabled","");
listSourceBox.Attributes.Remove("disabled");
虽然这与您的Object Reference error
无关,因为这只是一个属性,您的代码中还有其他错误。
修改强>
如果您的目标是ASP.NET 4.0,那么非设计用于输入用户输入的控件将不会考虑此属性,因此您需要在web.config文件的<system.web>
部分中包含以下内容: -
<system.web>
<pages controlRenderingCompatibilityVersion="3.5">.
</system.web>
在此之后,您可以像这样简单地使用Enabled
属性: -
listSourceBox.Enabled = true;
listSourceBox.Enabled = false;
或者在这样的加价中: -
<asp:ListBox ID="listSourceBox" runat="server" Enabled="false"...