2010-03-24 1 views
1

У меня есть границы макета в ExtJS,Как добавить панель инструментов в область с ExtJS

Северный регион содержит некоторые HTML, но также должен содержать a toolbar like this...

Так что я уже удалось получить настройка макета границы, добавлен html в Северный регион макета, но я не могу найти каких-либо практичных примеров того, как реализовать панель инструментов.

Я нашел много примеров панелей инструментов самостоятельно, но у меня нет роскоши или обучения ExtJs, так что это все греки для меня.

Я подозреваю, что есть способ определить панель инструментов за пределами громоздкого потока стилей JSON, создавая макет и каким-то образом прикрепляя его к региону, и я надеюсь, что это релятиви просто. Если кто-то может объяснить, как я это сделаю, это действительно поможет.

Вот код до сих пор ...

//make sure YOUR path is correct to this image!! 
Ext.BLANK_IMAGE_URL = '../../ext-2.0.2/resources/images/default/s.gif'; 


//this runs on DOM load - you can access all the good stuff now. 

Ext.onReady(function(){ 
    var viewport = new Ext.Viewport({ 
     layout: "border", 
     border: false, 
     renderTo: Ext.getBody(), 
     items: [ 


     // ------------------------------------------------------------------ 
     { 
      region: "north", 
      id : "toolbar-area", 
      xtype: 'panel', 
      html: [ "<div id=\"html-header\">", 
        "<div id=\"council-logo\"></div>", 
        "<ul id=\"ancillary-menu\">", 
         "<li><a href=\"#\">Logout</a></li>", 
         "<li><a href=\"#\">Gazeteer Home</a></li>", 
         "<li>Hello Rachel</li>", 
        "</ul>", 
        "<img id=\"inteligent-logo\" src=\"applied-images/logos/inteligent.gif\">", 
        "</div>" ], 

      /* ++++++++++++++++++++++++++++++++++++++++++++ */ 
      /* The toolbar needs to go around here....  */ 
      /* ++++++++++++++++++++++++++++++++++++++++++++ */ 

      height: 100 
     }, 

     // ------------------------------------------------------------------ 
     // WEST 
     // ------------------------------------------------------------------ 
     { 
      region: 'west', 
      xtype: 'panel', 
      split: true, 
      resizeable: false, 
      maxWidth : 350, 
      minWidth : 349, 
      collapsible: true, 
      title: 'Gazetteer Explorer', 
      width: 350, 
      minSize: 150, 

      // -------------------------------------------------------------- 

      title: 'Nested Layout', 
      layout: 'border', 
      border: false, 
      id: "west", 
      items: [ 

       { 
        // *********************************************** 
        // Search Form 
        // *********************************************** 

        region : "north", 
        height: 300, 
        split : true, 
        id : "left-form-panel", 
        items : [{ 

         xtype : "form", 
         id : "search-form", 
         items : [ 

          // Authority combo box 
          // =============================== 
          { 
           xtype : "combo", 
           fieldLabel : "Authority", 
           name : "authority", 
           hiddenName : "authority", 
           id : "authority-combo" 
          }, 
          // =============================== 

          // Search Fieldset 
          // =============================== 
          { 
           xtype : "fieldset", 
           autoHeight : true, 
           title : "Search by...", 
           id : "search-fieldset", 
           items : [ 

            // Ref Number text Box 
            // %%%%%%%%%%%%%%%% 
            { 

             xtype : "textfield", 
             name : "ref-number", 
             fieldLabel : "Ref. Number", 
             id : "ref-number-textfield" 

            }, 
            // %%%%%%%%%%%%%%%% 
            // Streetname Combo 
            // %%%%%%%%%%%%%%% 
            { 

             xtype : "combo", 
             name : "street-name", 
             hiddenName : "street-name", 
             fieldLabel : "Street Name", 
             id : "street-name-combo" 

            }, 
            // %%%%%%%%%%%%%%%% 
            // Postcode Combo 
            // %%%%%%%%%%%%%%%% 
            { 

             xtype : "combo", 
             name : "postcode", 
             hiddenName : "postcode", 
             fieldLabel : "Postcode", 
             id : "postcode-combo" 

            }, 
            // %%%%%%%%%%%%%%%% 

            // Postcode Combo 
            // %%%%%%%%%%%%%%%% 
            { 

             xtype : "combo", 
             name : "town", 
             hiddenName : "town", 
             fieldLabel : "Town", 
             id : "towm-combo" 

            }, 
            // %%%%%%%%%%%%%%%% 

            // Postcode Combo 
            // %%%%%%%%%%%%%%%% 
            { 

             xtype : "combo", 
             name : "locality", 
             hiddenName : "locality", 
             fieldLabel : "Locality", 
             id : "locality-combo" 

            }, 
            // %%%%%%%%%%%%%%% 

            // Search Button 
            // %%%%%%%%%%%%%%%% 

            { 
             xtype : "button", 
             text : "Search", 
             id : "search-button" 
            }, 

            // Reset Button 
            // %%%%%%%%%%%%%%% 

            { 
             xtype : "button", 
             text : "Reset", 
             id : "reset-button" 
            } 


           ] 
          }, 
          // ======================= 


         ] 

        }] 

        // ********************************************* 

       }, 

       { 
        region: 'center', 
        html: 'Tree view goes here' 
       } 

      ] 



     }, 

     // ------------------------------------------------------------------ 
     { 
      region: 'center', 
      xtype: 'panel', 


      // -------------------------------------------------------------- 
       layout: 'border', 
       border: false, 
       items: [ 

        { 
        region: 'center', 
        height: 200, 
        split: true, 
        html: 'Map goes here' 
        }, 

        { 
        region: 'south', 
        title: "Selection", 
        split: true, 
        height: 200, 
        collapsible: true, 
        html: 'Nested Center' 
        } 

       ] 
     }, 

     // ------------------------------------------------------------------ 
     { 
      region: 'east', 

     }, 

     // ------------------------------------------------------------------ 

     { 
      region: 'south', 
     }] 


    }); 
}); 

