2010-04-17 20 views
1

我正在尋找一個dojo增強網格的示例,該網格包含單元格或行菜單中單元或行數據訪問的上下文菜單。我設法使用行上下文菜單創建增強型網格。我可以創建一個捕獲點擊行菜單項的事件的函數。但是,我不確定如何在菜單項處理程序的上下文中訪問行數據。我在夜間搭建的測試中沒有看到任何例子。有沒有這種在線可用的例子?是否有帶上下文菜單的dojo增強網格示例

+0

你能解釋一下如何捕捉事件中的行號嗎?因爲我沒有看到如何去做。謝謝。 – 2011-01-18 18:49:19

回答

0

我想通了。甚至在行上下文菜單上,將行號捕獲到全局中。即使在菜單項上單擊,也可以從全局中檢索行,然後使用它查找網格中行的內容。我一直在使用這種方法,它的工作非常完美。

1

我有一個類似的問題。我想創建一個上下文菜單,允許用戶從數據網格中刪除他們右鍵單擊的項目,並從數據存儲中刪除項目。認爲它應該是非常簡單的,並與您的幫助和其他網站,我想出了以下代碼。

var selectedItem; // This has to be declared "globally" outside of any functions 

function onRowContextMenuFunc(e) { 
    grid5_rowMenu.bindDomNode(e.grid.domNode); 
    selectedItem = e.grid.getItem(e.rowIndex); 
} 

function gridRowContextMenu_onClick(e) { 
    store3.deleteItem(selectedItem); 
} 

<div dojoType="dijit.Menu" id="grid5_rowMenu" jsId="grid5_rowMenu" style="display: none;"> 
    <div dojoType="dijit.MenuItem" onClick="gridRowContextMenu_onClick">Delete</div> 
    <div dojoType="dijit.MenuItem">Cancel</div> 
</div> 

<div id="grid" dojoType="dojox.grid.DataGrid" jsId="grid5" store="store3" structure="layoutStructure" rowsPerPage="40" onRowContextMenu="onRowContextMenuFunc"></div> 

當然,如果你是編程創建的DataGrid,你想補充onRowContextMenu:onRowContextMenuFunc你的聲明。

+0

編輯:有上述代碼的一些問題,它允許用戶右鍵單擊一行,然後單擊取消或以其他方式隱藏上下文菜單,然後右鍵單擊數據網格的空白區域,然後單擊刪除菜單選項它會刪除先前右鍵單擊的項目。如果你有同樣的問題,請查看我修改的代碼[這裏](http://stackoverflow.com/questions/8187693/dojo-datagrid-context-menu-onrowcontextmenu-displays-even-when-right-clicking-在/ 8216093#8216093) – 2011-11-21 19:00:35

0

以下是如何從上下文菜單中訪問選定行:

// First create a menu object to hold the various menus 
var menusObject = { 
    // headerMenu: new dijit.Menu(), 
rowMenu: new dijit.Menu()//, 
// cellMenu: new dijit.Menu(), 
// selectedRegionMenu: new dijit.Menu() 
}; 

添加菜單項

menusObject.rowMenu.addChild(new dijit.MenuItem({ 
    label: "Show me data", 
    onClick: function(e){ 
     console.log(this.selectedRow) 
    } 
})); 

menusObject.rowMenu.startup(); 

創建網格

var grid = new dojox.grid.EnhancedGrid({ 
    store : store, 
structure : layout, 
rowsPerPage: 10, 
escapeHTMLInData: false, 
plugins: { 
    menus: menusObject 
} 
}, 'some are to place'); 

//激活消息從發送數據網格排到菜單項

dojo.connect(grid, 'onRowContextMenu', function(e) 
{ 
    // Set the "selectedItem" property of all of the menu items of a menu. This lets you reference the row data!! 

    var menuChildren = menusObject.rowMenu.getChildren(); 
    for(var i = 0; i<menuChildren.length; i++){ 
     menuChildren[i].selectedRow = this.getItem(e.rowIndex); 
    } 
});