Grouping Grid分组排序
var xg = Ext.grid;
var store = new Ext.data.GroupingStore({
proxy: new Ext.data.HttpProxy(
{
url: Bronze.Common.ajaxURL
}),
remoteSort: false, //是否远程排序
remoteGroup:true,
reader: new Ext.data.JsonReader(
{
root: 'Rows', //这两个属性对应后台的解析json格式
totalProperty: 'Total',
id: 'FID'
}, [
{
name: 'Fid',
mapping: 'FID', //对应数据库的列名
type: 'string'
},
{
name: 'FName',
mapping: 'FName',
type: 'string'
},
{
name: 'TermName',
mapping: 'TermName',
type: 'string'
},
{
name: 'FCreateDate',
mapping: 'FCreateDate',
type: 'date'
}]),
sortInfo: { field: 'TermName', direction: "DESC" },
groupField: 'TermName',
groupDir:'desc',//起作用的是这个属性,这个属性虽然可以使用,但却没有出现在官方使用说明文档中
baseParams: //传入的参数
{
classname: 'SubjectTScoreStat',
methodname: 'GetTermExamsByClAndSub',
classIds:"",
subjectIds:""
}
});
var renderInput = function (value, metadata, record, rowIndex, colIndex, store) {
metadata.attr = 'style="border:1px solid #6593cf;"';
return value || '';
};
var grid = new Ext.grid.EditorGridPanel({
store: store,
columns: [
{ header: "TermName", width: 60, dataIndex: 'TermName' , hidden:true},
{ header: "考试名称", width: 20, dataIndex: 'FName' },
{ header: "开始名次", width: 20, sortable: true, dataIndex: 'start', editor: new Ext.form.NumberField({
allowBlank: true,
allowNegative: false,
selectOnFocus: true,
minValue: 1
}),
renderer: renderInput
},
{ header: "结束名次", width: 20, sortable: true, dataIndex: 'end', editor: new Ext.form.NumberField({
allowBlank: true,
allowNegative: false,
selectOnFocus: true,
minValue: 1
}),
renderer: renderInput
}
],
view: new Ext.grid.GroupingView({
showGroupName: false,
forceFit: true,
groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Items" : "Item"]})'
}),
frame: true,
width: 250,
height: 550,
//collapsible: true,
//animCollapse: false,
//title: 'Grouping Example',
iconCls: 'icon-grid',
clicksToEdit: 1
//renderTo: document.body
});
store.load();
// grid.on('afteredit', afterEdit, this);
var json = [];
function afterEdit(e) {
};
grid.on('validateedit', function (e) {
if (e.field == "start" && e.record.data.end != null && e.record.data.end != "" && e.value!="") {
if (e.value <= e.record.data.end) {
return true;
}
else {
alert('开始名次不能高于结束名次!');
return false;
}
}
else if (e.field == "end" && e.record.data.start != null && e.record.data.start != "" && e.value != "") {
if (e.value >= e.record.data.start) {
return true;
}
else {
alert('开始名次不能高于结束名次!');
return false;
}
}
else
{
return true;
}
});
var comTermExam = new ComboBoxGrid({
editable: false,
name: 'FSubjectName',
fieldLabel: '考试',
displayField: 'FName',
valueField:'Fid',
//mode: 'local',
// forceSelection: true,
triggerAction: 'all',
//emptyText: '--所有--',
// selectOnFocus: true,
hiddenName: 'FSubjectId',
grid: grid,
'onSelect': function (record, index) {
if (this.fireEvent('beforeselect', this, record, index) !== false) {
// this.setValue(record.data[this.valueField || this.displayField]);
//this.collapse();
this.fireEvent('select', this, record, index);
}
},
onViewClick: function (doFocus) {
// var index = this.view.getSelectedIndexes()[0],
// s = this.store,
// r = s.getAt(index);
// if (r) {
// this.onSelect(r, index);
// } else {
// //this.collapse();
// }
// if (doFocus !== false) {
// this.el.focus();
// }
}
});
comTermExam.on('gridselected',
function () {
}
);