поле со списком ajaxcontrol - PullRequest
       13

поле со списком ajaxcontrol

1 голос
/ 25 января 2011

у меня есть панель фильтров с 5-6 комбинированными полями ajax control tool kit.

я хочу, чтобы эта панель фильтров была отображена как ложная по умолчанию .. и переключать ее (показывать / скрывать) по клику клиентаиспользуя java-скрипт

, однако, когда моя панель фильтра отображается как видимая = false runat = серверный java-скрипт не получает объект

, и если я делаю код позади .. filterpanel.attributes.add ("style", display: none) filterpanel.attributes.add ("style", visibilty: hidden)

поле со списком выдает ошибку времени выполнения ..

Я искал в сетив котором говорится ... поле со списком трудно визуализировать внутри панели .. свойство по умолчанию изначально имеет значение false!

Ответы [ 3 ]

1 голос
/ 25 января 2011

Проблема в том, что <select> элементы должны быть визуализированы (но не обязательно видимы ), чтобы надежно получить доступ к их свойствам размеров.

Такdisplay: none; не будет работать, потому что элементы не визуализируются, а visibility: hidden; будет работать частично, потому что элементы визуализируются, поэтому пространство для них выделяется на странице, но скрыто, так что пространство остается пустым.

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

filterPanel.Attributes.Add("style",
    "position: fixed; left: -10000px; top: -10000px;");

Таким образом, панель и ее содержимое победят 'быть видимым, но размер элементов <select> будет вычислен правильно.

На стороне клиента формула для отображения панели будет выглядеть так:

document.getElementById("filterPanelClientID").style.position = "static";

И скрыть еееще раз:

document.getElementById("filterPanelClientID").style.position = "fixed";

Вы можете протестировать реализацию на основе jQuery здесь .

0 голосов
/ 25 января 2011

Не применяйте «display: none» к панели, только «visibility: hidden»:

filterpanel.Attributes.Add("style", "visibilty: hidden");

Это скроет вашу панель (<div> я полагаю), но зарезервируйте необходимыепробел (и, следовательно, позволит относящимся к измерениям свойствам соответствующего элемента DOM иметь правильные значения).

Конечно, вы увидите пустое место, но вы, возможно, сможете решить эту проблему, поиграв со стилями.элемента (возможно, вложив панель внутри другого элемента и применив стили к этому элементу вместо того, чтобы делать это на самой панели).

0 голосов
/ 25 января 2011

Проблема в том, что если вы установите Visible = "false" на серверном элементе управления, он не будет отображать какие-либо элементы HTML, включая поля со списком.Скрытие панели с помощью следующего: AJAX:

<asp:Panel id="p" runat="server" style="display:none">

</asp:Panel>

. Он будет отображать DIV и все ваши выпадающие списки, но скрывать их от просмотра, позволяя переключать видимость div.

...