javascript – 动态设置dojox.grid.datagrid标题列宽

>我有一个带有初始标题列宽度的声明性dojox.grid.datagrid.我有一个文本框.我的需要是
>在UI中,如果用户向文本框输入任何值,则应将该值设置为列标题的动态宽度.

<div class="claro" id="dfgdfgd" name="dataGrid" onclick="setWidgetproperty(this.id,'xy','inner__dfgdfgd');" ondblclick="editCustomGrid(this.id)" onm ouseup="setDocStyle(this.id)" style="height:200px; left:42px; position:absolute; top:89px; width:950px;">
 <table class="claro" dojotype="dojox.grid.DataGrid" id="inner__dfgdfgd" rowselector="10px" style="height: 180px; width: 300px;">
      <thead>
           <tr>
                <th field="Column1" id="Column1" noresize="true" width="100px">
                     <label id="Column1" onclick="getCustomGridColName(this.id,'inner__dfgdfgd');" style="cursor:pointer; font-family: Times; font-size:12pt;">
                          Column1
                     </label>
                </th>
                <th field="Column2" id="Column2" noresize="true" width="100px">
                     <label id="Column2" onclick="getCustomGridColName(this.id,'inner__dfgdfgd');" style="cursor:pointer; font-family: Times; font-size:12pt;">
                          Column2
                     </label>
                </th>
           </tr>
      </thead>
 </table>
 <input id="hidden__dfgdfgd" name="dataGrid" style="display:none;" type="hidden">

我可以使用下面的代码获取特定列的宽度.如何将此宽度设置为文本框值.

dojo.forEach(dijit.byId(tableID).layout.cells, function(cell,idx){
                if(cell.field == id){
                    headerWidth = cell.width;
                    alert(headerWidth);
                }
            });

解决方法:

有一个名为setCellWidth()的方法(您可以在API Documentation中阅读它),您可以使用它来更改单元格的宽度.

您需要完成的唯一步骤是更新列(以便更改变为可见).可以使用cell.view.update();完成此步骤.

请注意:使用grid.update()或grid.sizeChange()更新完整网格是不够的,因为它只会更新列标题. (这是我注意到的.)

所以在你的forEach循环中你会做类似的事情:

grid.setCellWidth(idx, "200px");
cell.view.update();

我也做了一个工作的JSFiddle,你可以查看here.

上一篇:C#-获取数据网格的scrollviewer


下一篇:excel批量处理