0

由于 td 元素上的 nowrap 似乎在 IE 中不起作用,请参阅这个问题,我迫切需要帮助如何在 Dojox Datagrid 中的每个单元格中添加一个带有 nowrap 的 span 元素,而无需定义字段格式化程序来完成此操作。

在这里查看 jsfiddle http://jsfiddle.net/HkxHZ/4/

使用这个 css 我在 Chrome 和 FF 中得到了我想要的,即没有自动换行和溢出隐藏。但它在IE中不起作用..

<style type="text/css">

.dojoxGridRowTable {
    table-layout: fixed;
    width: 0px;}

.dojoxGrid .dojoxGridCell {
    text-align: left;
    overflow:hidden;
    white-space:nowrap;}

</style>​
4

1 回答 1

1

这种方法就像自动调整大小一样,它将使 DataGrid 中每一列的宽度足够大,以显示您的数据而无需换行。

您应该做的是根据列描述中文本的 PX 大小和该列的数据计算网格布局的每一列的适当宽度。这应该在创建网格布局之前完成。

以下是如何获得以 px 为单位的正确宽度。将以下 html 添加到您的页面:css:

   #test
   {
   position: absolute;
   visibility: hidden;
   height: auto;
   width: auto;
   }

   <div id="test"></div>

1) 获取 DataGrid 中使用的字体大小

2) 获取 div 对象并将字体大小设置为网格中使用的大小

   <div id="test"></div>

 var tst_item = window.document.getElementById("test");
 tst_item.style.fontSize = grid_fnt_sz;

3) 将用于 DataGrid 的每个列描述和数据项放入隐藏的 div 中:

 tst_item.innerHTML = "Your data";
 var widthPX = (tst_item.clientWidth + 1); //Width of text in PX

将此 widthPX 存储在每个列的数组中,仅保留为该列找到的最大宽度。

4) 在为网格创建布局时,将列的宽度设置为列描述和该列数据中的最大宽度。

此方法可确保每列的宽度足够大以显示您的数据而无需换行。根据您的需要,您可以调整逻辑来做您需要的事情。对于大量数据,这可能不可行。但是,它对我很有用。

于 2012-12-12T21:20:54.250 回答