2013-08-14 4 views
0

Я почти уверен, что я делал это раньше, но я не могу найти его в любом месте ...Эквивалент ._hide tabpanel (в) в C#

У меня есть 3 вкладки в АЯКС TabContainer и 2 Флажки за пределами. Все 3 вкладки видны, если оба флажка не отмечены, и в этом случае третья вкладка должна быть скрыта.

Я могу показать/скрыть в JavaScript, когда значения Флажок изменяются

$find('<%=OptionsTabs.ClientID%>').get_tabs()[2]._hide(); 
    $find('<%=OptionsTabs.ClientID%>').get_tabs()[2]._show(); 

но на PageLoad, я не могу заставить его работать с C#. Я попытался настроить отображение и видимость, но не скрыл вкладку. Единственное, что сработало, это установить Visible = false, но если я сделаю это, то вкладка вообще не будет отображаться, и javascript не сможет показать ее позже.

EDIT: Я попытался регистрации тот же сценарий в PageLoad, но по-прежнему не работает

string script = "<script type=text/javascript> $find('<%=OptionsTabs.ClientID%>').get_tabs()[2]._hide(); </script>"; 

    ClientScriptManager cs = Page.ClientScript; 
    String csname1 = "TabScript"; 
    Type cstype = this.GetType(); 
    cs.RegisterStartupScript(cstype, csname1, script); 

OptionsTabs равна нулю здесь.

Я попытался отправить идентификатор ClientID, я получаю серверную сторону. Я попытался отправить имя вкладки вместо имени tabcontainer. Я попытался настроить отображение/видимость вкладки и заголовка вкладки. Ничего не получилось.

+0

не может у генерировать тот же код JS через что-то вроде 'ClientScript.RegisterStartupScript' в коде ASP.NET/C#? –

+0

Надо было бы вызвать его. Надеюсь на что-то более простое. – thchaver

+0

Что значит триггер? Он будет запускаться автоматически после загрузки страницы. –

ответ

0

Попробуйте этот код:

string script = "$find('" + OptionsTabs.ClientID + "').get_tabs()[2]._hide();"; 
ClientScriptManager cs = Page.ClientScript; 
String csname1 = "TabScript"; 
Type cstype = this.GetType(); 
cs.RegisterStartupScript(cstype, csname1, script, true); 

В качестве альтернативы, так как вы используете MS Ajax и имеет жизненный цикл страницы для клиентской части, а также вы можете попробовать Load событие в JavaScript, добавьте в clinet -side код:

Sys.Application.add_load(appLoaded); 

function appLoaded(sender, eventArgs) { 
    $find('<%=OptionsTabs.ClientID%>').get_tabs()[2]._hide(); 
} 
+0

Такая же ошибка нулевой ссылки: невозможно получить свойство «get_tabs» неопределенной или нулевой ссылки – thchaver

+0

Очевидно, что управление еще не инициализировано во время этого вызова. Я обновил свой ответ с помощью клиентской альтернативы. –

+0

Это сработало. Благодаря! – thchaver