К сожалению, есть так много кода, но ExtJS заставляет меня страшно трогать ничего, что работает.

+0

где вы хотите отобразить панель инструментов? должен ли он быть южным регионом или просто под центральной панелью? я могу дать вам код, просто скажите мне, где вы этого хотите: D – Nexum

+0

sry просто видел ваш комментарий, где вы этого хотите ^^ sec я отредактирую свой ответ за минуту – Nexum

ответ

4

просто добавить

bbar: [ 
    // YOUR ITEMS HERE EXAMPLE FOLLOWING 
    { 
     xtype: 'button', 
     text: 'test Button', 
     handler: function(btn){ 
      alert('Button Click'); 
     } 
    } 
] 

в вашей конфигурации (где xtype === панель)

было бы выглядят примерно так:

{ 
     region: "north", 
     id : "toolbar-area", 
     xtype: 'panel', 
     html: [ "<div id=\"html-header\">", 
       "<div id=\"council-logo\"></div>", 
       "<ul id=\"ancillary-menu\">", 
        "<li><a href=\"#\">Logout</a></li>", 
        "<li><a href=\"#\">Gazeteer Home</a></li>", 
        "<li>Hello Rachel</li>", 
       "</ul>", 
       "<img id=\"inteligent-logo\" src=\"applied-images/logos/inteligent.gif\">", 
       "</div>" 
       ], 
     bbar: [ 
      { 
       xtype: 'button', 
       text: 'test Button', 
       handler: function(btn) { 
       alert('Button Click'); 
       } 
      } 
     ], 
     height: 100 
    } 
1

ExtJS имеет встроенную панель инструментов.

Вы можете увидеть пример здесь:

+0

Я нашел все примеры, подобные этому, но для новичок, это бесполезно. Я должен указать, я не решил использовать ExtJS, это было навязано мне. У меня нет никакого опыта в этом. Я указал это клиенту до того, как начал, и был уверен в технической помощи, которая не проявилась. Что мне нужно знать, так это то, как этот код панели инструментов относится к регионам в макете границы. – gargantuan

3

@ ответ Nexum является правильным, но добавить немного больше контекста, каждый регион в BorderLayout на самом деле Ext.Panel, поэтому любая конфигурация, которую можно использовать для панелей может быть применена к региону. Для панелей инструментов просмотрите документы Ext.Panel для tbar (верхняя панель инструментов) и bbar (нижняя панель инструментов).

Что касается несвязанного примечания, я вижу, что вы вручную создаете кучу HTML-кода для содержимого северной панели. Это рецепт боли. Для нетривиальной разметки гораздо проще добавить ее на странице как стандартный HTML с окружающим div. Дайте div id и класс x-hidden, затем потяните его, используя конфигурацию панели contentEl.

+0

hm Я хочу добавить, что область в ext vieport может быть расширена от Ext.Component, поэтому регион может также непосредственно использовать панель инструментов или колодец формы или dataview.просто в cae кто-то путается :-) проголосуйте за вас здесь :) – Nexum

+0

На самом деле, когда я говорю «регион», я имею в виду Ext.BorderLayout.Region. Некоторый другой компонент, такой как DataView, может быть добавлен в контейнер, как вы говорите, но в техническом плане он не был бы «регионом». –