0
  • 在声明性 dojox.grid.datagrid 中,我在 table 标记中使用 onresizecolumn。

onresizecolumn="columnResize(this.id,this.cellIdx)"

onresizecolumn 调用一个函数。在调整特定列的大小时,我想获取 cellIdx。

<div class="claro" id="eterte" name="dataGrid" onclick="getConnect('inner__eterte');setWidgetproperty(this.id,'xy','inner__eterte');" ondblclick="editCustomGrid(this.id)" onmouseup="setDocStyle(this.id)" style="height:200px; left:39px; position:absolute; top:251px; width:950px;">
     <table class="claro" dojotype="dojox.grid.DataGrid" id="inner__eterte" onresizecolumn="columnResize(this.id,this.cellIdx)" rowselector="10px" style="height: 180px; width: 400px;">
          <thead>
               <tr>
                    <th field="Column1" id="Column1_6" width="159px">
                         Column1
                    </th>
               </tr>
          </thead>
     </table>
     <input id="hidden__eterte" name="dataGrid" style="display:none;" type="hidden">
</div>

function columnResize(id,index){
            alert();
            alert(id);
            alert(index);
        }
4

2 回答 2

1

通过阅读API 文档,我得出结论,Dojo自动将 Cell 索引发送到事件处理程序。所以解决方案是简单地提供以下属性onResizeColumn="myFunction",然后定义一个这样的函数:

function myFunction(cellDx) {
    alert(cellDx);
}

这应该可行,我什至做了一个JSFiddle来测试它。顺便说一句,你有什么理由想以声明的方式完成所有这些工作吗?就我的经验而言,用 JavaScript 编写大部分内容要容易得多。

于 2013-04-10T11:29:19.820 回答
1

我可以让它以这种方式工作,不确定这是否是最佳实践。

http://jsfiddle.net/gE8rH/6/

HTML(已删除onresizecolumn属性):

<div class="claro" id="eterte" name="dataGrid" onclick="getConnect('inner__eterte');setWidgetproperty(this.id,'xy','inner__eterte');" ondblclick="editCustomGrid(this.id)" onmouseup="setDocStyle(this.id)" style="height:200px; width:950px;">
    <table dojotype="dojox.grid.DataGrid" id="inner__eterte" rowselector="10px" style="height: 180px; width: 400px;">
        <thead>
            <tr>
                <th field="Column1" id="Column1_6" width="109px">Column1</th>
                <th field="Column2" id="Column1_7" width="109px">Column2</th>
                <th field="Column2" id="Column1_8" width="109px">Column3</th>
            </tr>
        </thead>
    </table>
</div>

JS(使用 Dojo 1.7+ 模块名称),分配给小部件的onResizeColumn属性:

require(["dojo/parser", "dijit/registry", "dojox/grid/DataGrid"], function (parser, registry) {
    parser.parse().then(afterParse);

    function afterParse() {
        var d = registry.byId("inner__eterte");
        console.log(d);

        d.onResizeColumn = function (colIdx) {
            console.log("columnResize");
            console.log("args", arguments);
            console.log("this", this);
            console.log("colIdx", colIdx);
        };
    }
});

调整第一列的大小时输出:

columnResize
args [0]
this [Widget dojox.grid.DataGrid, inner__eterte] { _attachPoints=[4], _attachEvents=[1], _connects=[0], more...}
colIdx 0
于 2013-04-10T10:03:16.963 回答