2012-06-05 2 views
4

У меня есть на моем Page_Load зарегистрировал этотКак скрыть или показать DIV

Page.ClientScript.RegisterStartupScript(this.GetType(), "clientscript", "document.getElementById('showdiv').style.visibility = 'hidden';", true); 

но его не получает скрытый ... Мой ДИВ будет, как показано ниже

<div id="showdiv"> 
    <input class="button" type="button" value="OK" name="success_button" id="my button" onclick="javascript:window.close();" /> 
    </div> 

что я делаю неправильно ?. Благодарим за помощь.

+0

Есть ли у вас какие-либо UpdatePanel? –

+1

Постарайтесь посмотреть на источник страницы, что он делает. – IvanH

+0

Отметьте это также для предложений: http://stackoverflow.com/questions/9572265/which-of-these-methods-is-the-correct-way-to-show-hide-rows-in-asp-net – atconway

ответ

5

Я настоятельно рекомендую выполнять эту простое манипулирование на стороне клиента (управление строками строк/строк и т. Д.) С помощью JavaScript или даже более легко с помощью библиотеки .js, такой как jQuery. После включения сценариев jQuery в ваше приложение это все, что вам нужно сделать, чтобы этот DIV был скрыт после того, как страница завершила свою инициализацию.

Включите этот раздел сценария в верхней части страницы или в ссылочных .js файл, если у вас уже есть один:

<script type="text/javascript"> 

//$(document).ready is used to define a function that is guaranteed to be called only after the DOM has been initialized. 
$(document).ready(function() { 
    //Hide the div 
    $('#showdiv').hide(); 
    //conversely do the following to show it again if needed later 
    //$('#showdiv').show(); 
}); 

</script> 

JQuery API документация по этому методу:
http://api.jquery.com/hide/

+0

Я рекомендую скрывать div в коде заднего конца с помощью javascript. Проблема с JS заключается в том, что div будет отображаться до тех пор, пока страница не закончит загрузку, а затем макет страницы будет прыгать при скрытии div. Пользователи с быстрым подключением к Интернету, вероятно, этого не заметят, но медленные соединения, такие как сотовые телефоны, будут видеть div до тех пор, пока документ не будет полностью загружен. – ideonexus

+0

Я не согласен - простые манипуляции с DOM на сервере - это то, что мы делали плохо в первые дни работы в Интернете. Это именно то, что позволяет нам сделать такой язык, как JS. Это расточительно и, наоборот, делает полный серверный вызов для выполнения такой операции, независимо от скорости интернета, не является хорошим выбором ИМО. Фактически, перейдите в мир JS Framework и SPA, и ничто из этого не будет отдаленно даже думать о том, чтобы быть сделанным на сервере. – atconway

4

Почему бы не использовать тег сервера asp:Panel?

Front End:

<asp:Panel runat="server" ID="ShowDiv"> 
... 
</asp:Panel> 

Back End:

ShowDiv.Visible = false; 

Контроль Panel будет оказана как <div> во время выполнения. Это кажется мне более чистым, чем регистрация клиентского скрипта.

+1

Я согласен с этим. Это наилучшая практика с asp.net. Нет причин вводить клиентский код для выполнения простой задачи, которую может обрабатывать сервер, особенно если вы уже на стороне сервера. –

+0

Мне нужно ввести его, потому что мне нужно сделать скрытие на OnSuccess вызова Ajax службе asmx – user1416156

+0

@KP I * полностью * не согласен с вашим утверждением. Почему в мире разработчик захочет сделать дорогостоящую поездку на сервер, чтобы сделать что-то столь же грязное, как спрятать строку? Это * точно * то, что JavaScript должен делать в этой ситуации - манипулировать потребностями клиента без необходимости перехода на сервер. Я знаю, что все равно буду делать серверные вызовы, но зачем нужны действия с префиксами сервера, которые должны отвечать обработке клиентской стороны. – atconway

0

Я думаю, это еще одна проблема порядка загрузки.

Ваш скрипт запускается сразу после его загрузки. Если элемент страницы, который он пытается скрыть, не загружается в DOM во время запуска скрипта, тогда скрывать нечего. Я считаю, что зарегистрированные скрипты все входят в верхнюю часть страницы, перед контентом HTML, так что это всегда произойдет.

Чтобы заставить это работать, вы должны положить его в прослушиватель событий нагрузки. См.: Running javascript code on page load, without using the onload tag

Это говорит о том, что, поскольку вы пытаетесь скрыть элемент страницы без каких-либо условий, вы, вероятно, будете так же счастливы, что этот элемент страницы отключен со стороны сервера, либо добавив класс к элементу что ваш CSS скрывает или управляет своим стилем/видимостью непосредственно из кода сервера.

Если предполагается, что есть какое-либо условие, видно или нет Div, то делать все это на стороне клиента javascript, вероятно, лучше, так что вам не нужно совершать поездку на сервер только для контроля видимости ,

2

у вас есть 2 варианта

1-Add «RUNAT = сервер» атрибут для вашего DIV затем из кода доступа за это и сделать видимость ложной или добавить стиль, чтобы сделать его невидимым.

myDiv.Style.Add("display","none"); 

2-Добавить функцию javascript, чтобы скрыть ее, и вы можете использовать jquery для ее выполнения.

1

Javascript:

$(document).ready(function(){ 

    $(".slidingDiv").hide(); 
    $(".show_hide").show(); 

$('.show_hide').click(function(){ 
$(".slidingDiv").slideToggle(); 
}); 

}); 

HTML

<a href="#" class="show_hide">Show/hide</a> 
<div class="slidingDiv"> 
Fill this space with really interesting content. 
<a href="#" class="show_hide">hide</a> 
</div> 

CSS

.slidingDiv { 
height:300px; 
background-color: #99CCFF; 
padding:20px; 
margin-top:10px; 
border-bottom:5px solid #3399FF; 
} 

.show_hide { 
display:none; 
} 
1

Я пришел сюда в поисках решения и е добавив «runat = server» в мой div, затем спрятал его в код-сзади с помощью

myDivID.Visible = false;

4

HTML

<div id="div1" runat="server"></div> 

C#

div1.Visible=false; 

Я думаю, что это будет работать ...

+0

Я думаю, что это самое простое, удобное для клиента решение. Пользователю может потребоваться найти элемент управления с помощью Control div1 = (Control) FindControl («div1»); если элемент управления не находится в intellisense, чтобы найти его. – ideonexus

0

мы создаем ссылку, призывающего яваскрипт

<p><a href="#" class="show_hide" onclick="recoverDiv();">Mot de passe oublié</a></p> 

ДИВ, чтобы показать и скрыть

<div id="divdiv" runat="server" class="HideMe"> 
</div> 

и в JavaScript добавить:

<script type="text/javascript"> 

    function recoverDiv() { 
     $('#divdiv').attr('class', 'ShowMeForced'); 
    } 
</script> 

и в CSS:

<style type="text/css"> 
    .HideMe { display:none; } 
    .ShowMe { display:block; } 
    .HideMeForced { display:none !important; } 
    .ShowMeForced { display:block !important; } 
</style> 
Смежные вопросы