2015-01-10 2 views
0

Ниже моя ASP.Net разметка:Включено свойство ListBox

<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 отключен. Когда я запускаю свое приложение, оно выбрасывает «Ссылка на объект, не установленную на экземпляр объекта», главным образом из-за listSourceBox отключен. Однако, когда я включил listSourceBox, все работает отлично, в идеале listDestBox должен быть отключен, но его нет! Кроме того, когда Enabled = false должен отключить ListBox, как и все другие элементы управления ASP .Net, но он ведет себя по-разному. Зачем?

Мысли?

Спасибо!

ответ

1

ASP Listbox не уважает Enabled собственность, вы должны сделать это явно в коде позади, как это: -

listSourceBox.Attributes.Add("disabled",""); 
listSourceBox.Attributes.Remove("disabled"); 

Хотя, это не имеет ничего общего с вашим Object Reference error, так как это просто атрибут , в вашем коде есть что-то еще не так.

Edit: Если вы ориентируетесь ASP.NET 4.0, элементы управления, которые не предназначены принимать пользовательский ввод не будет уважать это свойство, так что вы должны включать в себя следующие в <system.web> секции файла web.config: -

<system.web> 
    <pages controlRenderingCompatibilityVersion="3.5">. 
</system.web> 

После этого вы можете просто использовать Enabled свойство как это: -

listSourceBox.Enabled = true; 
listSourceBox.Enabled = false; 

Или в наценке, как это: -

<asp:ListBox ID="listSourceBox" runat="server" Enabled="false"... 
+0

Thanks Rahul. Из всего, что я прочитал, когда Enabled = false, список не будет отображаться. Это может вызвать проблему. Когда я разрешаю listBox, он отлично работает. Следовательно, свойство Enabled должно быть причиной этого. В любом случае, поскольку он не учитывает свойство Enabled, я буду искать другие способы (например, тот, который вы упомянули). –

+0

@DeepakAgarwal - Да, но у меня были сомнения, и я сам его протестировал, для меня, когда я устанавливаю 'Enabled = false', его не отключает элемент управления, но все равно его рендеринг правильно, поэтому я сказал, что должно быть что-то еще , Кроме того, я обновил для ASP.NET 4.0, пожалуйста, проверьте, и дайте мне знать, если это поможет! –

+0

@DeepakAgarwal - Дайте мне знать, если это поможет. Если он действительно принял это как ответ :) –