以“0”为前缀存储数字
Store numbers with '0' as prefix
我不知道怎么说,但我还是不明白。这是我的代码:
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,但我不知道如何解决这个问题。
任何帮助将不胜感激
问题是 barcode: 002
和 barcode: 2
在 JSON 格式中的意思完全一样。数字前加零不算数。
您可以做大约四种不同的事情。
- 如果您可以访问服务器代码,您可以更改它以将条码字段作为字符串发送给您 (
barcode:"002"
)。
- 如果您的条形码总是有一定的长度(比如 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) 时中断...)
- 如果您的 JSON 中没有其他条形码字段,您可以在反序列化之前使用正则表达式将必要的引号添加到 JSON 客户端。
- 您可以覆盖 ExtJS 的默认 JSON serialization/deserialization 代码。请注意,这并不像听起来那么容易,并且可能会产生一些副作用。如果您还想将条形码作为零填充 JSON 数字发送回服务器,这是唯一合适的方法。
我不知道怎么说,但我还是不明白。这是我的代码:
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,但我不知道如何解决这个问题。
任何帮助将不胜感激
问题是 barcode: 002
和 barcode: 2
在 JSON 格式中的意思完全一样。数字前加零不算数。
您可以做大约四种不同的事情。
- 如果您可以访问服务器代码,您可以更改它以将条码字段作为字符串发送给您 (
barcode:"002"
)。 - 如果您的条形码总是有一定的长度(比如 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) 时中断...) - 如果您的 JSON 中没有其他条形码字段,您可以在反序列化之前使用正则表达式将必要的引号添加到 JSON 客户端。
- 您可以覆盖 ExtJS 的默认 JSON serialization/deserialization 代码。请注意,这并不像听起来那么容易,并且可能会产生一些副作用。如果您还想将条形码作为零填充 JSON 数字发送回服务器,这是唯一合适的方法。