原創|使用教程|編輯:郝浩|2013-04-02 13:10:14.000|閱讀 670 次
概述:如何在DXTREME ENTERPRISE中擴展 SlideOutLayout 和創建一個自定義CommandManager。這個例子演示了如何添加一個或多個列表到SlideOutLayout,同時將命令分為兩組。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
如何在DXTREME ENTERPRISE中擴展 SlideOutLayout 和創建一個自定義CommandManager。這個例子演示了如何添加一個或多個列表到SlideOutLayout,同時將命令分為兩組。
要做的第一件事是修改的SlideOutLayout.hml的文件,并添加一個列表,你只需要創建復制現有的列表,然后創建一個用于第二個List的局部視圖的CSS規則,用于始終保持它的底部邊緣,在創建一個CSS規則的局部視圖,用于包含這兩個列表。
.layout-list-bottom { position: absolute; bottom: 0; height: auto; width: 100%; } .nav-list { height: 100%; }
將上面的代碼插入到NavBarLayout.css文件,此外添加自定義的“data-bottom”屬性到下面的列表,自定義CommandManager將使用這個屬性來識別列表,經修改的局部視圖的代碼如下所示:
<div class="nav-patrial-view" data-dx-role="view" data-dx-name="nav-list" class="nav-list"> <div data-bind="dxList: { }" data-dx-command-container="navigation: { }" style="height: 100%"> <div data-dx-role="template" data-dx-name="item" data-bind="visible: visible, css: { 'dx-state-disabled': disabled }"> <div data-bind="click: click" > <!-- ko if: icon --> <span data-bind="attr:{ 'class': 'dx-icon dx-icon-' + icon }"></span> <!-- /ko --> <!-- ko if: iconSrc --> <img class="dx-icon" data-bind="attr: { src: iconSrc}"/> <!-- /ko --> <div class="dx-navigation-item" data-bind="text: title"></div> </div> </div> </div> <div data-bind="dxList: { }" data-dx-command-container="navigation: { }" class="layout-list-bottom" data-bottom="true"> <div data-dx-role="template" data-dx-name="item" data-bind="visible: visible, css: { 'dx-state-disabled': disabled }"> <div data-bind="click: click" > <!-- ko if: icon --> <span data-bind="attr:{ 'class': 'dx-icon dx-icon-' + icon }"></span> <!-- /ko --> <!-- ko if: iconSrc --> <img class="dx-icon" data-bind="attr: { src: iconSrc}"/> <!-- /ko --> <div class="dx-navigation-item" data-bind="text: title"></div> </div> </div> </div> </div>
如果修改再運行這些應用程序,將會看見包含所有命令的2個列表。這是因為默認的CommandMangaer不識別列表,將會把所有的命令放入這兩個列表中。接下來的一步是創建一個自定義的CommandManager用于繼承默認的CommandManager,覆蓋覆蓋其_mapCommands方法。代碼如下:
var CustomCommandManager = DevExpress.framework.html.CommandManager.inherit({ ctor: function(options) { this.callBase(options); this.bottomCommands = options.bottomCommands || {}; }, _mapCommands: function ($markup, commands) { var result = []; var self = this; $markup.find("*[data-dx-command-container]").each(function () { var $commandContainer = $(this); var optionsJsonString = $commandContainer.data("dx-command-container"); var options = new Function("return {" + optionsJsonString + "}")(); var mapping = { $container: $commandContainer, commands: [], options: options }; result.push(mapping); $.each(options, function (location, locationOptions) { $.each(commands, function (index, command) { if (command && command.option("location") === location) { if (location != 'navigation' || !($commandContainer.data('bottom') ^ self.bottomCommands[command.option('action').slice(1)])) mapping.commands.push(command); } }) }) }); return result } });
最后創建一個自定義CommandManager的示例,然后用HtmlApplication進行注冊。
var commandManager = new CustomCommandManager({ bottomCommands: { About: true } }); DxSample.app = new DevExpress.framework.html.HtmlApplication({ ns: DxSample, viewPortNode: document.getElementById("view-port"), defaultLayout: DxSample.config.defaultLayout, navigation: DxSample.config.navigation, commandManager: commandManager }); commandManager.globalCommands = DxSample.app.navigation;
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都控件