Set dojox.grid.datagrid header column width dynamically

别等时光非礼了梦想. 提交于 2019-11-30 09:27:55

问题


  • I have a declarative dojox.grid.datagrid with initial header column width. And i have a textbox. my need is
  • In UI, if user enters any value to textbox, that value should be set as the dynamic width of column's header.

    <div class="claro" id="dfgdfgd" name="dataGrid" onclick="setWidgetproperty(this.id,'xy','inner__dfgdfgd');" ondblclick="editCustomGrid(this.id)" onmouseup="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">
    

I am able to get the particular column's width using below code. How to set back this width to textbox value.

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

回答1:


There is a method called setCellWidth() (you can read about it in the API Documentation) which you can use to change the width of the cells.

The only step you then need to complete is to update the column (so that the changes become visible). This step can be completed with cell.view.update();.

Be aware: updating the complete grid with grid.update() or grid.sizeChange() is not enough because it will only update the column headers. (That's something I noticed.)

So in your forEach loop you would do something like:

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

I also made a working JSFiddle which you can view here.



来源:https://stackoverflow.com/questions/15826506/set-dojox-grid-datagrid-header-column-width-dynamically

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!