2016-02-14 60 views
0

我不知道如何判斷,但我仍然沒有把它做對。這是我的代碼:以'0'爲前綴的存儲號碼

Ext.define("PL.view.list.listOnly", { 
    extend: 'Ext.form.Panel', 
    alias: 'widget.listlistonly', 
    config:{ 
     fullscreen: true, 
     title: 'Master barang', 
     items:[{ 
      xtype : 'panel', 
      layout: { 
       type: 'fit', 
       align : 'stretch', 
       pack : 'start', 
      }, 
      defaults: { 
       allowBlank: true, 
       msgTarget: 'side', 
       labelWidth: 60, 
       margin: '5 5 5 5', 
      }, 
      items:[{ 
        xtype:'list', 
        height: '100%', 
        masked: { xtype: 'loadmask',message: 'Loading...' }, 
        scrollable: { 
         direction: 'vertical', 
         directionLock: true 
        }, 
        store:{ 
         fields: [{ 
           name:'szName', 
          },{ 
           name:'szProductID', 
          },{ 
           name:'szBarcode', 
         }], 
         autoLoad: true, 
         pageSize: 20, 
         proxy: { 
          type: 'ajax', 
          url: 'store/product/loadData.php', 
          pageParam: 'param', 
          reader: { 
           type: 'json', 
           rootProperty: 'topics', 
          } 
         } 
        }, 
        variableHeights: false, 
        useComponents: true, 
        itemTpl: '<div class="myButton">' + 
        '<input type="button" name="{szProductID}" value="Edit" ' + 
        'style="padding:3px;">' + 
        '</div>' + 
        '<div class="myContent">'+ 
        '<div>PLU : <b>{szProductID}</b>, Barcode: <b>{szBarcode}</b></b></div>' + 
        '<div>Nama: <b>{szName}</b></div>' + 
        '</div>', 
       }] 
      }],   
     scrollable : false, 
    }, 
}); 

這是我從JSON獲得:

{"topics": [{ 
     "szProductID": 1001, 
     "szBarcode": 002, 
     "szName": "STANDARD BLACK" 
    },{ 
     "szProductID": 1100420020479, 
     "szBarcode": 1100420020479, 
     "szName": "STANDARD BLUE" 
     }], 
"totalCount": 2} 

正如你可以看到,有一個「002」(szBarcode場),這是我的問題。該列表僅顯示'2'而不是'002'。這應該顯示'002'爲szBarcode,但我不知道如何解決這個問題。

任何幫助將不勝感激

+0

你控制JSON嗎? – trincot

+0

嗨trincot ...你是什麼意思控制JSON? – Viandry

回答

0

的問題是,barcode: 002barcode: 2意味着JSON格式完全相同。數字的前綴零不計數。

大概有四種不同的東西可以做。

  1. 如果您可以訪問服務器代碼,則可以更改它以將條形碼字段作爲字符串發送給您(barcode:"002")。
  2. 如果您的條形碼總是有一定的長度(如13),您可以使用您的號碼,並再次將其填充到所需的長度。請注意,經過一定的長度後,存在精度問題,因爲數字存儲在固定長度的內存中,而字符串的內存總是隨需要而變長。採樣轉換代碼:
    name:'barcode', convert:function(value) { var str = value.toString(), pad = "0000000000000"; // expand to length of your number return pad.substring(0, pad.length - str.length) + str); }
    (獎金:此代碼不打破,當有人不(1)之後...)
  3. 如果你在你的JSON沒有其他條碼領域,你可以使用正則表達式來添加在反序列化之前向JSON客戶端提供必要的引號。
  4. 您可以覆蓋ExtJS的默認JSON序列化/反序列化代碼。請注意,這不像聽起來那麼容易,並且可能具有相當多的副作用。如果您想要將條形碼作爲零填充的JSON號碼發送回服務器,則這是唯一合適的方法。
+0

嗨亞歷山大......我已經完成了第1步到第3步,作爲我的臨時解決方案。對於第4步,我需要爲此而思考......無論如何,謝謝Alex – Viandry

+0

這不是四個步驟,而是四種不同的解決方案 - 你只需要做其中的一個...... – Alexander