/* Author sjfe_cn
* sjfe_cn@sdevnet.com
* http://www.sdevnet.com
*
*/
(function ($) {
$.fn.ligerRepeater = function (options) {
return $.ligerui.run.call(this, "ligerRepeater", arguments);
};
$.fn.ligerGetRepeaterManager = function () {
return $.ligerui.run.call(this, "ligerGetRepeaterManager", arguments);
};
$.ligerDefaults = $.ligerDefaults || {};
$.ligerDefaults.Repeater = {
data: null
, dataAction: 'server'
, dataType: 'server'
, root: 'Rows', //数据源字段名
record: 'Total', //数据源记录数字段名
pageParmName: 'page', //页索引参数名,(提交给服务器)
pagesizeParmName: 'pagesize', //页记录数参数名,(提交给服务器)
sortnameParmName: 'sortname', //页排序列名(提交给服务器)
sortorderParmName: 'sortorder' //页排序方向(提交给服务器)
, autoFill: true
, method: 'post'
, async: true
, pageSize: 15
, newPage: 1
, showloading: true
, loadingmsg: ''
, pagerControlID: null
, groupColumn: null
, hoverCss: 'repeater_over'
, altCss: 'repeater_alt'
, selectCss: 'repeater_select'
, allowSelect: true
, allowMuliteSelect: false
, onSelectRow: null
, onDblClick: null
, dblShowForm: true
, adddata: false
, allowReverseSelect: false
, allowPost: false
,isAddTemplate:true
};
//扩展方法
$.ligerMethos.Repeater = $.ligerMethos.Repeater || {};
$.ligerui.controls.Repeater = function (element, options) {
$.ligerui.controls.Repeater.base.constructor.call(this, element, options);
};
$.ligerui.controls.Repeater.ligerExtend($.ligerui.core.UIComponent, {
__getType: function() {
return 'Repeater';
},
__idPrev: function() {
return 'rpt';
},
_extendMethods: function() {
return $.ligerMethos.Repeater;
},
_init: function() {
$.ligerui.controls.Repeater.base._init.call(this);
var g = this, p = this.options;
g.disabled = $("#" + g.id).attr("disabled");
if (g.disabled == 'disabled' || g.disabled == true || g.disabled == 'true' || g.disabled == 'True') {
g.disabled = true;
$("#" + g.id).attr("disabled", false);
}
else {
g.disabled = false;
}
if (p.data) {
p.url = null;
} else {
if (!p.url || p.url == '') {
p.url = window.location.href;
if (p.url.indexOf('#') >= 0)
p.url = p.url.substr(0, p.url.indexOf('#'));
var prefix = '?';
if (p.url.indexOf('?') >= 0) {
prefix = '&';
}
if (p.urlparam) {
p.url = p.url + prefix + p.urlparam;
} else {
p.url = p.url + prefix + 'Action=' + escape(g.id) + 'GetRepeaterData';
}
}
}
if(p.pagerControlID) {
p.usePager = true;
var opt = window['pageropt_' + p.pagerControlID];
if(!opt) {
opt = { };
}
opt.callback = function (new_current_page, containers) {
p.newPage = parseInt(new_current_page) + 1;
g.search({ newpage: p.newPage, addlog: false ,ispagerctl:true,showmsg:p.showloadingdlg});
}
p.pagerOpts = opt;
//g.pagerControl = $("#" + p.pagerControlID).pagination(1, opt);
p.pageSize = opt.items_per_page; //g.pagerControl.getPageSize();
}
g.pageSize = p.pageSize;
g.selected = {};
g.records = { };
},
addNewRow: function (opts) {
var g = this, p = this.options;
if (g.disabled)
return;
if(p.childForm) {
var url = p.childForm;
var dgopt = opts ? opts : p.dlgopt;
if (typeof (dgopt) == 'function') {
dgopt = dgopt(p,null);
}
if (p.childFormCloseRefresh) {
dgopt = $.extend({ onclose: function () { g.search(); } }, dgopt || {});
}
if (p.childFormTitle) {
dgopt = $.extend({ title: p.childFormTitle }, dgopt || {});
}
if (p.childFormMaxShow) {
dgopt = $.extend({ maxshow: true }, dgopt || {});
}
dgopt = $.extend({ ctl: g }, dgopt || {});
var index = url.indexOf('#');
while (index >= 0) {
var turl = url.substring(index);
var yindex = turl.indexOf('&');
var cid = '';
if (yindex > 0) {
cid = turl.substring(0, yindex);
}
else {
cid = turl.substring(0, turl.length);
}
var cv = $(cid).val();
if (!cv && cv != '0' && cv != 0)
cv = '';
url = url.replace(cid, escape(cv));
index = url.indexOf('#');
}
DN.showAddDlg(url, dgopt, p);
}
else {
$.ShowMsg(DN.Language.FirstSetChildForm);
}
}
, editRow: function (opts,title) {
var g = this, p = this.options;
if (g.disabled)
return;
var t = DN.Language.PageEditTitle;
if (title)
t = title;
var data = g.getSelected();
if (!data) {
$.ShowMsg(DN.Language.GridSelectOperateRow.replace('{0}', t));
return;
}
if (!p.pkfield) {
$.ShowMsg(DN.Language.FirstSetPrimaryKey);
return;
}
var pkvalue = data[p.pkfield];
if (!pkvalue || pkvalue == '0' || pkvalue == DN.EmptyGuid) {
$.ShowMsg(DN.Language.GridSelectOperateRow.replace('{0}', t));
return;
}
if (p.childForm) {
var url = p.childForm;
var dgopt = opts ? opts : p.dlgopt;
if (typeof (dgopt) == 'function') {
dgopt = dgopt(p,data);
}
if (p.childFormCloseRefresh) {
dgopt = $.extend({ onclose: function () { g.search(); } }, dgopt || {});
}
if (p.childFormTitle) {
dgopt = $.extend({ title: p.childFormTitle }, dgopt || {});
}
if (p.childFormMaxShow) {
dgopt = $.extend({ maxshow: true }, dgopt || {});
}
dgopt = $.extend({ ctl: g }, dgopt || {});
var index = url.indexOf('#');
while (index >= 0) {
var turl = url.substring(index);
var yindex = turl.indexOf('&');
var cid = '';
if (yindex > 0) {
cid = turl.substring(0, yindex);
}
else {
cid = turl.substring(0, turl.length);
}
var cv = $(cid).val();
if (!cv) {
cv = data[cid.substring(1)];
}
if (!cv && cv != '0' && cv != 0)
cv = '';
url = url.replace(cid, escape(cv));
index = url.indexOf('#');
}
DN.showEditDlg(url, pkvalue, dgopt, p);
}
else {
$.ShowMsg(DN.Language.FirstSetChildForm);
}
}
,deleteRow:function() {
var g = this, p = this.options;
if (g.disabled)
return;
g.operateRows(DN.Language.Delete, 'delete');
}
,operateRows:function(title, op) {
var g = this, p = this.options;
if (g.disabled)
return;
var data = g.getSelected();
if (!data) {
$.ShowMsg(DN.Language.GridSelectOperateRow.replace('{0}', title));
return;
}
if (!p.pkfield) {
$.ShowMsg(DN.Language.FirstSetPrimaryKey);
return;
}
var pkvalue = data[p.pkfield];
if (!pkvalue || pkvalue == '0' || pkvalue == DN.EmptyGuid) {
$.ShowMsg(DN.Language.GridSelectOperateRow.replace('{0}', title));
return;
}
if (typeof (rpt_operateRow) == 'function') {
var ret = rpt_operateRow(g, title, pkvalue, op);
if (ret == false)
return;
}
if (p.spName) {
$.ShowConfirm(DN.Language.OperatingRowConfirm.replace('{0}', title), function () {
$.ShowProcess(DN.Language.Operating.replace('{0}', title));
DN.ajaxOperateRecords(p.spName, pkvalue, op, function (retdata) {
DN.onOperCompleted(retdata, g, { ope: op });
}
);
});
return;
}
if(op=='delete') {
if (p.tableName) {
$.ShowConfirm(DN.Language.OperatingRowConfirm.replace('{0}',DN.Language.Delete), function () {
$.ShowProcess(DN.Language.Operating.replace('{0}', DN.Language.Delete));
DN.ajaxDeleteRecords(p.tableName, pkvalue, function(retdata) {
DN.onOperCompleted(retdata, g, { ope: 'delete' });
}
);
});
return;
}
$.ShowMsg(DN.Language.GridNotSetSpNameOrTableName);
}
else {
$.ShowMsg(DN.Language.GridNotSetSpNameOrTableName);
}
}
,_render: function() {
var g = this, p = this.options;
g.repeater = $(this.element);
g.itemTemplate = $("> *[template='item']", g.repeater);
g.headTemplate = $("> *[template='head']", g.repeater);
g.footTemplate = $("> *[template='foot']", g.repeater);
g.alterTemplate = $("> *[template='alter']", g.repeater);//偶数行
g.emptyTemplate = $("> *[template='empty']", g.repeater);//空模版
g.groupTemplate = $("> *[template='group']", g.repeater);//分组模版
g.treeTemplate = $("> *[template='tree']", g.repeater);//多级树模版
g.emptyTemplate.hide();
g.repeater.addClass('l-repeater');
var loading = "
";
g.repeater.append(loading);
g.gridloading = $(".l-repeater-loading:first", g.repeater);
if (p.showloading)
g.gridloading.show();
else
g.gridloading.hide();
if (g.itemTemplate.length > 0) {
g.itemTemplate.template = g.itemTemplate[0].innerHTML;
g.itemTemplate.empty();
g.itemTemplate.css("width", "100%");
}
if (g.headTemplate.length > 0) {
g.headTemplate.template = g.headTemplate.html();
g.headTemplate.empty();
g.headTemplate.css("width", "100%");
}
if (g.footTemplate.length > 0) {
g.footTemplate.template = g.footTemplate.html();
g.footTemplate.empty();
g.footTemplate.css("width", "100%");
}
if (g.alterTemplate.length > 0) {
g.alterTemplate.template = g.alterTemplate.html();
g.alterTemplate.remove();
}
if (g.groupTemplate.length > 0) {
g.groupTemplate.template = g.groupTemplate.html();
g.groupTemplate.empty();
}
if (g.treeTemplate.length > 0) {
g.treeTemplate.tmpTemplate = $('' + g.treeTemplate.html() + '
');
//$('body').append(g.treeTemplate.tmpTemplate);
//g.treeTemplate.tmpTemplate.hide();
g.treeTemplate.template = g.treeTemplate.html();
g.treeTemplate.empty();
}
g.set(p);
},
_setUrl: function(value) {
this.options.url = value;
var g = this, p = this.options;
if (value) {
this.loadData(true);
}
else {
g.currentData = p.data;
g.data = p.data;
g.newData = p.data;
g._showData();
}
},
loadData: function(opt) {
var g = this, p = this.options;
g.loading = true;
var clause = null;
//参数初始化
if (!p.newPage) p.newPage = 1;
if (p.dataAction == "server") {
if (!p.sortOrder) p.sortOrder = "asc";
}
var param = [];
if (p.parms) {
if (p.parms.length) {
$(p.parms).each(function() {
param.push({ name: this.name, value: this.value });
});
} else if (typeof p.parms == "object") {
for (var name in p.parms) {
param.push({ name: name, value: p.parms[name] });
}
}
}
if (p.attachwhere) {
param.push({ name: 'attachwhere', value: p.attachwhere });
}
if (p.where) {
param.push({ name: 'where', value: p.where });
}
if (p.dataAction == "server") {
if (p.usePager) {
param.push({ name: p.pageParmName, value: p.newPage });
param.push({ name: p.pagesizeParmName, value: p.pageSize });
}
if (!p.sortName) {
if (p.pkfield) {
if (p.pkfield.indexOf('_') == 0) {
p.sortName = '[' + p.pkfield + ']';
} else {
p.sortName = p.pkfield;
}
if (!p.sortOrder) {
p.sortOrder = 'ASC';
}
}
}
if (p.sortName) {
param.push({ name: p.sortnameParmName, value: p.sortName });
param.push({ name: p.sortorderParmName, value: p.sortOrder });
}
}
;
if (p.autoFill == true || p.autoFill == 1) {
g.loadServerData.ligerDefer(g, 20, [param, clause]);
}
else {
g.toggleLoading(false);
}
g.loading = false;
},
loadServerData: function(param, clause) {
var g = this, p = this.options;
//g.emptyTemplate.hide();
var ajaxOptions = {
type: p.method,
url: p.url,
data: param,
async: p.async,
dataType: p.retType ? p.retType : 'json',
beforeSend: function() {
if (g.hasBind('loading')) {
g.trigger('loading');
} else {
g.toggleLoading(true);
}
},
success: function (data) {
g.toggleLoading.ligerDefer(g, 10, [false]);
if (p.retType && p.retType != 'json') {
try {
data = eval("(" + data + ")");
} catch(e) {
if (DN && typeof(DN.ajaxError) == 'function') {
var XMLHttpRequest = { };
XMLHttpRequest.responseText = data;
var ret = DN.ajaxError(XMLHttpRequest);
return;
}
}
}
g.trigger('success', [data, g]);
g.newData = data;
g.curRecordCount = 0;
if (!data || !data[p.root] || !data[p.root].length) {
if (!p.adddata || g.issearch || !g.currentData) {
g.currentData = g.data = { };
g.currentData[p.root] = g.data[p.root] = [];
g.currentData[p.record] = g.data[p.record] = 0;
g._showData();
$.CloseProcess();
}
if (!g.rows || g.rows.length == 0) {
g.emptyTemplate.show();
}
return;
}
if (g.issearch || !p.adddata || !g.data ||!g.currentData) {
g.data = data;
g.currentData = data;
}
else {
g.curRecordCount = g.currentData[p.root].length;
for(var i=0;i].*?>/g, "");
}
repeaterajaxerror(txt);
}
}
};
if (p.contentType) ajaxOptions.contentType = p.contentType;
var formid = window.document.forms[0].id;
if (formid) {
$("#" + formid).ajaxSubmit(ajaxOptions);
} else {
$.ajax(ajaxOptions);
}
}
, search: function (searchOpt) {
var g = this, p = this.options;
if (g.issearch == true)
return;
g.issearch = true;
if (searchOpt && searchOpt.ispagerctl==true)
g.issearch = false;
if (searchOpt && searchOpt.currentpage == true) {
searchOpt.newpage = g.options.newPage;
}
var formid = window.document.forms[0].id;
var ds = $("#" + formid).attr('datasource');
if (!ds) {
DN.setFormState('unchanged', g.id);
}
DN.ajaxSearch(g, searchOpt);
g.changedCells = { };
}
, reloadData: function (loadopt) {
var g = this, p = this.options;
this.options.autoFill = true;
p.reloaddata = true;
if (loadopt) {
if (loadopt.filter != undefined) {
//g.set('parms', { attachwhere: loadopt.filter });
g.options.attachwhere = loadopt.filter;
}
else {
g.options.attachwhere = null;
}
if (loadopt.newpage) {
if (loadopt.newpage > 0) {
g.options.newPage = loadopt.newpage;
}
}
if (loadopt.urlparam) {
var urlps = loadopt.urlparam.split('&');//id=1&tid=2
var url = p.url;
var params = url.split('?');
var search = '';
if (params.length == 2) {
search = params[1];
url = params[0];
}
if (search == '') {
if(url.indexOf('?')>=0) {
p.url = p.url + '&' + loadopt.urlparam;
}
else {
p.url = p.url + '?' + loadopt.urlparam;
}
} else {
var searchparams = search.split('&');
var spfind = false;
for (var j = 0; j < urlps.length; j++) {
spfind = false;
var urlkeys = urlps[j].split('=');
if (urlkeys.length == 2) {
for (var i = 0; i < searchparams.length; i++) {
var sp = searchparams[i].split('=');
if (sp.length == 2) {
if (sp[0] == urlkeys[0]) {
spfind = true;
searchparams[i] = urlkeys[0] + '=' + urlkeys[1];
break;
}
}
}
if (spfind == false) {
searchparams.push(urlkeys[0] + '=' + urlkeys[1]);
}
}
}
var query = '';
for (var i = 0; i < searchparams.length; i++) {
if (query != '') {
query = query + '&';
}
query = query + searchparams[i];
}
if (query != '') {
url = url + '?' + query;
}
p.url = url;
}
}
}
g.loadData();
}
, toggleLoading: function (show) {
var g = this, p = this.options;
if (p.showloading)
g.gridloading[show ? 'show' : 'hide']();
}
, _showData: function () {
var g = this, p = this.options;
var data = g.newData;
if (!g.curRecordCount) {
g.curRecordCount = 0;
}
if (g.trigger('beforeShowData', [data,g]) == false) return;
if (!p.adddata || g.issearch)
g._clearRepeater();
g.isDataChanged = false;
if (!data) return;
if (!p.adddata || g.issearch) {
g.recordNumber = 0;
g.rowdisplayindex = 0;
}
g._updateRepeaterData();
g.curRecordCount = g.currentData[p.root].length;
g.pageIndex = p.newPage;
g.recordCount = g.currentData[p.record];
g.trigger('afterShowData', [data,g]);
g.issearch = false;
if (p.allowPost) {
g.readyPost();
}
}
,appendData:function(rows) {
var g = this, p = this.options;
if (!rows || rows.length == 0)
return;
if (!g.curRecordCount) {
g.curRecordCount = 0;
}
var adddata = {};
adddata[p.root] = rows;
if (g.trigger('beforeShowData', [adddata, g]) == false) return;
g.curRecordCount = g.currentData[p.root].length;
var rec = g.currentData[p.record];
if (!rec) {
rec = 0;
}
for (var i = 0; i < rows.length; i++) {
rows[i]['__status'] = 'add';
g.currentData[p.root].push(rows[i]);
}
rec = parseInt(rec) + rows.length;
g.currentData[p.record] = rec;
g.newData = {};
g.newData[p.root] = rows;
g._updateRepeaterData();
g.curRecordCount = g.currentData[p.root].length;
g.pageIndex = p.newPage;
g.recordCount = g.currentData[p.record];
g.trigger('afterShowData', [adddata,g]);
if (p.allowPost) {
g.readyPost();
}
}
, _loadChildData: function (parentRow, treelevel, level) {
var g = this, p = this.options;
if (parentRow && parentRow.children && parentRow.children.length > 0) {
for (var i = 0; i < parentRow.children.length; i++) {
var tl = $('> *[level=' + (level + 1) + ']', g.treeTemplate.tmpTemplate);
/*
for (var k = 0; k < g.treeTemplate.tmpTemplate.length; k++) {
if ($(g.treeTemplate.tmpTemplate[k]).attr("level") == (level + 1)) {
tl = $(g.treeTemplate.tmpTemplate[k]);
break;
}
}*/
if ( tl && tl.length > 0) {
var treehtml = tl.html();
var ti = level + '' + i;
treehtml = g._getRowHtml(treehtml, parentRow.children[i], i, parseInt(ti));
var htmlobj = $(treehtml);
htmlobj.attr('__itemIndex', parseInt(ti));
parentRow.children[i]['__itemIndex'] = parseInt(ti);
g._setEvent(htmlobj, parentRow.children[i]);
g.records[parseInt(ti)] = parentRow.children[i];
if (!p.isAddTemplate) {
g.repeater.append(htmlobj);
}
else {
g.treeTemplate.append(htmlobj);
}
g._loadChildData(parentRow.children[i], tl, level + 1);
}
}
}
}
, _updateRepeaterData: function () {
var g = this, p = this.options;
var tmphtml = g.itemTemplate.template;
g.rows = g.currentData[p.root];
var html = '';
var data = g.newData[p.root];
if (!p.isAddTemplate) {
if(g.foothtmobj) {
g.foothtmobj.remove();
}
}
if (g.curRecordCount == 0 &&
g.headTemplate.length > 0) {
html = g.headTemplate.template;
html = g._getRowHtml(html, {}, -1, -1);
if (!p.isAddTemplate) {
g.repeater.append(html);
g.headTemplate.hide();
}
else {
g.headTemplate.append(html);
g.headTemplate.show();
}
}
if (data.length == 0 && g.rows.length == 0) {
if (!p.isAddTemplate) {
g.repeater.append(g.emptyTemplate);
}
g.emptyTemplate.show();
}
else {
g.emptyTemplate.hide();
}
var althtml = '';
if (g.alterTemplate.length > 0) {
althtml = g.alterTemplate.template;
}
if (p.isTree) {
if (p.isAddTemplate)
g.treeTemplate.show();
else
g.treeTemplate.hide();
for (var j = 0; j < data.length; j++) {
var treelevel = $('> *[level=1]', g.treeTemplate.tmpTemplate);
/*for(var k=0;k0) {
var treehtml = treelevel.html();
treehtml = g._getRowHtml(treehtml, data[j], j, parseInt(j));
var htmlobj = $(treehtml);
htmlobj.attr('__itemIndex', parseInt(j));
data[j]['__itemIndex'] = parseInt(j);
g._setEvent(htmlobj, data[j]);
g.records[parseInt(j)] = data[j];
if (!p.isAddTemplate) {
g.repeater.append(htmlobj);
}
else {
g.treeTemplate.append(htmlobj);
}
g._loadChildData(data[j], treelevel, 1);
}
}
}
else if (p.groupColumn) {
var groups = []; //分组列名数组
var groupsdata = []; //切成几块后的数据
g.groups = groupsdata;
var grpcolsnames = p.groupColumn.split(',');
for (var j = 0; j < data.length; j++) {
var item = data[j];
var colvals = { };
for (var l = 0; l < grpcolsnames.length; l++) {
colvals[grpcolsnames[l]] = item[grpcolsnames[l]];
}
var valueIndex = -1;
for (var k = 0; k < groups.length; k++) {
var find = true;
for (var grp in colvals) {
if (groups[k][grp] != colvals[grp]) {
find = false;
}
}
if (find) {
valueIndex = k;
break;
}
}
if (valueIndex == -1) {
groups.push(colvals);
valueIndex = groups.length - 1;
groupsdata.push([]);
}
//item['__displayindex'] = groupsdata[valueIndex].length;
groupsdata[valueIndex].push(item);
}
var grphtml = '';
if (g.groupTemplate.length > 0) {
grphtml = g.groupTemplate.template;
g.itemTemplate.remove();
}
if (grphtml) {
if (!p.isAddTemplate) {
g.groupTemplate.hide();
}
else {
g.groupTemplate.show();
}
}
else {
if (!p.isAddTemplate) {
g.itemTemplate.hide();
}
else {
g.itemTemplate.show();
}
}
var index = 0;
for (var m = 0; m < groupsdata.length; m++) {
if (grphtml) {
html = grphtml;
html = g._getRowHtml(html, groupsdata[m][0], m, m);
if (!p.isAddTemplate) {
g.repeater.append(html);
}
else {
g.groupTemplate.append(html);
}
for (var n = 0; n < groupsdata[m].length; n++) {
if (althtml && n % 2 != 0) {
html = althtml;
} else {
html = tmphtml;
}
var ti = m + '' + n;
html = g._getRowHtml(html, groupsdata[m][n], n, parseInt(ti));
var htmlobj = $(html);
if (n % 2 != 0 && p.altCss)
htmlobj.addClass(p.altCss);
htmlobj.attr('__itemIndex', parseInt(ti));
groupsdata[m][n]['__itemIndex'] = parseInt(ti);
g._setEvent(htmlobj, groupsdata[m][n]);
g.records[parseInt(ti)] = groupsdata[m][n];
if (!p.isAddTemplate) {
g.repeater.append(htmlobj);
}
else {
g.groupTemplate.append(htmlobj);
}
}
} else {
for (var n = 0; n < groupsdata[m].length; n++) {
if (althtml && n % 2 != 0) {
html = althtml;
} else {
html = tmphtml;
}
var ti = m + '' + n;
html = g._getRowHtml(html, groupsdata[m][n], index, parseInt(ti));
var htmlobj = $(html);
if (n % 2 != 0 && p.altCss)
htmlobj.addClass(p.altCss);
htmlobj.attr('__itemIndex', parseInt(ti));
groupsdata[m][n]['__itemIndex'] = parseInt(ti);
g._setEvent(htmlobj, groupsdata[m][n]);
g.records[parseInt(ti)] = groupsdata[m][n];
if (!p.isAddTemplate) {
g.repeater.append(htmlobj);
}
else {
g.itemTemplate.append(htmlobj);
}
index++;
}
}
}
} else {
if (!p.isAddTemplate) {
g.itemTemplate.hide();
}
else {
g.itemTemplate.show();
}
for (var i = 0; i < data.length; i++) {
var rindex = g.curRecordCount + i;
if (althtml && i % 2 != 0) {
html = althtml;
} else {
html = tmphtml;
}
html = g._getRowHtml(html, data[i], rindex, parseInt(rindex));
var htmlobj = $(html);
if (i % 2 != 0 && p.altCss)
htmlobj.addClass(p.altCss);
htmlobj.attr('__itemIndex', parseInt(rindex));
data[i]['__itemIndex'] = parseInt(rindex);
g._setEvent(htmlobj, data[i]);
g.records[parseInt(rindex)] = data[i];
if (!p.isAddTemplate) {
g.repeater.append(htmlobj);
}
else {
g.itemTemplate.append(htmlobj);
}
}
}
if (g.curRecordCount == 0 &&
g.footTemplate.length > 0) {
html = g.footTemplate.template;
html = g._getRowHtml(html, {}, 999999, 999999);
g.foothtmobj = $(html);
g.foothtm = html;
if (!p.isAddTemplate) {
g.repeater.append(g.foothtmobj);
g.footTemplate.hide();
}
else {
g.footTemplate.append(g.foothtmobj);
g.footTemplate.show();
}
}
else {
if (!p.isAddTemplate) {
if (g.foothtm) {
if (!g.foothtmobj)
g.foothtmobj = $(g.foothtm);
g.repeater.append(g.foothtmobj);
}
}
}
if (p.pagerControlID) {
var total = g.currentData[p.record];
if (!total)
total = g.rows.length;
if (!g.pagerControl) {
g.pagerControl = $("#" + p.pagerControlID).pagination(parseInt(total), p.pagerOpts);
}
else {
g.pagerControl.setRecordCount(parseInt(total),p.newPage);
}
}
}
,hasNextPage:function() {
var g = this, p = this.options;
if (!p.adddata) {
return g.pageIndex * p.pageSize < g.recordCount;
}
return g.curRecordCount < g.currentData[p.record];
}
,getPageCount:function() {
var g = this, p = this.options;
return Math.ceil(g.currentData[p.record] / p.pageSize);
}
,getSelected:function() {
var g = this;
if(g.selected) {
for(var item in g.selected) {
return g.selected[item];
}
}
return null;
}
,getSelecteds:function() {
var g = this;
if (g.selected) {
var ret = [];
for (var item in g.selected) {
ret.push(g.selected[item]);
}
if (ret.length > 0)
return ret;
}
return null;
}
,getRow:function(pkvalue) {
var g = this, p = this.options;
if(!p.pkfield) {
$.ShowMsg(DN.Language.FirstSetPrimaryKey);
return null;
}
if (!g.rows)
return null;
for (var i = 0; i < g.rows.length; i++) {
if(g.rows[i][p.pkfield]==pkvalue) {
return g.rows[i];
}
}
return null;
}
, _setEvent: function (htmlobj) {
var g = this, p = this.options;
if (p.allowSelect) {
htmlobj.bind('click.repeater', function () {
var curindex = $(this).attr('__itemIndex');
var isSelect = false;
var curRow = null;
if (!p.allowMuliteSelect) {
var y = -1;
for (var x in g.selected) {
var tagobj = $('[__itemIndex=' + x + ']', g.repeater);
tagobj.removeClass(p.selectCss);
var chk = $('input[rptchk="1"]', tagobj);
if (chk.length > 0) {
chk.attr('checked', false);
}
if (x == curindex) {
y = x;
curRow = g.selected[x];
}
}
g.selected = {};
if (y == -1 || !p.allowReverseSelect) {
$(this).addClass(p.selectCss);
var chk1 = $('input[rptchk="1"]', $(this));
if (chk1.length > 0) {
chk1.attr('checked', true);
}
g.selected[curindex] = g.records[curindex];
isSelect = true;
curRow = g.records[curindex];
}
}
else {
var y = -1;
for (var x in g.selected) {
if (x == curindex) {
var tagobj = $('[__itemIndex=' + x+']', g.repeater);
tagobj.removeClass(p.selectCss);
var chk = $('input[rptchk="1"]', tagobj);
if (chk.length > 0) {
chk.attr('checked', false);
}
y = x;
curRow = g.selected[x];
break;
}
}
if (y == -1) {
$(this).addClass(p.selectCss);
var chk1 = $('input[rptchk="1"]', $(this));
if (chk1.length > 0) {
chk1.attr('checked', true);
}
g.selected[curindex] = g.records[curindex];
curRow = g.records[curindex];
isSelect = true;
}
else {
delete g.selected[y];
}
}
if (p.onSelectRow) {
p.onSelectRow(curRow,isSelect ,g.rows);
}
});
}
if (p.onDblClick || p.dblShowForm) {
htmlobj.bind('dblclick.repeater'
, function () {
var curindex = $(this).attr('__itemIndex');
var data = g.records[curindex];
if (p.onDblClick) {
var ret = p.onDblClick(data, g.rows);
if (ret == false)
return;
}
if(p.dblShowForm) {
if (!p.pkfield) {
//$.ShowMsg("请设置数据主键字段名称");
return;
}
var pkvalue = data[p.pkfield];
if (!pkvalue || pkvalue == '0' || pkvalue == DN.EmptyGuid) {
//$.ShowMsg('请先选择行');
return;
}
if (p.childForm) {
var url = p.childForm;
var dgopt = p.dlgopt;
if (typeof (dgopt) == 'function') {
dgopt = dgopt(p, data);
}
if (p.childFormCloseRefresh) {
dgopt = $.extend({ onclose: function () { g.search(); } }, dgopt || {});
}
if (p.childFormTitle) {
dgopt = $.extend({ title: p.childFormTitle }, dgopt || {});
}
if (p.childFormMaxShow) {
dgopt = $.extend({ maxshow: true }, dgopt || {});
}
dgopt = $.extend({ ctl: g }, dgopt || {});
var index = url.indexOf('#');
while (index >= 0) {
var turl = url.substring(index);
var yindex = turl.indexOf('&');
var cid = '';
if (yindex > 0) {
cid = turl.substring(0, yindex);
}
else {
cid = turl.substring(0, turl.length);
}
var cv = $(cid).val();
if (!cv) {
cv = data[cid.substring(1)];
}
if (!cv && cv != '0' && cv != 0)
cv = '';
url = url.replace(cid, escape(cv));
index = url.indexOf('#');
}
DN.showEditDlg(url, pkvalue, dgopt, p);
}
else {
//$.ShowMsg('请先设置子页面路径');
}
}
});
}
if (p.hoverCss) {
htmlobj.bind('mouseover.rptitem', function () {
$(this).addClass(p.hoverCss);
}).bind('mouseout.rptitem', function () {
$(this).removeClass(p.hoverCss);
});
}
},
getRowObj:function(rowdata) {
var g = this;
var itemindex = rowdata['__itemIndex'];
return $('[__itemIndex=' + itemindex + ']', g.repeater);
}
, getRowByIndex: function (rowindex) {
var g = this, p = this.options;
if (!g.rows)
return null;
var ti = parseInt(rowindex);
if (isNaN(ti))
ti = 0;
if (ti < 0)
ti = 0;
for (var i = 0; i < g.rows.length; i++) {
if (g.rows[i]['__itemIndex'] == ti) {
return g.rows[i];
}
}
return null;
},
addRow:function(row) {
var g = this;
var rows = [];
rows.push(row);
g.appendData(rows);
},
//数据库删除在外面自行处理
removeRow:function(rowindex) {
var g = this, p = this.options;
var isObj = typeof (rowindex) == "object";
if(isObj) {
rowindex = rowindex['__itemIndex'];
}
var ti = parseInt(rowindex);
if (isNaN(ti))
ti = 0;
if (ti < 0)
ti = 0;
var rowobj = $('[__itemIndex=' + ti + ']', g.repeater);
if (rowobj) {
$(rowobj).remove();
g.records[ti]['__status'] = 'delete';
for (var i = 0; i < g.rows.length; i++) {
if (g.rows[i]['__itemIndex'] == ti) {
g.rows[i]['__status'] = 'delete';
break;
}
}
if (p.allowPost) {
g.readyPost();
}
}
}
,updateRow:function(rowindex,row) {
var g = this, p = this.options;
var ti = parseInt(rowindex);
if (isNaN(ti))
ti = 0;
if (ti < 0)
ti = 0;
var rowobj = $('[__itemIndex=' + ti + ']', g.repeater);
if (rowobj) {
g.records[ti] = row;
g.records[ti]['__status'] = 'update';
for (var j = 0; j < g.rows.length; j++) {
if (g.rows[j]['__itemIndex'] == ti) {
g.rows[j] = row;
g.rows[j]['__status'] = 'update';
break;
}
}
var adddata = {};
adddata[p.root] = [];
adddata[p.root].push(row);
if (g.trigger('beforeShowData', [adddata, g]) == false) return;
var althtml = '';
if (g.alterTemplate.length > 0) {
althtml = g.alterTemplate.template;
}
var tmphtml = g.itemTemplate.template;
var html = '';
if (althtml && ti % 2 != 0) {
html = althtml;
} else {
html = tmphtml;
}
html = g._getRowHtml(html, g.records[ti], ti, parseInt(ti));
var htmlobj = $(html);
if (ti % 2 != 0 && p.altCss)
htmlobj.addClass(p.altCss);
htmlobj.attr('__itemIndex', parseInt(ti));
g.records[ti]['__itemIndex'] = parseInt(ti);
g._setEvent(htmlobj, g.records[ti]);
rowobj.after(htmlobj);
rowobj.remove();
g.trigger('afterShowData', [adddata, g]);
if (p.allowPost) {
g.readyPost();
}
}
}
,updateField:function(field,value,rowindex) {
var g = this, p = this.options;
var row = g.getRowByIndex(rowindex);
if (row) {
row[field] = value;
row['__status'] = 'update';
g.records[rowindex]['__status'] = 'update';
if (p.allowPost) {
g.readyPost();
}
}
}
,readyPost:function() {
var g = this, p = this.options;
var changedData = g.getChangedData();
if (changedData == '' || changedData.length == 0) {
$("#" + g.id + "_Input").val("");
} else {
$("#" + g.id + "_Input").val(JSON2.stringify(changedData));
}
}
, getChangedData: function () {
var g = this, p = this.options;
var ret = [];
for (var rowid in g.records) {
if (!p.postAll) {
if (g.records[rowid]['__status'] == 'add' ||
g.records[rowid]['__status'] == 'update') {
ret.push(g.records[rowid]);
}
}
else {
if (g.records[rowid]['__status'] != 'delete') {
ret.push(g.records[rowid]);
}
}
}
return ret;
}
, _getRowHtml: function (tmphtml, rowdata, i, rowindex) {
if (rowdata['_level']) {
var thtml = $('[level=' + rowdata['_level'] + ']', '' + tmphtml + '
');
if (thtml) {
thtml = thtml.html();
if (thtml && thtml != '') {
tmphtml = thtml;
}
}
}
if (!tmphtml)
return "";
var g = this, p = this.options;
var str = '//#itemindex#//g';
str = str.replace(/\/\//g, "\/");
tmphtml = tmphtml.replace(eval(str), i + 1);
for (var f in rowdata) {
str = '//#' + f + '#//g';
str = str.replace(/\/\//g, "\/");
var val = rowdata[f];
if (val) {
if (val.toString().indexOf("/Date(") >= 0) {
val = DN.getDateFormat(val, "yyyy-MM-dd HH:mm:ss");
}
}
if (typeof (p.render) == 'function') {
val = p.render(f, val, rowdata,rowindex);
}
if (val == null||typeof(val)=='undefined')
val = '';
tmphtml = tmphtml.replace(eval(str), val.toString());
}
return tmphtml;
}
, _clearRepeater: function () {
var g = this, p = this.options;
//清空数据
g.itemTemplate.empty();
g.headTemplate.empty();
g.footTemplate.empty();
g.alterTemplate.empty();
g.groupTemplate.empty();
g.treeTemplate.empty();
if (!p.isAddTemplate) {
g.repeater.children(':not(.l-repeater-loading)').remove();
}
g.recordNumber = 0;
g.rowdisplayindex = 0;
g.records = {};
g.rows = [];
//清空选择的行
g.selected = {};
g.totalNumber = 0;
//编辑器计算器
g.editorcounter = 0;
}
});
})(jQuery);链接uygurqa18yaxcikx一清二楚不挡不掩打扑克视频com.1688.www看片东京干嫩叶草官网nc10000链接链接