[英]What's the easiest way to display NULL value as empty string instead of “null” string in an ExtJS grid?
我有一個服務器端腳本(PHP)返回JSON數據來填充ExtJS網格。
此數據來自MySQL查詢,包含一些NULL值。
當PHP將其編碼為JSON表示法時,它保持NULL完整:
{"id":"33","name":"Test1","url":null,"cls":"x-tree-noicon","expanded":true}
但是......當這些數據顯示在ExtJS網格中時,它會在NULL值的位置顯示一個“ null ”字符串。
我不希望它顯示“ null ”。 我只想要它空(一個空字符串)。
實現這一目標的最簡單方法是什么?
謝謝。
你定義了一個Ext.data.Model嗎? 如果你定義和Ext.data模型並在Ext.data.Store中使用它來讀取JSON字符串非常容易...
您只需要聲明字段類型:'auto'
嘗試這個:
Ext.define('testModel', {
extend : 'Ext.data.Model',
fields :[
{name: 'Id', type: 'int'},
{name: 'name', type: 'string'},
{name: 'url', type: 'auto'},
{name: 'cls', type: 'string'},
{name: 'expanded', type: 'boolean'}
]
});
var testStore = Ext.create('Ext.data.Store', {
model : 'testModel',
proxy : {
type : 'memory',
reader : {type:'json'}
}
});
並使用testStore填充網格中的數據。
我不確定是否最容易但是我想到的第一件事就是創建一個自定義renderer
。 你可以使用這樣的東西:
function render(value){
if(value === null){
value = '';
}
return value;
}
WoLpH的回答是正確的。 我自己的問題不知何故“不正確”...... :-)
實際上,我正在處理一個treegrid (Ext.ux.tree.TreeGrid),而不是一個常見的ExtJS網格(Ext.grid.GridPanel)。
treegrid的列不是 Ext.grid.Column類型,作為公共網格。 它們是Ext.list.Column類型。
這意味着渲染器配置選項不適用(它存在並且適用於Ext.grid.Column,但不適用於Ext.list.Column)。
要更改Ext.list.Column的呈現,可以使用tpl配置選項,該選項使用Ext.XTemplate機制。
下面,我分享了我的treegrid列的配置,它做了我想要的:
tpl: '<tpl if="url === null"></tpl><tpl if="url !== null">{url}</tpl>'
上面的配置使我的列在treegrid中為NULL值呈現空字符串,而不是“ null ”字符串!
最后說明:我投票支持WoLpH的答案,因為它是正確的。 我的問題是誤導,我寧願不改變/編輯它,而是作為另一個答案分享我自己的發現。 我也感謝他,因為它讓我專注於正確的事情。 謝謝。
你的另一個選擇就是從后端處理它。 您需要在結果集中檢查任何NULL實例,並將它們轉換為空字符串,然后再將其返回給客戶端。
在ExtJS 3.4中,有一個useNull屬性可以為數字字段設置(盡管不是字符串)。
http://docs.sencha.com/extjs/3.4.0/#!/api/Ext.data.Field-cfg-useNull
(可選)將接收的數據轉換為數字類型(int或float)時使用。 如果無法解析該值,則如果useNull為true,則將使用null,否則該值將為0.默認為false
默認為:false
例如
{
name: 'myId',
type: 'int',
useNull: true
},
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.