启用列表框 属性

Enabled property of ListBox

下面是我的 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>

listSourceBoxlistDestBox 都被禁用。当我 运行 我的应用程序时,它抛出 "Object reference not set to an instance of object" 主要是因为 listSourceBox 被禁用。但是,当我启用 listSourceBox 时,一切正常,理想情况下,应该禁用 listDestBox,但它不是!此外,当 Enabled = false 应该像所有其他 ASP .Net 控件一样禁用 ListBox,但它的行为不同。为什么?

想法?

谢谢!

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