我有一个应用程序,其中SmartClient ListGrid和Twitter Bootstrap multiselect共存。不幸的是,当多选下拉列表并尝试与ListGrid重叠时,它将被切断。问题似乎是ListGrid拒绝允许div标签在其上溢出。
我浏览了文档并进行了各种设置,但无法弄清楚如何更改此行为。有任何想法吗?
下面的代码片段演示了通用div标签的问题。我需要示例div标签位于ListGrid的顶部。
<html>
<head>
<style>
.my-style {
overflow: visible;
border: 1px solid black;
}
</style>
<!--Deleted: jQuery & Isomorphic includes -->
<script>
$(document).ready( function() {
isc.ListGrid.create({
top:0, left:100,
fields: [ {name:'X'}, {name:'Y'} ],
items: []
});
$('#main').html('<div class="my-style">This is a test</div>');
});
</script>
</head>
<body>
<div id="main" class="my-style">
A sample div tag
</div>
</body>
</html>
最佳答案
SmartClient在它为窗口小部件生成的DOM元素上设置了很高的zIndex值。 DOM Integration & Third-party Components页介绍了一些用于解决第三方窗口小部件的zIndex问题的选项:
许多窗口小部件库提供了一种在现有HTML元素内呈现窗口小部件的机制。我不知道Bootstrap多重选择小部件是否可以做到这一点,但是如果可以,该文档页面上提供了示例代码,说明如何在自定义SmartClient Canvas
中呈现第三方小部件。
每当显示multiselect小部件时,您都可以在getZIndex(true)
上调用ListGrid
并将动态选择元素的zIndex动态设置为更高的数字。
此方法假定ListGrid
是顶级窗口小部件(getParentCanvas()
返回null
)。如果ListGrid
在其他SmartClient小部件内,则需要获取顶级小部件的zIndex。
作为不支持的选项,您可以修改_nextZIndex
,_SMALL_Z_INDEX
和_BIG_Z_INDEX
类属性,以使SmartClient使用较低的zIndex值。
我还没有尝试过,但是通过查看源代码,bringToFront()Canvas
方法将小部件的zIndex设置为_BIG_Z_INDEX
,它也会增加。
还有其他两种选择:
看起来,Bootstrap多选小部件与具有multiAppearance:“ picklist”的SmartClient多选SelectItem
非常相似。请参见the Multi-Select example。如果需要,您当然可以设置SelectItem
pickList的样式,使其看起来完全类似于Bootstrap多选窗口小部件。
SmartClient支持通过htmlElement
属性将SmartClient小部件嵌入现有的HTML元素中。