Хранить номера с префиксом «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

Решение

Проблема в том, что barcode: 002 а также barcode: 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. Вы можете переопределить стандартный код JSON для сериализации / десериализации ExtJS. Обратите внимание, что это не так просто, как кажется, и может иметь некоторые побочные эффекты. Это единственный подходящий способ, если вы хотите отправить штрих-код в виде чисел JSON с нулями и обратно на сервер.
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]