列表框的已启用属性

本文关键字:启用 属性 列表 | 更新日期: 2023-09-27 18:36:56

下面是我的 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 都被禁用。当我运行我的应用程序时,它抛出"对象引用未设置为对象的实例",主要是由于 listSourceBox 被禁用。但是,当我启用列表源框时,一切正常,理想情况下,应该禁用列表DestBox,但事实并非如此!此外,当启用 = false 时,应像所有其他 ASP .Net 控件一样禁用列表框,但它的行为不同。为什么?

思潮?

谢谢!

列表框的已启用属性

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