2012-04-27 2 views
0

В VB.NET у меня есть LinkButton, который при нажатии создает отчет. Мы хотим отключить эту функциональность, исходя из того, кто зарегистрирован в системе. У меня есть переменная сеанса, чтобы указать, должно ли это быть видимым или нет, но когда я устанавливаю idLinkButton.visible = False, это не влияет. Любые идеи о том, что мне нужно сделать, чтобы включить и выключить это?Hiding LinkButton

'код-за
' в Page_Load
Если не Convert.ToBoolean (HttpContext.Current.Session ("HideReports")) Тогда
PDFbutton.Visible = True
Else If Convert.ToBoolean (HttpContext. Current.Session ("HideReports")) И HttpContext.Current.Session ("LoadFromConsole") Тогда
PDFbutton.Visible = True
конец, если

+0

Я так понимаю, это добавляет тег ASP.NET. – Ryan

+0

Можете ли вы предоставить код, показывающий LinkButton и сам код. Похоже, это может быть тот порядок, в котором вы выполняете действия. –

+0

Сначала свойство «.Visible». Затем, где вы это устанавливаете? В загрузке страницы? –

ответ

0

Во-первых, вы пробовали настройки .Visible = ложь вне если/то логика?

Если это работает, вы хотите устранить эту логику. Добавьте мою первую строку к тому, что вы показываете выше, а затем измените свою первую строку на вторую строку.

Dim hideRpt as Boolean = Convert.ToBoolean(HttpContext.Current.Session("HideReports")) 
If Not hideRpt Then 

Теперь поставьте точку останова на строке «If Not ...».

Если вы не получаете то, что ожидаете, добавьте еще одну строку, чтобы получить строку для значения сеанса, чтобы убедиться, что она действительно должна быть конвертирована в bool.

Основные сведения об устранении неисправностей, человек, разбить его на более мелкие части. Иногда я запускаю новое приложение для Windows, чтобы иметь чистый лист, на котором можно детализировать детали.

+0

Я пробовал это. Я попытался установить значение .Visible true за пределами любой проверки с нулевым успехом. Я сомневался, что это можно сделать таким образом, поэтому я спросил здесь. – Michael

+0

Visible = «True» не требуется в вашей разметке. Это ничего не должно изменить, но никакого вреда в попытках. Нет причин, по которым я знаю, что вы не могли установить этот элемент управления .Visible = False в вашем событии PageLoad. Но, я должен согласиться с другими комментаторами в этот момент ... нужно было бы увидеть более полную версию кода, чтобы иметь возможность увидеть проблему. – KennyZ

+0

На самом деле .Visible * defaults * to true ... LinkButton должен отображаться, если вы явно не установили его .Visible = false. Я выполнил быстрый тест и установил .Visible = false в Page_Load скрывает кнопку. Я бы также сказал, что это лучший способ написать свой код ... Тест для логики, в котором говорится, что вы хотите скрыть кнопку, а не логику, в которой говорится, что вы хотите ее показать. – KennyZ