网格不正确显示记录,asp.net mvc [英] Grid Not Showing the records properly ,asp.net mvc

查看:56
本文介绍了网格不正确显示记录,asp.net mvc的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用的网格是CUSTOMIZED网格,它显示页面编号和pagesize,当直接点击pagesize中的ALL选项时,它将检索所有记录,点击任何页面编号,如1,2 ,3然后点击pagesize点击全部显示空格子



grid.js代码



(函数($){

/ **

*创建网格实例

* @class

* @requires jQuery

* @name iGrid

* @param {Object}选项

* @param {DOMNode} options.renderTo用于DOM节点的CSS选择器呈现为

* @param {String} options.fetchURI URI从

* @param {Object}选项中获取数据。 fetchParams要发送到fetchURI的参数

* @param {Array} options.columns列defi数组nitions

* @param {String} options.columns [i] .name列名

* @param {Boolean} [options.columns [i] .sortable = true ]列是可排序的

* @param {Boolean} [options.columns [i] .width]列宽

* @param {Boolean} [options.columns [i ] .filterable = false]列是可过滤的

* @param {Boolean} [options.columns [i] .hidden = false]列被隐藏

* @param { String} options.firstRecordParamName(仅当enablePaging = false时可选)传递给fetchURI的参数,指定开始记录#以获取

* @param {String} options.lastRecordParamName(仅当enablePaging = false时可选)参数传递给fetchURI指定结束记录#以获取

* @param {String} options.sortByParamName传递给fetchURI的参数按哪个字段排序

* @param {String} options.sortOrderParamName传递给指定排序顺序的fetchURI的参数(asc / desc)

* @param {String} [options.cssCls]为网格提供自定义样式的自定义CSS类名称

* @param {String} [options.nAltRows = 2]备用行颜色的数量(2给出类名称'n-0,n-1,n-0,n-1等......')

* @param {Boolean} [options.enablePaging = true]设置为false为禁用分页并删除页脚

* @param {Number} [options.perPage = 10]默认每页显示的项目数

* @param {Array} [options .pageSizes = [10,20,50,100]]可能的页面大小数组

* @param {Number} [options.maxPageNumLinks = 5]要显示的页码链接的最大数量 - 奇数#建议

* @param {String} [options.previousText ='Previous']上一页的文字

* @param {String} [options.nextText = '下一步']下一步的文字

* @param {String} [options.perScreenText ='每屏显示']按屏幕显示的文字

* @param {String} [options.allText ='All']页脚显示每个屏幕部分中全部的文字

* @param {String} [options.clearFilterText ='Clear Filter' ]清除过滤器按钮的文本

* @param {String} [options.filterText ='过滤器']过滤器按钮的文本

* @param {String } [options.showRowsText ='显示值为'的行'] filter-popup的文本显示值为的行text

* @param {String} [options.filterAndJoinText ='And']过滤器弹出窗口中的和文本

* @param {Array } [options.filterTexts = ['Contains','Equals','Starts With','Ends With']]过滤器弹出窗口的过滤短语列表

* /



函数iGrid(opts){

//默认选项

this.opts = $ .extend({

nAltRows:2,

enablePaging:true,

perPage:5,

maxPageNumLinks:5,

pageSizes:[5,10,20,50,100],

previousText:'Previous',

nextText:'Next',

perScreenText:'每个屏幕显示',

allText:'全部',

fetchParams:{},

clearFilterText:'清除过滤器',

filterText:'过滤器',

showRowsText:'显示值为'的行',

filterAndJoinText:'和',

filterTexts:['Contains','Equals','Starts W ith','结束','

},选择);



this.page = 1;

this.filters = {};

this.filterPopups = {};



this.opts.enablePaging || (this.opts.perPage = 1000000);



//确认所需的选项

var required = ['renderTo','fetchURI' ,'columns','sortByParamName','sortOrderParamName'];

this.opts.enablePaging&& required.push('firstRecordParamName','lastRecordParamName');



for(var i = required.length-1; i> = 0; --i){

if(this.opts [required [i]]){

required.splice(i,1);

}

}



if((opts.columns || [])。length){

for(var i = opts.columns.length-1; i> = 0; --i){

if(!opts.columns [i] .name){

required.push ('columns ['+ i +']。name');

}



opts.columns [i] = $ .extend ({

sortable:true,

display:name,

filterable:false,

hidden:false

},opts.columns [i]);

}

}其他{

required.push('列');

}



if(required.length){

抛出新错误(必填。加入( )+(required.length> 1? '是必填字段':'是必填字段'));

}



this.events = $('

The Grid which i am using is CUSTOMIZED grid where it displays page number and pagesize, when directly click on the ALL options in the pagesize, it will retrieve all the records ,on click on any pagenumber like "1","2","3" and then click pagesize click "ALL" its showing empty grid

code of grid.js

(function($){
/**
* Creates an instance of a Grid
* @class
* @requires jQuery
* @name iGrid
* @param {Object} options
* @param {DOMNode} options.renderTo CSS Selector for the DOM Node to render to
* @param {String} options.fetchURI URI to fetch data from
* @param {Object} options.fetchParams Parameters to send to the fetchURI
* @param {Array} options.columns Array of column definitions
* @param {String} options.columns[i].name Column Name
* @param {Boolean} [options.columns[i].sortable=true] Column is sortable
* @param {Boolean} [options.columns[i].width] Column width
* @param {Boolean} [options.columns[i].filterable=false] Column is filterable
* @param {Boolean} [options.columns[i].hidden=false] Column is hidden
* @param {String} options.firstRecordParamName (optional only if enablePaging=false) Parameter to pass to fetchURI specifying starting record # to fetch
* @param {String} options.lastRecordParamName (optional only if enablePaging=false) Parameter to pass to fetchURI specifying ending record # to fetch
* @param {String} options.sortByParamName Parameter to pass to fetchURI specifying which field to sort by
* @param {String} options.sortOrderParamName Parameter to pass to fetchURI specifying sort order (asc / desc)
* @param {String} [options.cssCls] Custom CSS class name(s) to give to the grid for custom styling
* @param {String} [options.nAltRows=2] Number of alternate row colors (2 gives class names of 'n-0, n-1, n-0, n-1, etc...')
* @param {Boolean} [options.enablePaging=true] Set to false to disable paging and remove footer
* @param {Number} [options.perPage=10] Default # of items to display per page
* @param {Array} [options.pageSizes=[10, 20, 50, 100]] Array of possible page sizes
* @param {Number} [options.maxPageNumLinks=5] The maximum number of "page number" links to display -- Odd # suggested
* @param {String} [options.previousText='Previous'] Text for "Previous"
* @param {String} [options.nextText='Next'] Text for "Next"
* @param {String} [options.perScreenText='Display Per Sreen'] Text for "Display Per Screen"
* @param {String} [options.allText='All'] Text for "All" in footer display-per-screen section
* @param {String} [options.clearFilterText='Clear Filter'] Text for "Clear Filter" button
* @param {String} [options.filterText='Filter'] Text for "Filter" button
* @param {String} [options.showRowsText='Show rows with value that'] Text for filter-popup "Show rows with value that" text
* @param {String} [options.filterAndJoinText='And'] Text for "And" in filter popup
* @param {Array} [options.filterTexts=['Contains','Equals','Starts With','Ends With']] List of filter phrases for filter popups
*/

function iGrid( opts ){
// DEFAULT OPTIONS
this.opts = $.extend({
nAltRows : 2,
enablePaging : true,
perPage : 5,
maxPageNumLinks : 5,
pageSizes : [5, 10, 20, 50, 100 ],
previousText : 'Previous',
nextText : 'Next',
perScreenText : 'Display Per Screen',
allText : 'All',
fetchParams : {},
clearFilterText : 'Clear Filter',
filterText : 'Filter',
showRowsText : 'Show rows with value that',
filterAndJoinText : 'And',
filterTexts : ['Contains', 'Equals', 'Starts With', 'Ends With']
}, opts);

this.page = 1;
this.filters = {};
this.filterPopups = {};

this.opts.enablePaging || ( this.opts.perPage = 1000000 );

// VALIDATE REQUIRED OPTIONS
var required = [ 'renderTo', 'fetchURI', 'columns', 'sortByParamName', 'sortOrderParamName' ];
this.opts.enablePaging && required.push( 'firstRecordParamName', 'lastRecordParamName' );

for( var i=required.length-1; i>=0; --i ){
if( this.opts[ required[i] ] ){
required.splice( i, 1 );
}
}

if( ( opts.columns || [] ).length ){
for( var i = opts.columns.length-1; i>=0; --i ){
if ( !opts.columns[i].name ) {
required.push( 'columns[' + i + '].name' );
}

opts.columns[i] = $.extend({
sortable : true,
display : name,
filterable : false,
hidden: false
}, opts.columns[i]);
}
}else{
required.push( 'columns' );
}

if(required.length){
throw new Error( required.join(', ') + ( required.length > 1 ? ' are required fields' : ' is a required field' ) );
}

this.events = $( '

');



this.render();

};



//活动文件

/ **

* @name iGrid #pageChange

* @event

* @param {Event}活动

* @param {Number} pageNum

* // **

* @name iGrid #perPageChange

* @event

* @param {Event}活动

* @param {Number} perPage

** // **

*网格从服务器接收数据时触发。在呈现数据之前触发事件,因此如果在此阶段修改数据,修改后的数据将反映在网格中。

* @name iGrid #dataReceived

* @event

* @param {Event}事件

* @param {数组}数据

* @returns {数组} modifiedData

** // **

* @name iGrid#rowSelected

* @event

* @param {Event}活动

* @param {Number} rowIndex

* @param {Array} rowData

** /



/ ** @lends iGrid.prototype * /

iGrid.prototype = {

/ **

*将回调绑定到特定事件

* @param {String}事件

* @param {Function}回调

* /

bind:function(ev,cb){



this.events.bind(ev,cb);





退货;

},



/ * *

*获取当前页码

* @returns {Number} pageNumber

* /

getPage:function(){



返回this.page;

},



/ **

*获取总页数

* @returns {Number} numPages

* /

getNumPages: function(){

返回this.pages;

},



/ **

*获取每页的当前记录数

* @returns {Number} perPage

* /

getPerPage:function( ){

返回this.opts.perPage;

},



/ **

*将网格设置为特定页码。触发刷新

* @param {Number} pageNumber

* @param {Boolean}强制刷新即使页面#相同

* /

setPage:function(n,force){



if(!force&& this.page ===( 0 | n)){return this; }



this.page = Math.max(1,0 | n);

this.refresh();



退还这个;

},



/ **

*设置每页显示的记录数。触发刷新

* @param {Number} perPage

* /

setPerPage:function(n){

if(this.opts.perPage ===(0 | n)){return this; }



this.opts.perPage = 0 | n;

this.refresh();



返回此;

},



/ **设置每页的背诵数



*设置要排序的列。触发器刷新

* @param {String}列

* @param {String} [sortOrder = next](asc / desc / none / next)接下来旋转asc / desc / none

* /

setSortBy:function(col,order){



$((此。 columns [this.sortBy] || {}).th)。removeClass('sort-asc sort-desc');



if(this.sortBy == = col){

if('next'===(order ||'next')){

this.sortOrder = {

'':'asc',

asc:'desc',

desc:''

} [this.sortOrder || ''];



}否则{

this.sortOrder = order;

}

}否则{

this.sortOrder ='asc';

}



这个。 sortBy = col;



$((this.columns [this.sortBy] || {}).th)。addClass(this.sortOrder?'sort-' + this.sortOrder:'');



this.refresh();



返回此;

},



/ **

*设置将发送到fetchURI的任何其他参数

* @param {Object}参数

* @param {Boolean} [merge = false]如果设置为true,将参数存入现有参数而不是替换它们

* /

setFetchParameters:function(params,merge){



if(merge){

$ .extend(this.opts.fetchParams,params || {});

} else {

this.opts.fetch Params = params || {};

}



this.setPage(1,true);



返回此;

},



/ ** @private ** /

刷新: function(){



var obj = $ .extend({},this.opts.fetchParams);



//隐藏所有有效过滤器

this.container.find('.filter-popup:visible')。slideUp();



//附上任何过滤器

var filters = [];

for(var.in this.filters){

过滤器。 push(this.filters [n]);

}

if(filters.length){obj.filters = filters; }



//重新获取数据

$ .get(this.opts.fetchURI,$ .param((

this.opts.firstRecordParamName&&(obj [this.opts.firstRecordParamName] =(this.page - 1)* this.opts.perPage + 1),

this。 opts.lastRecordParamName&&(obj [this.opts.lastRecordParamName] = this.page *(this.opts.perPage)),

this.sortBy&& this.sortOrder& &(obj [this.opts.sortByParamName] = this.sortBy),

this.sortOrder&&(obj [this.opts.sortOrderParamName] = this.sortOrder),

obj.rnd = Math.random(),

obj),true),



this.receiveData.bind (这)

);



返还此内容;

},



/ ** @private ** /

receiveData:function(data){



this.events .trigger('dataReceived',数据);



this.nRecords = data.Total || 0;

this.data = data.Data;

this.maxPage = 0 | this.nRecords / this.opts.perPage + .999;

this.page = Math.max(1,Math.min(this.page,this.maxPage));



this.drawData()

.drawFooter();

},



/ ***********

* RENDERERS

*********** /



/ ** @private ** /

渲染:function(){



this.columns = {};



this.container = $('

' );

this.render();
};

// EVENT DOCUMENTATION
/**
* @name iGrid#pageChange
* @event
* @param {Event} event
* @param {Number} pageNum
*//**
* @name iGrid#perPageChange
* @event
* @param {Event} event
* @param {Number} perPage
**//**
* Fires when the grid receives data from the server. The event is triggered before the data is rendered, so if the data is modified at this stage, the modified data will be reflected in the grid.
* @name iGrid#dataReceived
* @event
* @param {Event} event
* @param {Array} data
* @returns {Array} modifiedData
**//**
* @name iGrid#rowSelected
* @event
* @param {Event} event
* @param {Number} rowIndex
* @param {Array} rowData
**/

/** @lends iGrid.prototype */
iGrid.prototype = {
/**
* Binds a callback to a specific event
* @param {String} event
* @param {Function} callback
*/
bind: function (ev, cb) {

this.events.bind(ev, cb);


return this;
},

/**
* Gets the current page number
* @returns {Number} pageNumber
*/
getPage: function () {

return this.page;
},

/**
* Gets the total number of pages
* @returns {Number} numPages
*/
getNumPages : function(){
return this.pages;
},

/**
* Gets the current number of records per page
* @returns {Number} perPage
*/
getPerPage : function(){
return this.opts.perPage;
},

/**
* Sets the grid to a specific page number. Triggers refresh
* @param {Number} pageNumber
* @param {Boolean} force force a refresh even if page # is the same
*/
setPage: function (n, force) {

if( !force && this.page === (0|n) ){ return this; }

this.page = Math.max( 1, 0|n );
this.refresh();

return this;
},

/**
* Sets the number of records to display per page. Triggers refresh
* @param {Number} perPage
*/
setPerPage : function( n ){
if( this.opts.perPage === (0|n) ){ return this; }

this.opts.perPage = 0|n;
this.refresh();

return this;
},

/**set the no of recors per page

* Sets the column to sort by. Triggers refresh
* @param {String} column
* @param {String} [sortOrder=next] ( asc / desc / none / next ) Next rotates asc / desc / none
*/
setSortBy: function (col, order) {

$( ( this.columns[ this.sortBy ] || {} ).th ).removeClass( 'sort-asc sort-desc' );

if( this.sortBy === col ){
if( 'next' === ( order || 'next' ) ){
this.sortOrder = {
'' : 'asc',
asc : 'desc',
desc : ''
}[ this.sortOrder || '' ];

} else {
this.sortOrder = order;
}
}else{
this.sortOrder = 'asc';
}

this.sortBy = col;

$( ( this.columns[ this.sortBy ] || {} ).th ).addClass( this.sortOrder ? 'sort-' + this.sortOrder : '' );

this.refresh();

return this;
},

/**
* Sets any additional parameters that will be sent to the fetchURI
* @param {Object} parameters
* @param {Boolean} [merge=false] If set to true, will perge parameters into existing parameters instead of replacing them
*/
setFetchParameters: function (params, merge) {

if( merge ){
$.extend( this.opts.fetchParams, params || {} );
} else {
this.opts.fetchParams = params || {};
}

this.setPage( 1, true );

return this;
},

/** @private **/
refresh: function () {

var obj = $.extend( {}, this.opts.fetchParams );

// hide any active filters
this.container.find( '.filter-popup:visible' ).slideUp();

// attach any filters
var filters = [];
for( var n in this.filters ){
filters.push( this.filters[ n ] );
}
if(filters.length){ obj.filters = filters; }

// re-fetch data
$.get( this.opts.fetchURI, $.param((
this.opts.firstRecordParamName && (obj[ this.opts.firstRecordParamName ] = (this.page - 1) * this.opts.perPage + 1),
this.opts.lastRecordParamName && (obj[ this.opts.lastRecordParamName ] = this.page * ( this.opts.perPage ) ),
this.sortBy && this.sortOrder && ( obj[ this.opts.sortByParamName ] = this.sortBy ),
this.sortOrder && ( obj[ this.opts.sortOrderParamName ] = this.sortOrder ),
obj.rnd = Math.random(),
obj ), true),

this.receiveData.bind( this )
);

return this;
},

/** @private **/
receiveData: function (data) {

this.events.trigger( 'dataReceived', data );

this.nRecords = data.Total || 0;
this.data = data.Data;
this.maxPage = 0 | this.nRecords / this.opts.perPage + .999;
this.page = Math.max( 1, Math.min( this.page, this.maxPage ) );

this.drawData()
.drawFooter();
},

/***********
* RENDERERS
***********/

/** @private **/
render: function () {

this.columns = {};

this.container = $( '

< thead>

');

this.table = this.container.find('table');

this.cColGroup = this.container.find('colgroup');

this.cTHeadTR = this.container。 find('thead tr');

this.cTBody = this.container.find('tbody');

this.cTFooter = this.container.find(' tfoot');



this.container

.delegate('.filter-popup button.filter','click',this.filterButtonClick.bind(this))

.delegate('.filter-popup button.clear','click ',this.filterClearClick .bind(this));



this.cTHeadTR

.delegate('th','click', this.headerClick.bind(this))

.delegate('.filter','click',this.filterClick.bind(this));



this.cTBody.delegate('tr','click',this.rowClick .bind(this));



this.cTFooter.delegate ('。pageNum:not(.selected,.disabled)','click',this.pageNumClick .bind(this))

.delegate('。pageSize:not(。select,.disabled) )','click',this.pageSizeClick.bind(this))

.delegate('。disabled','click',this.preventDefault);



this.refresh()

.drawHeader();



this.conta iner.appendTo(this.opts.renderTo);



返回此内容;

},



/ ** @private ** /

drawHeader:function(){



var th;

for(var i = 0,cols = this.opts.columns,l = cols.length; I<升;> // COLUMN GROUPS

this.cColGroup.append($(''.sprintf(cols [i] .width?'width:'+ cols [i] .width +'px;':' ')));



// HEADER COLUMNS

this.cTHeadTR.append(

th = $ ('< th'> cols [i] .display?cols [i] .display:cols [i] .name,

cols [i] .sortable?' ':'',

cols [i] .filterable?' ':''

))

.data('col',cols [i])

);



this.columns [cols [i] .name] = {

th:th,

col:cols [i]

}; < br $>
}



返还此内容;

},



/ ** @private ** /

drawData:function(){



if(!this.data){return这个; } b / b
this.cTBody.empty();



for(var i = 0,data = this.data,l = data.length; i< l;> this.cTBody.append(

$('%s'.sprintf(

'n- '+(i%this.opts.nAltRows),

$ .map(this.opts.columns,function(col){

return'< td'> ;})。join('')

))

.hover(this.rowHover)

.data('row-ix' ,i)//以后用来向事件听众发送数据

);

}



返回此;

},



/ ** @private ** /

drawFooter:function(){< br $>


//删除现有页脚

this.cTFooter.empty();



if(!this.opts.enablePaging){return this;}



var self = this,

stop = false;



this.cTFooter.append((

''+

' %s %s %s '+

' %s %s %s '+

'
'

).sprintf(

this.opts.columns.length,

this.page === 1? '禁用':'',

this.opts.previousText,



//生成页码链接

function(){



var minPage = Math.max(1,self.page - (0 | self.opts.maxPageNumLinks / 2 - .5)),

maxPage = Math.min(minPage + self.opts.maxPageNumLinks - 1,self.maxPage),

pages ='';



if(minPage == maxPage){return''; }



for(var i = minPage; i< = maxPage; i ++){

pages + ='%s '.sprintf(

self.page === i?'selected':'',

i

);

}



返回页面;

}(),



this.page === this.maxPage? '禁用':'',

this.opts.nextText,

this.opts.perScreenText,



//生成每页链接

$(this.opts.pageSizes).map(函数(ix,size){

return(

停止

?undefined

:尺寸> self.nRecords

?(停止=真,大小)

:size

);

})。map(function(ix,size){

return'%s '。printprint(

self.opts.perPage === size?'selected':'',

size



})。get()。join(''),



this .opts.perPage == 1000000? 'selected':'',

this.opts.allText

));

//检查这里

if(this.page< 2){this.cTFooter.find('。prevLink')。remove(); }

if(this.page> = this.maxPage){this.cTFooter.find('。anxtLink')。remove(); }

this.cTFooter.find('。paging')。filter(':empty')。remove();



return这个;

},



/ ** @private ** /

drawFilterPopup:function(th,列){



if(this.filterPopups [column.name]){

this.filterPopups [column.name] .slideToggle( );

返回;

}



var opts,popup = $((

'

' );
this.table = this.container.find( 'table' );
this.cColGroup = this.container.find( 'colgroup' );
this.cTHeadTR = this.container.find( 'thead tr' );
this.cTBody = this.container.find( 'tbody' );
this.cTFooter = this.container.find( 'tfoot' );

this.container
.delegate( '.filter-popup button.filter', 'click', this.filterButtonClick.bind( this ) )
.delegate( '.filter-popup button.clear' , 'click', this.filterClearClick .bind( this ) );

this.cTHeadTR
.delegate( 'th' , 'click', this.headerClick.bind( this ) )
.delegate( '.filter', 'click', this.filterClick.bind( this ) );

this.cTBody.delegate( 'tr', 'click', this.rowClick .bind( this ) );

this.cTFooter.delegate( '.pageNum:not(.selected,.disabled)' , 'click', this.pageNumClick .bind( this ) )
.delegate( '.pageSize:not(.selected,.disabled)', 'click', this.pageSizeClick.bind( this ) )
.delegate( '.disabled', 'click', this.preventDefault );

this.refresh()
.drawHeader();

this.container.appendTo( this.opts.renderTo );

return this;
},

/** @private **/
drawHeader: function () {

var th;
for( var i=0, cols=this.opts.columns, l=cols.length; i<l;> // COLUMN GROUPS
this.cColGroup.append( $( ''.sprintf( cols[i].width ? 'width:' + cols[i].width + 'px;' : '' ) ) );

// HEADER COLUMNS
this.cTHeadTR.append(
th = $('<th'> cols[i].display ? cols[i].display : cols[i].name,
cols[i].sortable ? '' : '',
cols[i].filterable ? '' : ''
) )
.data( 'col', cols[i] )
);

this.columns[ cols[i].name ] = {
th : th,
col : cols[i]
};
}

return this;
},

/** @private **/
drawData: function () {

if( !this.data ){ return this; }

this.cTBody.empty();

for(var i=0, data=this.data, l=data.length; i<l;> this.cTBody.append(
$( '%s'.sprintf(
'n-' + ( i % this.opts.nAltRows ),
$.map( this.opts.columns, function( col ) {
return '<td'> } ).join( '' )
) )
.hover( this.rowHover )
.data( 'row-ix', i ) // used to later send data to event listeners
);
}

return this;
},

/** @private **/
drawFooter: function () {

// remove existing footer
this.cTFooter.empty();

if( !this.opts.enablePaging ){ return this; }

var self = this,
stop = false;

this.cTFooter.append((
'' +
'%s %s %s' +
'%s %s %s' +
'
'
).sprintf(
this.opts.columns.length,
this.page === 1 ? 'disabled' : '',
this.opts.previousText,

// generate page number links
function () {

var minPage = Math.max( 1, self.page - ( 0| self.opts.maxPageNumLinks / 2 - .5 ) ),
maxPage = Math.min( minPage + self.opts.maxPageNumLinks - 1, self.maxPage ),
pages = '';

if( minPage == maxPage ){ return ''; }

for( var i=minPage; i<=maxPage; i++ ){
pages += '%s'.sprintf(
self.page === i ? 'selected' : '',
i
);
}

return pages;
}(),

this.page === this.maxPage ? 'disabled' : '',
this.opts.nextText,
this.opts.perScreenText,

// generate per-page links
$( this.opts.pageSizes ).map( function( ix, size ){
return (
stop
? undefined
: size > self.nRecords
? ( stop = true, size )
: size
);
}).map( function( ix, size ){
return '%s'.sprintf(
self.opts.perPage === size ? 'selected' : '',
size
)
}).get().join(''),

this.opts.perPage == 1000000 ? 'selected' : '',
this.opts.allText
));
//check here
if( this.page < 2 ){ this.cTFooter.find( '.prevLink' ).remove(); }
if( this.page >= this.maxPage ){ this.cTFooter.find( '.nextLink' ).remove(); }
this.cTFooter.find('.paging').filter(':empty').remove();

return this;
},

/** @private **/
drawFilterPopup: function (th, column) {

if( this.filterPopups[ column.name ] ){
this.filterPopups[ column.name ].slideToggle();
return;
}

var opts, popup = $((
'

'+

'%s
'+

'< select class =filter-1 >%s< / select>'+

'
'+

'< input class =input-1>'+

'
%s
'+

'< select class =filter-2>%s< / select>' +

'
'+

'< input class =input-2>'+

'
'+

'< button class =orange clear>
' +
'%s
' +
'<select class="filter-1">%s</select>' +
'
' +
'<input class="input-1">' +
'
%s
' +
'<select class="filter-2">%s</select>' +
'
' +
'<input class="input-2">' +
'
' +
'<button class="orange clear">
%s

< / button>'+

'< button class =orange filter>

</button>' +
'<button class="orange filter">

%s

< / button>'+

'

</button>' +
'

')。sprintf(

this.opts.showRowsText,

opts = $ .map(this.opts.filterTexts,function(txt,ix){

return'< option value =' + ix +'>'+ txt +'< / option>';

}),

this.opts.filterAndJoinText,

opts,

this.opts.clearFilterText,

this.opts.filterText

))。data('col',column) ;



var thPos = $(th).offset(),

thWidth = $(th).width(),

thHeig ht = $(th).height(),

gridPos = this.container.offset(),

gridWidth = this.container.width(),
top = gridPos.top - thPos.top + thHeight,

right = gridWidth - thPos.left + gridPos.left - thWidth;



this.filterPopups [column.name] = popup

.css({top:top,right:right})

.appendTo(this.container )

.hide()

.slideDown();

},



/ ****************

*事件处理者

************ **** /



/ ** @private ** /

rowHover:function(ev){



$(这个)[~ev.type.indexOf('enter')? 'addClass':'removeClass']('hover');

},



/ ** @private ** /

headerClick:function(ev){



var $ this = $(ev.currentTarget),

col = $ this.data('col')



ev.preventDefault();



if(! col ||!col.sortable){return; }



this.setSortBy(col.name);

},



/ ** @private ** /

rowClick:function(ev){



var tr = $(ev.target) .closest('tr'),

ix = tr.data('row-ix');



tr

.parent()

.children('。selected')

.removeClass('selected')

.end( )

.end()

.addClass('selected');



this.events.trigger ('rowSelected',[ix,this.data [ix]]);

},



/ ** @private ** /

pageNumClick:function(ev){



ev.preventDefault();



var $ this = $(ev.currentTarget),

page = $ this.text();



page =

page === this.opts.previousText

? this.page - 1

:page === this.opts.nextText

? this.page + 1

:+ page;



this.setPage(page)

.events。触发器('pageChange',页面);

},



/ ** @private ** /

pageSizeClick:function(ev){



ev.preventDefault();



var $ this = $(ev.currentTarget),

pPage = $ this.text();



pPage = pPage == this.opts.allText ? 1000000:+ pPage;



this.setPerPage(pPage)

.events.trigger('perPageChange',pPage);



},



/ ** @private ** /

filterClick:function (ev){

ev.preventDefault();

ev.stopPropagation();



var $ this = $(ev.currentTarget),

th = $ this.closest('th'),

col = th.data('col');



this.drawFilterPopup(th,col);

},



/ ** @private ** /

filterButtonClick:function(ev){

var $ this = $(ev.currentTarget),

popup = $ this.closest('.filter-popup'),

col = popup.data('col'),

sel1 = popup.find('。。filter -1')。val(),

sel2 = popup.find('。filil-2')。val(),

inp1 = popup.find(' .input-1')。val(),

inp2 = popup.find('。input-2')。val(),

ops = {

'0':'contains ',//包含

'1':'等于',//等于

'2':'startsw',//以
$ b开头$ b'3':'endsw'//以

}结尾;



删除this.filters [col.name +' - 1'];

删除this.filters [col.name +' - 2'];



inp1&& (this.filters [col.name +' - 1'] = col.name +';'+ ops [sel1] +';'+ inp1.replace(/; / g,'%3B'));

inp2&& (this.filters [col.name +' - 2'] = col.name +';'+ ops [sel2] +';'+ inp2.replace(/; / g,'%3B'));



this.setPage(1,true);

},



/ ** @private ** /

filterClearClick:function(ev){

var popup = $(ev.currentTarget).closest('.filter-popup'),

col = popup.data('col');



popup

.find('select' ).val('0')。end()

.find('input')。val('');



删除this.filters [col.name +' - 1'];

删除this.filters [col.name +' - 2'];



this.setPage(1,true);

},



/ ** @private ** /

preventDefault:function(ev){

ev.preventDefault();

}

};



window.iGrid = iGrid;



})(jQuery);





log.js

').sprintf(
this.opts.showRowsText,
opts = $.map( this.opts.filterTexts, function( txt, ix ){
return '<option value="' + ix + '">' + txt + '</option>';
}),
this.opts.filterAndJoinText,
opts,
this.opts.clearFilterText,
this.opts.filterText
)).data( 'col', column );

var thPos = $( th ).offset(),
thWidth = $( th ).width(),
thHeight = $( th ).height(),
gridPos = this.container.offset(),
gridWidth = this.container.width(),
top = gridPos.top - thPos.top + thHeight,
right = gridWidth - thPos.left + gridPos.left - thWidth;

this.filterPopups[ column.name ] = popup
.css({ top : top, right : right })
.appendTo( this.container )
.hide()
.slideDown();
},

/****************
* EVENT HANDLERS
****************/

/** @private **/
rowHover: function (ev) {

$( this )[ ~ev.type.indexOf( 'enter' ) ? 'addClass' : 'removeClass' ]( 'hover' );
},

/** @private **/
headerClick: function (ev) {

var $this = $( ev.currentTarget ),
col = $this.data('col')

ev.preventDefault();

if( !col || !col.sortable ){ return; }

this.setSortBy( col.name );
},

/** @private **/
rowClick: function (ev) {

var tr = $( ev.target ).closest( 'tr' ),
ix = tr.data( 'row-ix' );

tr
.parent()
.children('.selected')
.removeClass('selected')
.end()
.end()
.addClass('selected');

this.events.trigger( 'rowSelected', [ ix, this.data[ ix ] ] );
},

/** @private **/
pageNumClick: function (ev) {

ev.preventDefault();

var $this = $( ev.currentTarget ),
page = $this.text();

page =
page === this.opts.previousText
? this.page - 1
: page === this.opts.nextText
? this.page + 1
: +page;

this.setPage( page )
.events.trigger( 'pageChange', page );
},

/** @private **/
pageSizeClick: function (ev) {

ev.preventDefault();

var $this = $( ev.currentTarget ),
pPage = $this.text();

pPage = pPage == this.opts.allText ? 1000000 : +pPage;

this.setPerPage( pPage )
.events.trigger('perPageChange', pPage);

},

/** @private **/
filterClick : function( ev ){
ev.preventDefault();
ev.stopPropagation();

var $this = $( ev.currentTarget ),
th = $this.closest( 'th' ),
col = th.data( 'col' );

this.drawFilterPopup( th, col );
},

/** @private **/
filterButtonClick : function( ev ){
var $this = $( ev.currentTarget ),
popup = $this.closest( '.filter-popup' ),
col = popup.data( 'col' ),
sel1 = popup.find( '.filter-1' ).val(),
sel2 = popup.find( '.filter-2' ).val(),
inp1 = popup.find( '.input-1' ).val(),
inp2 = popup.find( '.input-2' ).val(),
ops = {
'0' : 'contains', // contains
'1' : 'equals' , // equals
'2' : 'startsw' , // starts with
'3' : 'endsw' // ends with
};

delete this.filters[ col.name + '-1' ];
delete this.filters[ col.name + '-2' ];

inp1 && ( this.filters[ col.name + '-1' ] = col.name + ';' + ops[ sel1 ] + ';' + inp1.replace( /;/g, '%3B') );
inp2 && ( this.filters[ col.name + '-2' ] = col.name + ';' + ops[ sel2 ] + ';' + inp2.replace( /;/g, '%3B') );

this.setPage( 1, true );
},

/** @private **/
filterClearClick : function( ev ){
var popup = $( ev.currentTarget ).closest( '.filter-popup' ),
col = popup.data( 'col' );

popup
.find('select').val('0').end()
.find('input' ).val('');

delete this.filters[ col.name + '-1' ];
delete this.filters[ col.name + '-2' ];

this.setPage( 1, true );
},

/** @private **/
preventDefault : function( ev ){
ev.preventDefault();
}
};

window.iGrid = iGrid;

})( jQuery );


log.js

var url = getFullUrl("Home/GridCall");

    var myGrid = new iGrid({
        columns: [
            { name: "LogId", display: "Log Id", width: 120 },
            { name: "Severity", display: "Severity", width: 120, filterable: true }, //hidden: true
            { name: "TimestampString", display: "Created Date", width: 120 },

        ],

        renderTo: $('#myGrid'),
        fetchURI: url,
        sortByParamName: "sortColumn",

        sortOrderParamName: "asc_desc",
        firstRecordParamName: 'start',
        lastRecordParamName: 'end'

    }).bind('rowSelected', function (ev, ix, col) {
        debugger
        window.location.href = "Log?LogId=" + col.LogId;

    });

    $("#BtnBack").click(function () {
        parent.history.back();
        return false;
    });
});







控制器

公共ActionResult GridCall (string searchID,string start,string end,string sortColumn,string asc_desc,string [] filters)

{

JsonResult数据;

如果(sortColumn!= null& asc_desc!= null& start!= null& end!= null)

data = Json(GetSamplePaymentRequestCollection(sortColumn,asc_desc,int.Parse(start),int .Parse(end),filters));

else if(start!= null& end!= null)

data = Json(GetSamplePaymentRequestCollection(int.Parse( start),int.Parse(end),filters));

else

data = Json(GetDefaultSamplePaymentRequestCollection());

数据。 JsonRequestBehavior = JsonRequestBehavior.AllowGet;

返回数据;





}



priva te static GridModel< log> GetSamplePaymentRequestCollection(string sortField,string sortOrder,int start,int end,string [] filters)

{

// var proxy = new AuditPaymentRequestService.AuditPaymentRequestServiceClient();

var data = GetAdvancedSearchResult()。AsQueryable();

var count = data.Count();

if(sortOrder ==asc )

{

开关(sortField)

{

caseLogId:

data = data.OrderBy(p => p.LogId);

break;

caseSeverity:

data = data.OrderBy(p => p.Severity);

break;

caseTimestampString:

data = data.OrderBy( p => p.TimestampString);

break;

}

}

else

{

switch (sortField)

{

case \"LogId\":

data = data.OrderBy(p => p.LogId);

break;

case \"Severity\":

data = data.OrderBy(p => p.Severity);

break;

case \"TimestampString\":

data = data.OrderBy(p => p.TimestampString);

break;

}

}

if (filters != null && filters.Count() > 0)

{

foreach (string filter in filters)

{

string[] f = filter.Split(’;’);

var field = f[0];

var comparison = f[1];

var val = f[2];



data = BuildWhereCondition(data, field, val, comparison);

}
$ b$b count = data.Count();

}

data = data.Skip(start - 1).Take(end - (start - 1));





var g = new GridModel<log>(data);

g.Total = count;

return g;

}



private static GridModel<log> GetSamplePaymentRequestCollection(int start, int end, string[] filters)

{

//var proxy = new AuditPaymentRequestService.AuditPaymentRequestServiceClient();

var data = GetAdvancedSearchResult().AsQueryable();

var count = data.Count();

if (filters != null && filters.Count() > 0)

{

foreach (string filter in filters)

{

string[] f = filter.Split(’;’);

var field = f[0];

var comparison = f[1];

var val = f[2];



data = BuildWhereCondition(data, field, val, comparison);

}

count = data.Count();

}

data = data.Skip(start - 1).Take(end - (s tart - 1));



var g = new GridModel<log>(data);

g.Total = count;

return g;

}



private static IQueryable<log> BuildWhereCondition(IQueryable<log> data, string field, string val, string comparison)

{

switch (comparison)

{

case \"equals\":

switch (field)

{

case \"LogID\":

data = data.Where(p => p.LogId.ToString() == val);

break;

case \"Severity\":

data = data.Where(p => p.Severity.ToString() == val);

break;

case \"TimestampString\":

data = data.OrderBy(p => p.TimestampString == val);

break;



}

break;

case \" contains\":

switch (field)

{

case \"LogId\":

data = data.Where(p => p.LogId.ToString().Contains(val));

break;

case \"Severity\":

data = data.Where(p => p.Severity.Contains(val));

break;

case \"TimestampString\":

data = data.OrderBy(p => p.TimestampString.Contains(val));

break;



}

break;

case \"startsw\":

switch (field)

{

case \"LogId\":

data = data.Where(p => p.LogId.ToString().StartsWith(val));

break;

case \"Severity\":

data = data.Where(p => p.Se verity.StartsWith(val));

break;

case \"TimestampString\":

data = data.OrderBy(p => p.TimestampString.StartsWith(val));

break;

}

break;

case \"endsw\":

switch (field)

{

case \"LogId\":

data = data.Where(p => p.LogId.ToString().EndsWith(val));

break;

case \"Severity\":

data = data.Where(p => p.Severity.EndsWith(val));

break;

case \"TimestampString\":

data = data.OrderBy(p => p.TimestampString.EndsWith(val));

break;

}

break;

}

return data;

}



private static GridModel<log> GetDefaultSamplePaymentRequestCollection()

{

//var proxy = new AuditPaymentRequestService.AuditPaymentRequestServiceClient();

var data = GetAdvancedSearchResult().AsQueryable();



var g = new GridModel<log>(data);

g.Total = data.Count();

return g;

}



private static List<log> GetAdvancedSearchResult()

{

RequestSVCRef.RequestServiceClient requestServiceClient = new RequestSVCRef.RequestServiceClient();

List<log> Logs = requestServiceClient.GetLogs(0).ToList();

return Logs;

}



please help me with the solution.......soon




Controller
public ActionResult GridCall(string searchID, string start, string end, string sortColumn, string asc_desc, string[] filters)
{
JsonResult data;
if (sortColumn != null & asc_desc != null & start != null & end != null)
data = Json(GetSamplePaymentRequestCollection(sortColumn, asc_desc, int.Parse(start), int.Parse(end), filters));
else if (start != null & end != null)
data = Json(GetSamplePaymentRequestCollection(int.Parse(start), int.Parse(end), filters));
else
data = Json(GetDefaultSamplePaymentRequestCollection());
data.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
return data;


}

private static GridModel<log> GetSamplePaymentRequestCollection(string sortField, string sortOrder, int start, int end, string[] filters)
{
//var proxy = new AuditPaymentRequestService.AuditPaymentRequestServiceClient();
var data = GetAdvancedSearchResult().AsQueryable();
var count = data.Count();
if (sortOrder == "asc")
{
switch (sortField)
{
case "LogId":
data = data.OrderBy(p => p.LogId);
break;
case "Severity":
data = data.OrderBy(p => p.Severity);
break;
case "TimestampString":
data = data.OrderBy(p => p.TimestampString);
break;
}
}
else
{
switch (sortField)
{
case "LogId":
data = data.OrderBy(p => p.LogId);
break;
case "Severity":
data = data.OrderBy(p => p.Severity);
break;
case "TimestampString":
data = data.OrderBy(p => p.TimestampString);
break;
}
}
if (filters != null && filters.Count() > 0)
{
foreach (string filter in filters)
{
string[] f = filter.Split(';');
var field = f[0];
var comparison = f[1];
var val = f[2];

data = BuildWhereCondition(data, field, val, comparison);
}
count = data.Count();
}
data = data.Skip(start - 1).Take(end - (start - 1));


var g = new GridModel<log>(data);
g.Total = count;
return g;
}

private static GridModel<log> GetSamplePaymentRequestCollection(int start, int end, string[] filters)
{
//var proxy = new AuditPaymentRequestService.AuditPaymentRequestServiceClient();
var data = GetAdvancedSearchResult().AsQueryable();
var count = data.Count();
if (filters != null && filters.Count() > 0)
{
foreach (string filter in filters)
{
string[] f = filter.Split(';');
var field = f[0];
var comparison = f[1];
var val = f[2];

data = BuildWhereCondition(data, field, val, comparison);
}
count = data.Count();
}
data = data.Skip(start - 1).Take(end - (start - 1));

var g = new GridModel<log>(data);
g.Total = count;
return g;
}

private static IQueryable<log> BuildWhereCondition(IQueryable<log> data, string field, string val, string comparison)
{
switch (comparison)
{
case "equals":
switch (field)
{
case "LogID":
data = data.Where(p => p.LogId.ToString() == val);
break;
case "Severity":
data = data.Where(p => p.Severity.ToString() == val);
break;
case "TimestampString":
data = data.OrderBy(p => p.TimestampString == val);
break;

}
break;
case "contains":
switch (field)
{
case "LogId":
data = data.Where(p => p.LogId.ToString().Contains(val));
break;
case "Severity":
data = data.Where(p => p.Severity.Contains(val));
break;
case "TimestampString":
data = data.OrderBy(p => p.TimestampString.Contains(val));
break;

}
break;
case "startsw":
switch (field)
{
case "LogId":
data = data.Where(p => p.LogId.ToString().StartsWith(val));
break;
case "Severity":
data = data.Where(p => p.Severity.StartsWith(val));
break;
case "TimestampString":
data = data.OrderBy(p => p.TimestampString.StartsWith(val));
break;
}
break;
case "endsw":
switch (field)
{
case "LogId":
data = data.Where(p => p.LogId.ToString().EndsWith(val));
break;
case "Severity":
data = data.Where(p => p.Severity.EndsWith(val));
break;
case "TimestampString":
data = data.OrderBy(p => p.TimestampString.EndsWith(val));
break;
}
break;
}
return data;
}

private static GridModel<log> GetDefaultSamplePaymentRequestCollection()
{
//var proxy = new AuditPaymentRequestService.AuditPaymentRequestServiceClient();
var data = GetAdvancedSearchResult().AsQueryable();

var g = new GridModel<log>(data);
g.Total = data.Count();
return g;
}

private static List<log> GetAdvancedSearchResult()
{
RequestSVCRef.RequestServiceClient requestServiceClient = new RequestSVCRef.RequestServiceClient();
List<log> Logs = requestServiceClient.GetLogs(0).ToList();
return Logs;
}

please help me with the solution.......soon

推荐答案

){

\t/**

\t * Creates an instance of a Grid

\t * @class

\t * @requires jQuery

\t * @name iGrid

\t * @param {Object} options

\t * @param {DOMNode} options.renderTo CSS Selector for the DOM Node to render to

\t * @param {String} options.fetchURI URI to fetch data from

\t * @param {Object} options.fetchParams Parameters to send to the fetchURI

\t * @param {Array} options.columns Array of column definitions

\t * @param {String} options.columns[i].name Column Name

\t * @param {Boolean} [o ptions.columns[i].sortable=true] Column is sortable

\t * @param {Boolean} [options.columns[i].width] Column width

\t * @param {Boolean} [options.columns[i].filterable=false] Column is filterable

\t * @param {Boolean} [options.columns[i].hidden=false] Column is hidden

\t * @param {String} options.firstRecordParamName (optional only if enablePaging=false) Parameter to pass to fetchURI specifying starting record # to fetch

\t * @param {String} options.lastRecordParamName (optional only if enablePaging=false) Parameter to pass to fetchURI specifying ending record # to fetch

\t * @param {String} options.sortByParamName Parameter to pass to fetchURI specifying which field to sort by

\t * @param {String} options.sortOrderParamName Parameter to pass to fetch URI specifying sort order (asc / desc)

\t * @param {String} [options.cssCls] Custom CSS class name(s) to give to the grid for custom styling

\t * @param {String} [options.nAltRows=2] Number of alternate row colors (2 gives class names of ’n-0, n-1, n-0, n-1, etc...’)

\t * @param {Boolean} [options.enablePaging=true] Set to false to disable paging and remove footer

\t * @param {Number} [options.perPage=10] Default # of items to display per page

\t * @param {Array} [options.pageSizes=[10, 20, 50, 100]] Array of possible page sizes

\t * @param {Number} [options.maxPageNumLinks=5] The maximum number of \"page number\" links to display -- Odd # suggested

\t * @param {String} [options.previousText=’Previous’] Text for \"Previous\"

\t * @param {String} [options.nextText=’Next’] Text for \"Next\"

\t * @param {String} [options.perScreenText=’Display Per Sreen’] Text for \"Display Per Screen\"

\t * @param {String} [options.allText=’All’] Text for \"All\" in footer display-per-screen section

\t * @param {String} [options.clearFilterText=’Clear Filter’] Text for \"Clear Filter\" button

\t * @param {String} [options.filterText=’Filter’] Text for \"Filter\" button

\t * @param {String} [options.showRowsText=’Show rows with value that’] Text for filter-popup \"Show rows with value that\" text

\t * @param {String} [options.filterAndJoinText=’And’] Text for \"And\" in filter popup

\t * @param {Array} [options.filterTexts=[’Contains’,’Equals’,’Starts With’,’Ends With’]] List of filter phrases for filter popups

\t */



\tfunction iGrid( opts ){

\t\t// DEFAULT OPTIONS

\t\tthis.opts =
){
/**
* Creates an instance of a Grid
* @class
* @requires jQuery
* @name iGrid
* @param {Object} options
* @param {DOMNode} options.renderTo CSS Selector for the DOM Node to render to
* @param {String} options.fetchURI URI to fetch data from
* @param {Object} options.fetchParams Parameters to send to the fetchURI
* @param {Array} options.columns Array of column definitions
* @param {String} options.columns[i].name Column Name
* @param {Boolean} [options.columns[i].sortable=true] Column is sortable
* @param {Boolean} [options.columns[i].width] Column width
* @param {Boolean} [options.columns[i].filterable=false] Column is filterable
* @param {Boolean} [options.columns[i].hidden=false] Column is hidden
* @param {String} options.firstRecordParamName (optional only if enablePaging=false) Parameter to pass to fetchURI specifying starting record # to fetch
* @param {String} options.lastRecordParamName (optional only if enablePaging=false) Parameter to pass to fetchURI specifying ending record # to fetch
* @param {String} options.sortByParamName Parameter to pass to fetchURI specifying which field to sort by
* @param {String} options.sortOrderParamName Parameter to pass to fetchURI specifying sort order (asc / desc)
* @param {String} [options.cssCls] Custom CSS class name(s) to give to the grid for custom styling
* @param {String} [options.nAltRows=2] Number of alternate row colors (2 gives class names of 'n-0, n-1, n-0, n-1, etc...')
* @param {Boolean} [options.enablePaging=true] Set to false to disable paging and remove footer
* @param {Number} [options.perPage=10] Default # of items to display per page
* @param {Array} [options.pageSizes=[10, 20, 50, 100]] Array of possible page sizes
* @param {Number} [options.maxPageNumLinks=5] The maximum number of "page number" links to display -- Odd # suggested
* @param {String} [options.previousText='Previous'] Text for "Previous"
* @param {String} [options.nextText='Next'] Text for "Next"
* @param {String} [options.perScreenText='Display Per Sreen'] Text for "Display Per Screen"
* @param {String} [options.allText='All'] Text for "All" in footer display-per-screen section
* @param {String} [options.clearFilterText='Clear Filter'] Text for "Clear Filter" button
* @param {String} [options.filterText='Filter'] Text for "Filter" button
* @param {String} [options.showRowsText='Show rows with value that'] Text for filter-popup "Show rows with value that" text
* @param {String} [options.filterAndJoinText='And'] Text for "And" in filter popup
* @param {Array} [options.filterTexts=['Contains','Equals','Starts With','Ends With']] List of filter phrases for filter popups
*/

function iGrid( opts ){
// DEFAULT OPTIONS
this.opts =


.extend({

\t\t\tnAltRows : 2,

\t\t\tenablePaging : true,

\t\t\tperPage : 5,

\t\t\tmaxPageNumLinks : 5,

\t\t\tpageSizes : [5, 10, 20, 50, 100 ],

\t\t\tpreviousText : ’Previous’,

\t\t\tnextText : ’Next’,

\t\t\tperScreenText : ’Display Per Screen’,

\t\t\tallText : ’All’,

\t\t\tfetchParams : {},

\t\t\tclearFilterText : ’Clear Filter’,

\t\t\tfilterText : ’Filter’,

\t\t\tshowRowsText : ’Show rows with value that’,

\t\t\tfilterAndJoinText : ’And’,

\t\t\tfilterTexts : [’Contains’, ’Equals’, ’Starts With’, ’Ends With’]

\t\t}, opts);



\t\tthis.page = 1;

\t\tthis.filters = {};

\t\tthis.filterPopups = {};



\t\tthis.opts.enablePaging || ( this.opts.perPage = 1000000 );



\t\t// VALIDATE REQUIRED OPTIONS

\t\tvar required = [ ’renderTo’, ’fetchURI’, ’columns’, ’sortByParamName’, ’sortOrderParamName’ ];

\t\tthis.opts.enablePaging && required.push( ’firstRecordParamName’, ’lastRecordParamName’ );



\t\tfor( var i=required.length-1; i>=0; --i ){

\t\t\tif( this.opts[ required[i] ] ){

\t\t\t\trequired.splice( i, 1 );

\t\t\t}

\t\t}



\t\tif( ( opts.columns || [] ).length ){

\t\t\tfor( var i = opts.columns.length-1; i>=0; --i ){

\t\t\t if ( !opts.columns[i].name ) {

\t\t\t\t\trequired.push( ’columns[’ + i + ’].name’ );

\t}



\t\t\t\topts.columns[i] =
.extend({
nAltRows : 2,
enablePaging : true,
perPage : 5,
maxPageNumLinks : 5,
pageSizes : [5, 10, 20, 50, 100 ],
previousText : 'Previous',
nextText : 'Next',
perScreenText : 'Display Per Screen',
allText : 'All',
fetchParams : {},
clearFilterText : 'Clear Filter',
filterText : 'Filter',
showRowsText : 'Show rows with value that',
filterAndJoinText : 'And',
filterTexts : ['Contains', 'Equals', 'Starts With', 'Ends With']
}, opts);

this.page = 1;
this.filters = {};
this.filterPopups = {};

this.opts.enablePaging || ( this.opts.perPage = 1000000 );

// VALIDATE REQUIRED OPTIONS
var required = [ 'renderTo', 'fetchURI', 'columns', 'sortByParamName', 'sortOrderParamName' ];
this.opts.enablePaging && required.push( 'firstRecordParamName', 'lastRecordParamName' );

for( var i=required.length-1; i>=0; --i ){
if( this.opts[ required[i] ] ){
required.splice( i, 1 );
}
}

if( ( opts.columns || [] ).length ){
for( var i = opts.columns.length-1; i>=0; --i ){
if ( !opts.columns[i].name ) {
required.push( 'columns[' + i + '].name' );
}

opts.columns[i] =


.extend({

\t\t\t\t\tsortable : true,

display : name,

filterable : false,

hidden: false

\t\t\t\t}, opts.columns[i]);

\t\t\t}

\t\t}else{

\t\t\trequired.push( ’columns’ );

\t\t}



\t\tif(required.length){

\t\t\tthrow new Error( required.join(’, ’) + ( required.length > 1? ’ are required fields’ : ’ is a required field’ ) );

\t\t}



\t\tthis.events =
.extend({
sortable : true,
display : name,
filterable : false,
hidden: false
}, opts.columns[i]);
}
}else{
required.push( 'columns' );
}

if(required.length){
throw new Error( required.join(', ') + ( required.length > 1 ? ' are required fields' : ' is a required field' ) );
}

this.events =


这篇关于网格不正确显示记录,asp.net mvc的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