首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组合框ajaxcontrol

组合框ajaxcontrol
EN

Stack Overflow用户
提问于 2011-01-25 20:15:09
回答 3查看 816关注 0票数 1

我有一个带有5-6个组合框的过滤器面板ajax控制工具包..

默认情况下,我希望此筛选器面板显示为false。并使用java脚本在客户端单击时切换(显示/隐藏

但是,当我将筛选器面板设置为visible = false时,runat=server java脚本无法获取对象

如果我把代码放在后面..filterpanel.attributes.add("style",display:无) filterpanel.attributes.add("style",visibilty:隐藏)

组合框抛出运行时错误..

我在网上搜索过,上面写着..组合框很难在面板中呈现。其默认属性最初为false!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-25 21:58:58

问题是<select>元素必须是rendered (但不一定是visible),才能可靠地访问它们的维度属性。

因此,由于元素未呈现,display: none;将无法工作,而visibility: hidden;将部分工作,因为元素已呈现,因此在页面上为它们分配了空间,但空间是隐藏的,因此空间将保持为空。

第三种解决方案是像往常一样渲染容器,但使其在浏览器视口外绝对为positioned

代码语言:javascript
复制
filterPanel.Attributes.Add("style",
    "position: fixed; left: -10000px; top: -10000px;");

这样,面板及其内容将不可见,但可以正确计算<select>元素的大小。

在客户端,显示面板的公式为:

代码语言:javascript
复制
document.getElementById("filterPanelClientID").style.position = "static";

再一次隐藏它:

代码语言:javascript
复制
document.getElementById("filterPanelClientID").style.position = "fixed";

您可以测试基于jQuery的实现here

票数 1
EN

Stack Overflow用户

发布于 2011-01-25 20:36:44

问题是,如果您在服务器控件上设置Visible="false“,它将不会呈现任何HTML元素,包括组合框。使用以下内容隐藏面板是对AJAX友好的:

代码语言:javascript
复制
<asp:Panel id="p" runat="server" style="display:none">

</asp:Panel>

这将渲染一个DIV和所有的下拉列表,但将它们从视图中隐藏,允许您切换div的可见性。

票数 0
EN

Stack Overflow用户

发布于 2011-01-25 21:08:16

不要将"display: none“应用于面板,仅将"visibility: hidden”应用于面板:

代码语言:javascript
复制
filterpanel.Attributes.Add("style", "visibilty: hidden");

这将隐藏您的面板(我想是<div> ),但保留所需的空间(因此将允许相应DOM元素的与维度相关的属性具有正确的值)。

当然,您会看到一个空白点,但您可能可以通过处理元素的样式来解决这个问题(可能是通过将面板嵌套在另一个元素中,并将样式应用于该元素,而不是在面板本身上执行此操作)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4793342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档