diff --git a/o2web/source/x_component_process_Xform/DatagridMobile.js b/o2web/source/x_component_process_Xform/DatagridMobile.js
index dbe0594199335cb87d6f7a2f2b2a1001b920f39c..402133849c90babd8b866d80ce4af5bd7b3c4d0a 100644
--- a/o2web/source/x_component_process_Xform/DatagridMobile.js
+++ b/o2web/source/x_component_process_Xform/DatagridMobile.js
@@ -40,15 +40,24 @@ MWF.xApplication.process.Xform.DatagridMobile = new Class({
if (this.editable!=false){
this._loadDatagridDataModules();
//this._addTitleActionColumn();
- this._loadEditDatagrid();
- //this._loadReadDatagrid();
- this.fireEvent("postLoad");
- this.fireEvent("load");
+ // this._loadEditDatagrid();
+ // //this._loadReadDatagrid();
+ // this.fireEvent("postLoad");
+ // this.fireEvent("load");
+ this._loadEditDatagrid(function(){
+ this.fireEvent("postLoad");
+ this.fireEvent("load");
+ }.bind(this));
}else{
this._loadDatagridDataModules();
- this._loadReadDatagrid();
- this.fireEvent("postLoad");
- this.fireEvent("load");
+ this._loadReadDatagrid(function(){
+ this.fireEvent("postLoad");
+ this.fireEvent("load");
+ }.bind(this));
+
+ // this._loadReadDatagrid();
+ // this.fireEvent("postLoad");
+ // this.fireEvent("load");
}
},
createMobileTable: function(){
@@ -90,14 +99,18 @@ MWF.xApplication.process.Xform.DatagridMobile = new Class({
},
_getValue: function(){
+ if (this.moduleValueAG) return this.moduleValueAG;
var value = [];
value = this._getBusinessData();
if (!value){
if (this.json.defaultData && this.json.defaultData.code) value = this.form.Macro.exec(this.json.defaultData.code, this);
- value = {"data": value || []};
+ if (!value.isAG) if (o2.typeOf(value)=="array") value = {"data": value || []};
}
return value || [];
},
+ getValue: function(){
+ return this._getValue();
+ },
_getValueText: function(idx, value){
var module = this.editModules[idx];
@@ -157,6 +170,12 @@ MWF.xApplication.process.Xform.DatagridMobile = new Class({
return value;
}
break;
+ case "Textarea":
+ var reg = new RegExp("\n","g");
+ var reg2 = new RegExp("\u003c","g"); //尖括号转义,否则内容会截断
+ var reg3 = new RegExp("\u003e","g");
+ value = value.replace(reg2,"<").replace(reg3,">").replace(reg,"
");
+ break;
}
}
return value;
@@ -173,8 +192,22 @@ MWF.xApplication.process.Xform.DatagridMobile = new Class({
return flag;
},
- _loadReadDatagrid: function(){
- this.gridData = this._getValue();
+ _loadReadDatagrid: function(callback){
+ if (this.gridData && this.gridData.isAG){
+ this.moduleValueAG = this.gridData;
+ this.gridData.addResolve(function(v){
+ this.gridData = v;
+ this._loadReadDatagrid(callback);
+ }.bind(this));
+ }else{
+ if (o2.typeOf(this.gridData)=="array") this.gridData = {"data": this.gridData};
+ this.__loadReadDatagrid(callback);
+ this.moduleValueAG = null;
+ }
+ },
+
+ __loadReadDatagrid: function(callback){
+ //this.gridData = this._getValue();
var titleHeaders = this.table.getElements("th");
var tds = this.table.getElements("td");
@@ -215,7 +248,12 @@ MWF.xApplication.process.Xform.DatagridMobile = new Class({
this._createImage( cell, module, v )
}else{
text = this._getValueText(index, v);
- cell.set("text", text);
+ if( module && module.json.type == "Textarea" ){
+ cell.set("html", text);
+ }else{
+ cell.set("text", text);
+ }
+ //cell.set("text", text);
}
@@ -247,13 +285,28 @@ MWF.xApplication.process.Xform.DatagridMobile = new Class({
}.bind(this));
}.bind(this));
}
-
+ if (callback) callback();
//this._loadTotal();
},
- _loadEditDatagrid: function(){
+
+ _loadEditDatagrid: function(callback){
+ debugger;
+ if (this.gridData && this.gridData.isAG){
+ this.moduleValueAG = this.gridData;
+ this.gridData.addResolve(function(v){
+ this.gridData = v;
+ this._loadEditDatagrid(callback);
+ }.bind(this));
+ }else{
+ if (o2.typeOf(this.gridData)=="array") this.gridData = {"data": this.gridData};
+ this.__loadEditDatagrid(callback);
+ this.moduleValueAG = null;
+ }
+ },
+ __loadEditDatagrid: function(callback){
//this._createHelpNode();
- this.gridData = this._getValue();
+ //this.gridData = this._getValue();
var titleHeaders = this.table.getElements("th");
var tds = this.table.getElements("td");
@@ -297,7 +350,13 @@ MWF.xApplication.process.Xform.DatagridMobile = new Class({
this._createImage( cell, module, v )
}else{
text = this._getValueText(index, v);
- cell.set("text", text);
+ if( module && module.json.type == "Textarea" ){
+ cell.set("html", text);
+ }else{
+ cell.set("text", text);
+ }
+
+ //cell.set("text", text);
}
// if (typeOf(v)==="object"){
@@ -338,6 +397,7 @@ MWF.xApplication.process.Xform.DatagridMobile = new Class({
}
// this._loadAddAction();
}
+ if (callback) callback();
//this._loadTotal();
},
_loadActions: function(titleDiv){
@@ -676,13 +736,19 @@ MWF.xApplication.process.Xform.DatagridMobile = new Class({
}
var cell;
+ var text = this._getValueText(idx, data.text.join(", "));
+
if (dataRow){
cell = dataRow.getElement("td");
-
if( module.json.type == "ImageClipper" ){
this._createImage( cell, module, data.text );
}else{
- cell.set("text", data.text.join(", "));
+ if( module && module.json.type == "Textarea" ){
+ cell.set("html", text);
+ }else{
+ cell.set("text", text);
+ }
+ //cell.set("text", data.text.join(", "));
}
}else{
dataRow = table.insertRow(idx);
@@ -697,7 +763,12 @@ MWF.xApplication.process.Xform.DatagridMobile = new Class({
if( module.json.type == "ImageClipper" ){
this._createImage( cell, module, data.text );
}else{
- cell.set("text", data.text.join(", "));
+ if( module && module.json.type == "Textarea" ){
+ cell.set("html", text);
+ }else{
+ cell.set("text", text);
+ }
+ //cell.set("text", data.text.join(", "));
}
}
}else{
@@ -1128,13 +1199,33 @@ MWF.xApplication.process.Xform.DatagridMobile = new Class({
this.setData(this._getValue());
},
setData: function(data){
- // if( typeOf( data ) === "object" && typeOf(data.data) === "array" ){
- if (data){
- this._setBusinessData(data);
- this.gridData = data;
+ if (!data){
+ data = this._getValue();
+ }
+ this._setData(data);
+ },
+ _setData: function(data){
+ if (data && data.isAG){
+ this.moduleValueAG = data;
+ data.addResolve(function(v){
+ this._setData(v);
+ }.bind(this));
}else{
- this.gridData = this._getValue();
+ if (o2.typeOf(data)=="array") data = {"data": data};
+ this.__setData(data);
+ this.moduleValueAG = null;
}
+ },
+ __setData: function(data){
+ // if( typeOf( data ) === "object" && typeOf(data.data) === "array" ){
+ // if (data){
+ // this._setBusinessData(data);
+ // this.gridData = data;
+ // }else{
+ // this.gridData = this._getValue();
+ // }
+ this._setBusinessData(data);
+ this.gridData = data;
// if (this.isEdit) this._completeLineEdit();
if( this.isEdit ){
@@ -1466,4 +1557,4 @@ MWF.xApplication.process.Xform.DatagridMobile$Data = new Class({
}.bind(this));
}
}
-});
\ No newline at end of file
+});
diff --git a/o2web/source/x_component_process_Xform/DatagridPC.js b/o2web/source/x_component_process_Xform/DatagridPC.js
index 5c8329d8dcbf28da75c1ffd69d5cf10b3f16cd82..1c8d0124d7f4bddf73b0c24934333ba8a8c19cf9 100644
--- a/o2web/source/x_component_process_Xform/DatagridPC.js
+++ b/o2web/source/x_component_process_Xform/DatagridPC.js
@@ -29,7 +29,6 @@ MWF.xApplication.process.Xform.DatagridPC = new Class({
this.deleteable = this.json.deleteable !== "no";
this.addable = this.json.addable !== "no";
- debugger;
this.gridData = this._getValue();
this.totalModules = [];
@@ -43,9 +42,6 @@ MWF.xApplication.process.Xform.DatagridPC = new Class({
this.fireEvent("postLoad");
this.fireEvent("load");
}.bind(this));
-
-
-
//this._loadReadDatagrid();
}else{
this._loadDatagridDataModules();
@@ -217,6 +213,12 @@ MWF.xApplication.process.Xform.DatagridPC = new Class({
return value;
}
+ break;
+ case "Textarea":
+ var reg = new RegExp("\n","g");
+ var reg2 = new RegExp("\u003c","g"); //尖括号转义,否则内容会截断
+ var reg3 = new RegExp("\u003e","g");
+ value = value.replace(reg2,"<").replace(reg3,">").replace(reg,"
");
break;
// case "address":
// if (typeOf(value)==="array"){
@@ -244,7 +246,12 @@ MWF.xApplication.process.Xform.DatagridPC = new Class({
if( module && module.json.type == "ImageClipper" ){
this._createImage( cell, module, text )
}else{
- cell.set("text", text);
+ if( module && module.json.type == "Textarea" ){
+ cell.set("html", text);
+ }else{
+ cell.set("text", text);
+ }
+ // /cell.set("text", text);
}
cell.addEvent("click", function(e){
this._editLine(e.target);
@@ -483,10 +490,16 @@ MWF.xApplication.process.Xform.DatagridPC = new Class({
if( module.json.type == "ImageClipper" ){
this._createImage( cell, module, data.text );
}else{
- cell.set("text", data.text.join(", "));
+ var text = this._getValueText(idx-1, data.text.join(", "));
+ if( module.json.type == "Textarea"){
+ cell.set("html", text);
+ }else{
+ cell.set("text", data.text.join(", "));
+ }
}
}else{
- this._createNewEditTd(newTr, idx, editorTds[idx].get("id"), data.text.join(", "), titleThs.length-1);
+ var text = this._getValueText(idx-1, data.text.join(", "));
+ this._createNewEditTd(newTr, idx, editorTds[idx].get("id"), text, titleThs.length-1);
}
}else{
if (!cell) this._createNewEditTd(newTr, idx, id, "", titleThs.length-1);
@@ -759,10 +772,14 @@ MWF.xApplication.process.Xform.DatagridPC = new Class({
var module = this.editModules[index];
if( module && module.json.type == "ImageClipper" ){
- this._createImage( cell, module, v )
+ this._createImage( cell, module, v );
}else{
var text = this._getValueText(index, v);
- cell.set("text", text);
+ if( module && module.json.type == "Textarea" ){
+ cell.set("html", text);
+ }else{
+ cell.set("text", text);
+ }
}
break;
}
@@ -973,7 +990,7 @@ MWF.xApplication.process.Xform.DatagridPC = new Class({
if (data && data.isAG){
this.moduleValueAG = data;
data.addResolve(function(v){
- this.setData(v);
+ this._setData(v);
}.bind(this));
}else{
if (o2.typeOf(data)=="array") data = {"data": data};