Флажок ASP.Net не разрешает настройку Visible в True - PullRequest
1 голос
/ 21 апреля 2010

Я работаю над старым веб-приложением в Visual Studio .Net 2003 (yeeich), и у меня возникла проблема с флажком, который не устанавливает для Visibility значение True.

Это объявлено так:

Protected WithEvents chkTraining As System.Web.UI.WebControls.CheckBox 

и

<asp:CheckBox id="chkTraining" runat="server" Visible="False"></asp:CheckBox>

Когда я отлаживаю через строку, которая имеет:

chkTraining.Visible = True

itотлично проходит, но когда я проверяю это значение на следующей строке, chkTraining.Visible = False.Что здесь может происходить?Там нет событий, запускающих или что-то еще происходит ... это действительно бросает меня в тупик.Спасибо за вашу помощь.

Ответы [ 3 ]

5 голосов
/ 21 апреля 2010

Возможно, видимость его контейнера установлена ​​в false.

0 голосов
/ 17 декабря 2011

Вы видите, что упомянули runat = "server".

Таким образом, когда ваша страница загружается в браузер (клиент), идентификатор «chkTraining» меняется на что-то другое ...... это базовое действие asp.net, которое изменяет идентификаторы серверных элементов управления.

Также проверьте свойство ClientIdMode в разделе свойств. ЕСЛИ оно статическое или наследуемое, вы получите его, как вы упомянули в коде.

Но если вы использовали любое другое значение, например AutoId, Predictable, сделайте вот так:

Это

<%=chkTraining.ClientID%>

даст вам идентификатор клиента. После получения идентификатора клиента вы можете использовать его для доступа к свойствам этого элемента управления. например,

var chk = document.getElementById('<%=chkTraining.ClientID%>');

if (chk.checked == true) {
        alert("checked");                
    }
    else {
        alert("unchecked");
    }
0 голосов
/ 21 апреля 2010

зачем объявлять это?если вы помещаете его на страницу .aspx

<asp:CheckBox id="chkTraining" runat="server" Visible="False"></asp:CheckBox>

получите доступ к нему, используя идентификатор в коде позади ...

...