簡體   English   中英

在ExtJS網格中,將NULL值顯示為空字符串而不是“null”字符串的最簡單方法是什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM