我有一个应用程序,其中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元素中。

10-06 14:16