2010-12-09 2 views
2

Я использую Dojo 1.5 (включая dojox). У меня есть dojox.grid.DataGrid, где каждая строка представляет пользователя. Когда я нажимаю на строку, я хочу перенаправить URL-адрес, например/users/USER_ID. Идентификатор пользователя является одним из полей в сетке, поэтому все, что мне нужно сделать в моем обратном вызове onRowClick, - это захват идентификатора пользователя для строки, которая была нажата.dojox.grid.DataGrid: как получить доступ к данным из события click?

Событие нажмите содержит свойство RowIndex, и, на самом деле, я нашел (довольно старый) после других, что предложил мне быть в состоянии сделать:

var row = dijit.byId('grid').model.getRow(e.rowIndex); 
/* (Then grab the 0th field of the row, which is the user ID.) */ 

(К сожалению, я так потерял URL.)

Но мой объект сетки не имеет атрибута модели. Что с этим? Изменен ли API? (Моя сетка, конечно, заполнена данными, которые я вижу, щелкаю, сортирую по столбцам и т. Д.).

Так что я застрял. Обратите внимание, BTW, что он не будет работать, чтобы использовать rowIndex для прямого доступа к базовому файлу dojo.data.ItemFileReadStore. Это потому, что сетка является сортируемой, поэтому нет никакой гарантии, что строки сетки будут в том же порядке, что и хранилище.

Любые советы были бы глубоко оценены. Надеюсь, что вопрос ясен и достаточно общий, что любые ответы могут помочь другим в моем затруднительном положении. Большое спасибо.

ответ

2

У меня есть подобный сценарий, и я захватить значение, как это:

onRowClick: function(e) { 
    open_link(my_grid._getItemAttr(e.rowIndex, 'object_path')); 
} 

В этом случае my_grid является ссылкой на сетке и OBJECT_PATH это столбец, где я хранить путь к объекту. open_link, конечно же, является моей собственной функцией, которая, как она подразумевает, запрашивает путь к серверу.

Так что просто измените спецификацию на свой корпус, и все должно быть в порядке.

+0

Спасибо! Это сделал трюк. Два последующих вопроса: 1) Можете ли вы порекомендовать хороший источник документов высокого уровня о том, как выполнять такие задачи? Я был расстроен в своих попытках найти что-либо выше уровня документов в стиле Javadoc для отдельных API. Кажется, что dojocampus.org - лучшая вещь, но она немного пятнистая. 2) В Dojo считается ли законным назвать методы, названные с лидирующим подчеркиванием? Я предположил, что они частные API. Еще раз спасибо, -qdw – qdw 2010-12-10 06:28:33