ListBox的Enabled属性

时间:2015-01-10 04:24:23

标签: c# asp.net sql-server

以下是我的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="&gt;&gt;" runat="server" OnClick="btnSourceToDest_Click" />
        <asp:Button ID="btnDestToSource" Text="&lt;&lt;" 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,但它的行为有所不同。为什么呢?

思想?

谢谢!

1 个答案:

答案 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"...