$.define(["jQuery", "util", "form", "code", "pager"], "pagedatagrid", function($, util, form, code, pager) { var qf = ".dt-form", qt = ".dt-tpl", qp = ".dt-pager", derr = {}, dajaxCfg = {}, configPageIndex = function(fn, data) { if(fn && data && data.data && data.data.length) { var b = (data.pageNo - 1) * data.pageSize; data.data.forEach(function(obj) { ++b; obj[fn] = b; }); } }, build = function($e, options) { if($e.length && $e.length === 1) { var config = { e: derr, ajax: dajaxCfg }; var ele = config.ele = $($e[0]); config.f = form.build(ele.find(qf)); config.c = code.parseCode(ele.find(qt)[0]); config.p = pager(ele.find(qp)); config.uri = ele.attr("loadUri"); config.pnn = ele.attr("pagerPrefix") ? "_pageNo" : "pageNo"; config.psn = ele.attr("pagerPrefix") ? "_pageSize" : "pageSize"; config.pageSize = parseInt(ele.attr("pageSize") || "1"); config.pageNo = parseInt(ele.attr("pageNo") || "10"); config.pageIndex = ele.attr("pageIndex"); if(options) { $.extend(config, options); }; var ret = { code: config.c, form: config.f, load: function() { if(config.f.validate()) { config.cache = config.f.val(); config.cache[config.pnn] = config.pageNo; config.cache[config.psn] = config.pageSize; this.reload(); } }, reload: function() { util.get(config.uri, config.cache, function(data) { configPageIndex(config.pageIndex, data); config.c.val(data.data); config.p.paint(data); }, config.e, config.ajax); }, error: function(eh) { config.e = eh; }, beforeFill: function(h) { config.c.before(h); }, ajaxConfig: function(cfg) { config.ajax = cfg; } }; config.p.onGo(function(no) { config.cache[config.pnn] = no; ret.reload(); }); return ret; }; }; $.fn.pdg = function(option) { if(this.length && this.length === 1) { return build(this, option); } }; return { build: build }; });