2013-02-01 54 views
0

我想從我的C#控制器中的網格中獲取值。這是我的商店和網格如何從網格獲取值到C#控制器

Ext.create('Ext.data.Store', { 
    storeId:'store', 
    fields:['name', 'email', 'phone'], 
    proxy: { 
     type: 'memory', 
     reader: { 
      type: 'json', 
      root: 'items' 
     } 
    } 
}); 

Ext.create('Ext.grid.Panel', { 
    store: Ext.data.StoreManager.lookup('store'), 
    columns: [ 
     { text: 'Name', dataIndex: 'name' }, 
     { text: 'Email', dataIndex: 'email', flex: 1 }, 
     { text: 'Phone', dataIndex: 'phone' } 
    ], 
    height: 200, 
    width: 400, 
    renderTo: Ext.getBody() 
}); 

這是我在嘗試我的網格值傳遞給控制器​​

var records = []; 
this.store.data.each(function(rec) { 
    records.push(rec.data); 
}); 
Ext.Ajax.request({ 
    url: 'mycontroller/read_grid', 
    params: { 
      par1: Ext.encode(records) 
    } 
}) 

我的問題是如何獲取的所有值從柱的電話更新我的sql數據庫。我使用某種陣列還是有一種方法來獲得列「電話」的所有值來存儲在數據庫中

回答

2

你是這樣做的錯誤方式。首先你應該總是有一個[idProperty][1]屬性爲模型,你應該總是使用一個模型!現在,如果您未定義模型,商店將使用隱式模型,並且如果您未定義idProperty,則默認情況下它將爲'id'。

現在讓我們假設你有這一切: 如果再添加或綁定到一個商店類型的編輯模型實例(記錄)(添加或加載到它),你可以提交所有同行的人通過在商店上撥打sync()來更改(有髒字段)或新(是幻像)。代理將需要一個適當的作家。在你的情況下,你可以將配置爲[allowSingle][2]的寫入配置爲false,以強制寫入程序始終將記錄數組(列表)發送回服務器,否則可能會在控制器上反序列化錯誤。

如果你只是發送電話號碼,你的情況聽起來有點不尋常,你怎麼知道哪個電話號碼屬於誰?無論如何,如果你像上面描述的那樣做,你有正確的方法,你仍然可以決定你在服務器上的哪些字段。

注意:如果您在模型中定義的代理,你不需要再定義相同 在商店。

更新

要提取只是一個字段類型,並把它你可以做(​​未經測試)

var emails = store.collect('email'); 
Ext.Ajax.request({ 
    url: 'page.php', 
    jsonData: emails, 
    success: function(response){ 
     var text = response.responseText; 
     // process server response here 
    } 
}); 

看到collect & request瞭解更多信息

+0

我對不起,真的...真的Ÿ,這是我發送給我的服務器的電子郵件。基本上電子郵件地址是在網格上輸入的,當我點擊提交按鈕後,我得到網格上的所有電子郵件地址發送電子郵件到這些地址。所以我仍然需要idProperty? – EagleFox

+1

@EagleFox OK,然後看我的編輯。我認爲如果商店只是本地的,那麼這可能不是嚴格要求。檢查我添加的內容,我猜你會看到它是否有效。 – sra

+0

是的謝謝你sra ...我可以從客戶端收到電子郵件罰款,現在我怎麼處理服務器端...我很抱歉我使用c#...我試圖使「電子郵件」的對象和然後獲取值,但我得到空 – EagleFox

相關問題