2013-09-16 1 views
0

Я знаю, что есть такие вопросы, как мои, но детали важны в моем случае, и детали этого вопроса отличаются от того, который уже задан. однако проблема в том, что я пытаюсь создать новое окно с extjs, начиная с уже выполненной сетки. Это новое окно должно содержать сетку с al ссылки на элемент, выбранный из предыдущей сетки. Итак, это мое решение, я поместил вызов ajax внутри первой сетки. Я сделал столбец, чтобы содержать изображение, которое нужно кликнуть, чтобы перейти ко второй сетке. Но это не работает. Когда я нажимаю на изображение, он ничего не показывает?Как создать новое окно в ajax в extjs

Неправильно ли я делаю вызов ajax? Неправильно ли вы передаете json на страницу для хранения сетки, которая должна быть в новом окне? Есть идеи? Это код моих сеток:

var grid = Ext.create('Ext.grid.Panel', { 
    store: store1, 
    stateful: true, 
    collapsible: true, 
    multiSelect: true, 
    stateId: 'stateGrid', 
    columns: [ 
     { 
      text  : 'id', 
      flex  : 1, 
      sortable : true, 
      dataIndex: 'id' 
     }, 
     { 
      text  : 'buyer_member_id', 
      width : 75, 
      sortable : true, 
      dataIndex: 'buyer_member_id' 
     }, 
     { 
      text  : 'Client Name', 
      width : 200, 
      sortable : true, 
      dataIndex: 'name' 
     }, 
     { 
      xtype : 'actioncolumn', 
      width : '5%', 
      sortable : false, 
      items : [{ 
       icon : '../static/accept.gif', 
       tooltip : 'See Admants', 
       handler : function(grid, rowIndex, colIndex){ 
        var row = grid.getStore().getAt(rowIndex); 
        buyer_member_id = grid.getSelectionModel.getSelection()[1] 
        Ext.Ajax.defaultHeaders = { 
         "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" 
        }; 
        Ext.Ajax.request({ 
         method : "GET",  
         url: '/mygrid/', 
         params:{ 
           buyer_member_id: buyer_member_id, 
         }, 
         success : function(response) { 
          var obj = response; 
          try { 
           obj = Ext.decode(response.responseText); 
          } catch (error) {} 
          if (obj) { 
           Ext.create('Ext.window.Window', { 
           title: 'Hello', 
           height: 200, 
           width: 400, 
           layout: 'fit', 
           items: { // Let's put an empty grid in just to illustrate fit layout 
           xtype: 'grid', 
           border: false, 
           columns: [ 
             { 
              text  : 'id', 
              flex  : 1, 
              sortable : true, 
              dataIndex: 'id' 
             }, 
             { 
              text  : 'name', 
              width : 300, 
              sortable : true, 
              dataIndex: 'name' 
             }],     // One header just for show. There's no data, 
           store: new Ext.data.JsonStore({ 
            // store configs 
            storeId: 'myStore', 
            proxy: { 
             type: 'ajax', 
             url: '/admants/', 
             reader: { 
              type: 'json', 
             } 
            },}) 

           }}).show(); 
          } else { 
          alert("Invalid response") 
          } 
         }, 
         failure : function(response) { 
          alert("Data request failed"); 
         } 
        }); 
       } 
      }] 
     } 
    ], 
+0

Какая у вас отладка? В каких точках код попал? –

+0

Проблема была в первую очередь этой строки: 'buyer_member_id = grid.getSelectionModel.getSelection() [1]', но я нашел righ ответ на эту первую проблему и о том, как создать окна, у меня все еще есть проблема, но не одна упомянутая в вопросе. Я вставляю козу в ответ. Агнесе – softwareplay

ответ

0

Кусок кода, который следует открывает новое окно и считывает данные для вызова Ajax. STIL «магазин» не работает, но я опубликую новый вопрос специально для него.

{ 
      xtype : 'actioncolumn', 
      width : '5%', 
      sortable : false, 
      items : [{ 
       icon : '../static/accept.gif', 
       tooltip : 'See Admants', 
       handler : function(grid, rowIndex, colIndex){ 
        var row = grid.getStore().getAt(rowIndex); 
        //buyer_member_id = grid.getSelectionModel.getSelection()[1] 
        var row = grid.getStore().getAt(rowIndex); 
        var buyer_member_id = row.data.buyer_member_id; 
        Ext.Ajax.defaultHeaders = { 
         "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" 
        }; 
        Ext.Ajax.request({ 
         method : "GET",  
         url: '/admants/?buyer_member_id='+ buyer_member_id, 
         success : function(response) { 
          var obj = response; 
          try { 
           obj = Ext.decode(response.responseText); 
          } catch (error) {} 
          if (obj) { 
           Ext.create('Ext.window.Window', { 
           title: 'Hello', 
           height: 200, 
           width: 400, 
           layout: 'fit', 
           items: { // Let's put an empty grid in just to illustrate fit layout 
           xtype: 'grid', 
           border: false, 
           columns: [ 
             { 
              text  : 'id', 
              flex  : 1, 
              sortable : true, 
              dataIndex: 'id' 
             }, 
             { 
              text  : 'name', 
              width : 300, 
              sortable : true, 
              dataIndex: 'name' 
             }],     // One header just for show. There's no data, 
           store: new Ext.data.JsonStore({ 
            // store configs 
            storeId: 'myStore', 
            proxy: { 
             type: 'ajax', 
             url: '/admants/', 
             reader: { 
              type: 'json', 
             } 
            },}) 

           }}).show(); 
          } else { 
          alert("Invalid response") 
          } 
         }, 
         failure : function(response) { 
          alert("Data request failed"); 
         } 
        }); 
       } 
      }] 
     } 
    ], 
Смежные вопросы