我只是试图限制用户输入1到6之间的数字。所以我的代码是:
{
xtype : 'textfield',
id : 'NUMBER',
width : '100%',
fieldLabel : "NUMBER",
dataIndex : 'NUMBER',
maxLength : 1,
value : 0,
regex : /[0-6\/]/,
maskRe : /[0-6]/,
enforceMaxLength : true,
readOnly : true,
mandatory : true,
}
由于某种原因,我可以输入1到9之间的任何数字(虽然我得到无效的表格错误)。此外,由于起始值因某种原因为0,我可以在他之前添加一个数字,例如我可以输入" 90"。
所以我的最后一个问题是,"为什么我的" maskRe"工作正常"?
答案 0 :(得分:1)
您正在寻找:
{
xtype: 'numberfield',
label: 'Age',
minValue: 1,
maxValue: 6,
name: 'age'
}
关于maskRe
,他们说:
maskRe:RegExp 用于过滤击键的输入掩码正则表达式> (键入的字符)不匹配。注意:它不会过滤字符>已经在输入中。
所以/ [1-6] /的maskRe将让用户输入1到6个字符,但不会使已经存在的0无效,并且不会施加长度限制。
答案 1 :(得分:1)
你的代码,没有// Below is for my sample data
var dt = new DataTable();
var idCol = dt.Columns.Add("ID", typeof(int));
var itemCol = dt.Columns.Add("Item", typeof(string));
var upCol = dt.Columns.Add("Unit Price", typeof(int));
var qtyCol = dt.Columns.Add("Qty",typeof(int));
dt.Rows.Add(8, "Pasta", 20, 1);
dt.Rows.Add(9, "Pasta", 20, 1);
// I generate my expected result by using linq
var mergedData = dt.Rows.OfType<DataRow>()
.GroupBy(g=> g.ItemArray[itemCol.Ordinal])
.Select(c=> new
{
item = c.Key,
id = c.FirstOrDefault()?[idCol], // I think you need first id as result
up = c.Average(x=> int.Parse(x[upCol].ToString())), // I think you need average of Unit Prices as result
qty = c.Sum(x => int.Parse(x[qtyCol].ToString())) // I think you need sum of Quantity as result
});
// A clone of current DataTable will give me its structure without data
// I use this as a temporary DataTable
var newDt = dt.Clone();
foreach (var md in mergedData)
{
newDt.Rows.Add(md.id, md.item, md.up, md.qty);
}
dt = newDt;
,对我来说是一个小提琴;所以我不确定为什么它不适合你。
You can find the fiddle here;请注意,我仅在最近的Chrome中测试过。