2013-04-10 3 views
0
  • В декларативном dojox.grid.datagrid я использую onresizecolumn в теге таблицы.

onresizecolumn = "columnResize (this.id, this.cellIdx)"Получить индекс столбца в onresizecolumn декларативного dojox.grid.datagrid

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); 
     } 
+0

Каковы ошибки? Что выдают оповещения? Какая версия Dojo? –

+0

для предупреждения (id) = internal__eterte и для предупреждения (index) = undefined. dojo version = 1.7 – Rachel

ответ

1

Прочитав API documentation, я пришел к выводу, что Dojo автоматически отправляет индекс ячейки в обработчик события. Таким образом, решение просто предоставляя следующий атрибут onResizeColumn="myFunction", а затем вы определяете функцию следующим образом:

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

Это должно работать, я даже сделал JSFiddle, чтобы проверить его. Кстати, есть ли причина, по которой вы хотели бы сделать все это декларативным образом? Что касается моего опыта, гораздо легче написать большую часть этого в JavaScript.

+0

его работа. большое спасибо. можно ли получить индекс столбца таким образом .. onResizeColumn = "myFunction (this.id)" function myFunction (cellDx, tableID) { alert (cellDx); }. Мне нужен и идентификатор таблицы, и индекс. для моей цели проекта, это должно быть декларативным способом. – Rachel

+0

Я так не думаю, так как ваш обработчик событий вернет индекс ячейки. Я думаю, что слишком много манипулируя обработчиком событий, ни один из них не будет работать, или, по крайней мере, идентификатор таблицы не будет. – g00glen00b

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 
+0

Я не смог найти способ передачи выбранного столбца в функцию. –

+0

в порядке. скрипта не возвращает ни одно из вышеуказанных значений. то у меня есть еще один атрибут в теге таблицы, как onheadercellclick = «getGridHeader (event)», а внутри функции getGridHeader можно получить значение event.grid.id и так далее. то почему его невозможно в атрибуте onresizecolumn. мне нужно переопределить событие onresizecolumn в dojo-1.7/dojox/grid/_Grid.js – Rachel

+0

извините, у него была пара версий старых. исправлено. –