I have a grid, linked to a datasource. One of the fields is a ListGridField but with the editor properties set to a TextAreaItem. The field in the ds.xml file has a length of 1000.
At first everything works perfectly (on Tomcat 7). I can paste text into the TextAreaItem and it correctly validates according to this length. After a couple of days the validation stops working and it incorrectly sets the length to 60. If I copy any text into the TextAreaItem I get a validation error (in red text):
Must be no more than 60 characters
On Google Chrome it actually shows:
Must be no more than 60 characters
Must be no more than 1000 characters
I basically need to redeploy the app, than it works fine again. Somewhere the validation length of a 1000 gets lost or overridden. Once I get the error I have no option but to redeploy. I have used Admin Console, Developer Console on both browsers and tried so many things. It just keeps coming back after a few days.
Smartgwt Version:
SmartClient Version: v10.0p_2014-12-21/PowerEdition Deployment (built 2014-12-21)
Browsers:
Chrome: Version 32.0.1700.107
FF: 26.0
Server Side Problem
No server-side problem as it does not get past validation, so no request is sent to the server
Stack Trace:
09:41:13.112:MDN6:INFO:EventHandler:Target Canvas for event 'mousedown': [ImgTab ID:isc_Tab_35]
09:41:13.222:MUP0:INFO:EventHandler:Target Canvas for event 'mouseup': [ImgTab ID:isc_Tab_35]
09:41:13.322:MUP0:INFO:ResultSet:isc_CrudListGrid_17:Creating new isc.ResultSet for operation 'DxMemo_fetch' with filterValues: {
"operator":"and",
"criteria":[
{
"fieldName":"IDGROUP",
"operator":"equals",
"value":"207"
},
{
"fieldName":"IDEMPLOYEE",
"operator":"equals",
"value":"502"
},
{
"fieldName":"IDRESERVATION",
"operator":"equals",
"value":1034
}
],
"_constructor":"AdvancedCriteria"
}
09:41:13.323:MUP0:INFO:ResultSet:isc_ResultSet_58 (dataSource: DxMemo, created by: isc_CrudListGrid_17):setCriteria: filter criteria changed, invalidating cache
09:41:13.323:MUP0:INFO:ResultSet:isc_ResultSet_58 (dataSource: DxMemo, created by: isc_CrudListGrid_17):Invalidating cache
09:41:13.324:MUP0:INFO:ResultSet:isc_ResultSet_58 (dataSource: DxMemo, created by: isc_CrudListGrid_17):getRange(0, 1) will fetch from 0 to 75
09:41:13.325:MUP0:INFO:ResultSet:isc_ResultSet_58 (dataSource: DxMemo, created by: isc_CrudListGrid_17):fetching rows 0,75 from server
09:41:13.345:MUP0:INFO:RPCManager:sendQueue[203]: 1 RPCRequest(s); transport: xmlHttpRequest; target: https://apps.hti-systems.com/nova/no...2-21&isc_xhr=1
09:41:13.446:MUP0[E1]:INFO:RPCManager:sendQueue[204]: 1 RPCRequest(s); transport: xmlHttpRequest; target: https://apps.hti-systems.com/nova/no...2-21&isc_xhr=1
09:41:13.584:XRP4:INFO:RPCManager:transaction 203 arrived after 229ms
09:41:13.589:XRP4:INFO:RPCManager:rpcResponse(DxMemo_fetch)[fetch]: result: 1 records[status=0]
09:41:13.590:XRP4:INFO:xmlBinding:DxMemo:dsResponse is: {operationId: "DxMemo_fetch",
clientContext: undef,
internalClientContext: Obj,
context: Obj,
transactionNum: 203,
httpResponseCode: 200,
httpResponseText: "//isc_RPCResponseStart-->[{affectedRows:..."[416],
xmlHttpRequest: [object XMLHttpRequest],
transport: "xmlHttpRequest",
status: 0,
clientOnly: undef,
httpHeaders: Obj,
isStructured: true,
callbackArgs: null,
results: Obj,
affectedRows: 0,
data: Array[1],
endRow: 1,
invalidateCache: false,
isDSResponse: true,
operationType: "fetch",
queueStatus: 0,
serverTime: Date(02/19/2015),
startRow: 0,
totalRows: 1}
09:41:13.591:XRP4:INFO:ResultSet:isc_ResultSet_58 (dataSource: DxMemo, created by: isc_CrudListGrid_17):Received 1 records from server
09:41:13.591:XRP4:INFO:ResultSet:isc_ResultSet_58 (dataSource: DxMemo, created by: isc_CrudListGrid_17):Fetch request returned range 0,1 differs from requested range 0,75. Assuming client/server batch size mismatch and clearing loading markers greater than 1
09:41:13.591:XRP4:INFO:ResultSet:isc_ResultSet_58 (dataSource: DxMemo, created by: isc_CrudListGrid_17):cached 1 rows, from 0 to 1 (1 total rows, 1 cached)
09:41:13.592:XRP4:INFO:ResultSet:isc_ResultSet_58 (dataSource: DxMemo, created by: isc_CrudListGrid_17):Cache for current criteria complete
09:41:13.642:XRP6:INFO:RPCManager:transaction 204 arrived after 189ms
09:41:13.646:XRP6:INFO:RPCManager:rpcResponse(custom)[rpc]: result: 1 records[status=0]
09:41:13.647:XRP6:INFO:xmlBinding:DxItinerary:dsResponse is: {operationId: "custom",
clientContext: undef,
internalClientContext: Obj,
context: Obj,
transactionNum: 204,
httpResponseCode: 200,
httpResponseText: "//isc_RPCResponseStart-->[{affectedRows:..."[431],
xmlHttpRequest: [object XMLHttpRequest],
transport: "xmlHttpRequest",
status: 0,
clientOnly: undef,
httpHeaders: Obj,
isStructured: true,
callbackArgs: null,
results: Obj,
affectedRows: 0,
data: Array[1],
endRow: 1,
invalidateCache: false,
isDSResponse: true,
operationType: "fetch",
queueStatus: 0,
serverTime: Date(02/19/2015),
startRow: 0,
totalRows: 1}
09:41:13.649:XRP6:INFO:ResultSet:isc_ResultSet_59 (dataSource: DxItinerary, created by: undefined):creating auto-operation for operationType: fetch
09:41:13.649:XRP6:INFO:ResultSet:isc_ResultSet_59 (dataSource: DxItinerary, created by: undefined):setCriteria: filter criteria changed, invalidating cache
09:41:13.649:XRP6:INFO:ResultSet:isc_ResultSet_59 (dataSource: DxItinerary, created by: undefined):Invalidating cache
09:41:37.939:MDN5:INFO:EventHandler:Target Canvas for event 'mousedown': [ToolStripButton ID:isc_ToolStripButton_1]
09:41:38.041:MUP0:INFO:EventHandler:Target Canvas for event 'mouseup': [ToolStripButton ID:isc_ToolStripButton_1]
09:41:38.065:MUP0:INFO:gridEdit:isc_CrudListGrid_17:Starting editing at row 1, colNum 0
09:41:38.076:MUP0:INFO:gridEdit:isc_CrudListGrid_17_body:redraw with editors showing, editForm.hasFocus: undefined
09:41:38.740:MDN7:INFO:EventHandler:Target Canvas for event 'mousedown': [DynamicForm ID:isc_DynamicForm_11]
09:41:38.866:MUP8:INFO:EventHandler:Target Canvas for event 'mouseup': [DynamicForm ID:isc_DynamicForm_11]
09:41:38.875:MUP8:INFO:EventHandler:isc_DynamicForm_11:Bubbling handleClick event for isc_TextAreaItem_0
09:41:38.876:MUP8:INFO:EventHandler:isc_DynamicForm_11:Bubbling handleCellClick event for isc_TextAreaItem_0
09:41:39.112:KDN0:INFO:EventHandler:keyDown event with Canvas target: [TextAreaItem ID:isc_TextAreaItem_0 name:Memo], native target: [TEXTAREAElement]{name:Memo}
09:41:39.218:INP1:INFO:RPCManager:sendQueue called with no current queue, ignoring
09:41:41.084:MDN4:INFO:EventHandler:Target Canvas for event 'mousedown': [GridBody ID:isc_CrudListGrid_17_body]
09:41:41.090:MDN4:INFO:gridEdit:isc_CrudListGrid_17:cellEditEnd: ending editing, completion event: click_outside
09:41:41.093:MDN4:WARN:ResultSet:isc_ResultSet_58 (dataSource: DxMemo, created by: isc_CrudListGrid_17):getRange(1, 2): start beyond end of rows, returning empty list
09:41:41.097:MDN4:INFO:gridEdit:isc_CrudListGrid_17:validateFieldValue, newValue: "
Now you have static variables and class variables (class variables only exists while you have an object of type horse, once you destroy the horse object, the variables dissapears with it). Static variables are created the first time you mention a Horse and does not dissapear if the object is destroyed. Lets say you have a static varable of type integer to count how many times the horse has eaten and a class variable doing the same:
private int howManyTimesEaten;
private static int staticHowManyTimesEaten;
Every time you call the horse.eat() method both gets incremented by one:
Horse horse = new Horse();
horse.eat(); //howManyTimesEaten = 1, staticHowManyTimesEaten = 1
horse.eat(); //howManyTimesEaten = 2, staticHowManyTimesEaten = 2
horse = null;
Horse donkey = new Horse();
donkey.eat(); //howManyTimesEaten = 1, staticHowManyTimesEaten = 3", passed validation: false, resultingValue: null
09:41:41.098:MDN4:INFO:gridEdit:isc_CrudListGrid_17:validateFieldValue, newValue: undef, passed validation: true, resultingValue: null
09:41:41.098:MDN4:INFO:gridEdit:isc_CrudListGrid_17:validateFieldValue, newValue: undef, passed validation: true, resultingValue: null
09:41:41.099:MDN4:INFO:gridEdit:isc_CrudListGrid_17:validateFieldValue, newValue: undef, passed validation: true, resultingValue: null
09:41:41.100:MDN4:INFO:gridEdit:isc_CrudListGrid_17:validateFieldValue, newValue: undef, passed validation: true, resultingValue: null
09:41:41.101:MDN4:INFO:gridEdit:isc_CrudListGrid_17:validateFieldValue, newValue: undef, passed validation: true, resultingValue: null
09:41:41.102:MDN4:INFO:gridEdit:isc_CrudListGrid_17:validateFieldValue, newValue: undef, passed validation: true, resultingValue: null
09:41:41.103:MDN4:INFO:RPCManager:sendQueue called with no current queue, ignoring
09:41:41.211:MUP2:INFO:EventHandler:Target Canvas for event 'mouseup': [GridBody ID:isc_CrudListGrid_17_body]
Code Example:
Grid:
ListGridTextAreaField:
My datasource:
<DataSource
schema="dbo"
dbName="Nova"
tableName="DxMemo"
ID="DxMemo"
dataSourceVersion="1"
generatedBy="v8.2p_2012-09-17/EVAL Deployment 2012-09-17"
serverType="sql"
requiresAuthentication="true"
logActionHistory="true"
>
<fields>
<field primaryKey="true" name="IDMEMO" type="sequence" hidden="true"></field>
<field name="IDGROUP" type="integer" required="true" hidden="true"></field>
<field name="IDRESERVATION" type="integer" required="true" title="Reservation"></field>
<field name="IDITINERARY" type="integer" foreignKey="DxItinerary.IDITINERARY" hidden="true" required="false"></field>
<field name="Memo" length="1000" type="text" required="true"></field>
<field name="CheckInFlag" type="boolean"></field>
<field name="CheckOutFlag" type="boolean"></field>
<field name="AllocateFlag" type="boolean"></field>
<field name="CancelFlag" type="boolean"></field>
<field name="HistoryFlag" type="boolean"></field>
<field name="CreateDT" type="datetime" customInsertExpression="GETDATE()" hidden="true"></field>
<field name="CreateIDEMPLOYEE" type="integer" hidden="true"></field>
<field name="ChangeDT" type="datetime" canEdit="false" customUpdateExpression="GETDATE()" hidden="true"></field>
<field name="ChangeIDEMPLOYEE" type="integer" hidden="true"></field>
</fields>
</DataSource>
At first everything works perfectly (on Tomcat 7). I can paste text into the TextAreaItem and it correctly validates according to this length. After a couple of days the validation stops working and it incorrectly sets the length to 60. If I copy any text into the TextAreaItem I get a validation error (in red text):
Must be no more than 60 characters
On Google Chrome it actually shows:
Must be no more than 60 characters
Must be no more than 1000 characters
I basically need to redeploy the app, than it works fine again. Somewhere the validation length of a 1000 gets lost or overridden. Once I get the error I have no option but to redeploy. I have used Admin Console, Developer Console on both browsers and tried so many things. It just keeps coming back after a few days.
Smartgwt Version:
SmartClient Version: v10.0p_2014-12-21/PowerEdition Deployment (built 2014-12-21)
Browsers:
Chrome: Version 32.0.1700.107
FF: 26.0
Server Side Problem
No server-side problem as it does not get past validation, so no request is sent to the server
Stack Trace:
09:41:13.112:MDN6:INFO:EventHandler:Target Canvas for event 'mousedown': [ImgTab ID:isc_Tab_35]
09:41:13.222:MUP0:INFO:EventHandler:Target Canvas for event 'mouseup': [ImgTab ID:isc_Tab_35]
09:41:13.322:MUP0:INFO:ResultSet:isc_CrudListGrid_17:Creating new isc.ResultSet for operation 'DxMemo_fetch' with filterValues: {
"operator":"and",
"criteria":[
{
"fieldName":"IDGROUP",
"operator":"equals",
"value":"207"
},
{
"fieldName":"IDEMPLOYEE",
"operator":"equals",
"value":"502"
},
{
"fieldName":"IDRESERVATION",
"operator":"equals",
"value":1034
}
],
"_constructor":"AdvancedCriteria"
}
09:41:13.323:MUP0:INFO:ResultSet:isc_ResultSet_58 (dataSource: DxMemo, created by: isc_CrudListGrid_17):setCriteria: filter criteria changed, invalidating cache
09:41:13.323:MUP0:INFO:ResultSet:isc_ResultSet_58 (dataSource: DxMemo, created by: isc_CrudListGrid_17):Invalidating cache
09:41:13.324:MUP0:INFO:ResultSet:isc_ResultSet_58 (dataSource: DxMemo, created by: isc_CrudListGrid_17):getRange(0, 1) will fetch from 0 to 75
09:41:13.325:MUP0:INFO:ResultSet:isc_ResultSet_58 (dataSource: DxMemo, created by: isc_CrudListGrid_17):fetching rows 0,75 from server
09:41:13.345:MUP0:INFO:RPCManager:sendQueue[203]: 1 RPCRequest(s); transport: xmlHttpRequest; target: https://apps.hti-systems.com/nova/no...2-21&isc_xhr=1
09:41:13.446:MUP0[E1]:INFO:RPCManager:sendQueue[204]: 1 RPCRequest(s); transport: xmlHttpRequest; target: https://apps.hti-systems.com/nova/no...2-21&isc_xhr=1
09:41:13.584:XRP4:INFO:RPCManager:transaction 203 arrived after 229ms
09:41:13.589:XRP4:INFO:RPCManager:rpcResponse(DxMemo_fetch)[fetch]: result: 1 records[status=0]
09:41:13.590:XRP4:INFO:xmlBinding:DxMemo:dsResponse is: {operationId: "DxMemo_fetch",
clientContext: undef,
internalClientContext: Obj,
context: Obj,
transactionNum: 203,
httpResponseCode: 200,
httpResponseText: "//isc_RPCResponseStart-->[{affectedRows:..."[416],
xmlHttpRequest: [object XMLHttpRequest],
transport: "xmlHttpRequest",
status: 0,
clientOnly: undef,
httpHeaders: Obj,
isStructured: true,
callbackArgs: null,
results: Obj,
affectedRows: 0,
data: Array[1],
endRow: 1,
invalidateCache: false,
isDSResponse: true,
operationType: "fetch",
queueStatus: 0,
serverTime: Date(02/19/2015),
startRow: 0,
totalRows: 1}
09:41:13.591:XRP4:INFO:ResultSet:isc_ResultSet_58 (dataSource: DxMemo, created by: isc_CrudListGrid_17):Received 1 records from server
09:41:13.591:XRP4:INFO:ResultSet:isc_ResultSet_58 (dataSource: DxMemo, created by: isc_CrudListGrid_17):Fetch request returned range 0,1 differs from requested range 0,75. Assuming client/server batch size mismatch and clearing loading markers greater than 1
09:41:13.591:XRP4:INFO:ResultSet:isc_ResultSet_58 (dataSource: DxMemo, created by: isc_CrudListGrid_17):cached 1 rows, from 0 to 1 (1 total rows, 1 cached)
09:41:13.592:XRP4:INFO:ResultSet:isc_ResultSet_58 (dataSource: DxMemo, created by: isc_CrudListGrid_17):Cache for current criteria complete
09:41:13.642:XRP6:INFO:RPCManager:transaction 204 arrived after 189ms
09:41:13.646:XRP6:INFO:RPCManager:rpcResponse(custom)[rpc]: result: 1 records[status=0]
09:41:13.647:XRP6:INFO:xmlBinding:DxItinerary:dsResponse is: {operationId: "custom",
clientContext: undef,
internalClientContext: Obj,
context: Obj,
transactionNum: 204,
httpResponseCode: 200,
httpResponseText: "//isc_RPCResponseStart-->[{affectedRows:..."[431],
xmlHttpRequest: [object XMLHttpRequest],
transport: "xmlHttpRequest",
status: 0,
clientOnly: undef,
httpHeaders: Obj,
isStructured: true,
callbackArgs: null,
results: Obj,
affectedRows: 0,
data: Array[1],
endRow: 1,
invalidateCache: false,
isDSResponse: true,
operationType: "fetch",
queueStatus: 0,
serverTime: Date(02/19/2015),
startRow: 0,
totalRows: 1}
09:41:13.649:XRP6:INFO:ResultSet:isc_ResultSet_59 (dataSource: DxItinerary, created by: undefined):creating auto-operation for operationType: fetch
09:41:13.649:XRP6:INFO:ResultSet:isc_ResultSet_59 (dataSource: DxItinerary, created by: undefined):setCriteria: filter criteria changed, invalidating cache
09:41:13.649:XRP6:INFO:ResultSet:isc_ResultSet_59 (dataSource: DxItinerary, created by: undefined):Invalidating cache
09:41:37.939:MDN5:INFO:EventHandler:Target Canvas for event 'mousedown': [ToolStripButton ID:isc_ToolStripButton_1]
09:41:38.041:MUP0:INFO:EventHandler:Target Canvas for event 'mouseup': [ToolStripButton ID:isc_ToolStripButton_1]
09:41:38.065:MUP0:INFO:gridEdit:isc_CrudListGrid_17:Starting editing at row 1, colNum 0
09:41:38.076:MUP0:INFO:gridEdit:isc_CrudListGrid_17_body:redraw with editors showing, editForm.hasFocus: undefined
09:41:38.740:MDN7:INFO:EventHandler:Target Canvas for event 'mousedown': [DynamicForm ID:isc_DynamicForm_11]
09:41:38.866:MUP8:INFO:EventHandler:Target Canvas for event 'mouseup': [DynamicForm ID:isc_DynamicForm_11]
09:41:38.875:MUP8:INFO:EventHandler:isc_DynamicForm_11:Bubbling handleClick event for isc_TextAreaItem_0
09:41:38.876:MUP8:INFO:EventHandler:isc_DynamicForm_11:Bubbling handleCellClick event for isc_TextAreaItem_0
09:41:39.112:KDN0:INFO:EventHandler:keyDown event with Canvas target: [TextAreaItem ID:isc_TextAreaItem_0 name:Memo], native target: [TEXTAREAElement]{name:Memo}
09:41:39.218:INP1:INFO:RPCManager:sendQueue called with no current queue, ignoring
09:41:41.084:MDN4:INFO:EventHandler:Target Canvas for event 'mousedown': [GridBody ID:isc_CrudListGrid_17_body]
09:41:41.090:MDN4:INFO:gridEdit:isc_CrudListGrid_17:cellEditEnd: ending editing, completion event: click_outside
09:41:41.093:MDN4:WARN:ResultSet:isc_ResultSet_58 (dataSource: DxMemo, created by: isc_CrudListGrid_17):getRange(1, 2): start beyond end of rows, returning empty list
09:41:41.097:MDN4:INFO:gridEdit:isc_CrudListGrid_17:validateFieldValue, newValue: "
Now you have static variables and class variables (class variables only exists while you have an object of type horse, once you destroy the horse object, the variables dissapears with it). Static variables are created the first time you mention a Horse and does not dissapear if the object is destroyed. Lets say you have a static varable of type integer to count how many times the horse has eaten and a class variable doing the same:
private int howManyTimesEaten;
private static int staticHowManyTimesEaten;
Every time you call the horse.eat() method both gets incremented by one:
Horse horse = new Horse();
horse.eat(); //howManyTimesEaten = 1, staticHowManyTimesEaten = 1
horse.eat(); //howManyTimesEaten = 2, staticHowManyTimesEaten = 2
horse = null;
Horse donkey = new Horse();
donkey.eat(); //howManyTimesEaten = 1, staticHowManyTimesEaten = 3", passed validation: false, resultingValue: null
09:41:41.098:MDN4:INFO:gridEdit:isc_CrudListGrid_17:validateFieldValue, newValue: undef, passed validation: true, resultingValue: null
09:41:41.098:MDN4:INFO:gridEdit:isc_CrudListGrid_17:validateFieldValue, newValue: undef, passed validation: true, resultingValue: null
09:41:41.099:MDN4:INFO:gridEdit:isc_CrudListGrid_17:validateFieldValue, newValue: undef, passed validation: true, resultingValue: null
09:41:41.100:MDN4:INFO:gridEdit:isc_CrudListGrid_17:validateFieldValue, newValue: undef, passed validation: true, resultingValue: null
09:41:41.101:MDN4:INFO:gridEdit:isc_CrudListGrid_17:validateFieldValue, newValue: undef, passed validation: true, resultingValue: null
09:41:41.102:MDN4:INFO:gridEdit:isc_CrudListGrid_17:validateFieldValue, newValue: undef, passed validation: true, resultingValue: null
09:41:41.103:MDN4:INFO:RPCManager:sendQueue called with no current queue, ignoring
09:41:41.211:MUP2:INFO:EventHandler:Target Canvas for event 'mouseup': [GridBody ID:isc_CrudListGrid_17_body]
Code Example:
Grid:
Code:
private void createMemoGrid(){ ListGridItineraryField IDITINERARY = new ListGridItineraryField(clientFactory, Integer.toString(IDRESERVATION), false); IDITINERARY.setWidth(150); if (itincount == 1){ IDITINERARY.setHidden(true); } else { IDITINERARY.setHidden(false); } ListGridTextAreaField Memo = new ListGridTextAreaField("Memo", clientFactory.getConstants().Memo()); ListGridField CheckInFlag = new ListGridField("CheckInFlag", clientFactory.getConstants().CheckIn()); ListGridField CheckOutFlag = new ListGridField("CheckInFlag", clientFactory.getConstants().CheckOut()); ListGridField AllocateFlag = new ListGridField("CheckInFlag", clientFactory.getConstants().Allocate()); ListGridField CancelFlag = new ListGridField("CheckInFlag", clientFactory.getConstants().Cancel()); ListGridField HistoryFlag = new ListGridField("CheckInFlag", clientFactory.getConstants().History()); ListGridField ChangeDT = new ListGridField("ChangeDT", clientFactory.getConstants().Change()); memoGrid = new CrudListGrid(clientFactory); memoGrid.addRecordClickHandler(new RecordClickHandler() { @Override public void onRecordClick(RecordClickEvent event) { if (!setIsReservationCancelled()){ if (event.getRecord() != null) { memoAdd.setDisabled(false); memoDelete.setDisabled(false); } } } }); memoGrid.setDataSource(dsMemo); memoGrid.setAutoFetchData(false); memoGrid.setFields(IDITINERARY,Memo,CheckInFlag,CheckOutFlag,AllocateFlag,CancelFlag,HistoryFlag,ChangeDT); memoGrid.setCriteria(new AdvancedCriteria(OperatorId.AND, new Criterion[] { new Criterion("IDGROUP", OperatorId.EQUALS, clientFactory.getUser().getGroupID()), new Criterion("IDEMPLOYEE", OperatorId.EQUALS, clientFactory.getUser().getID()) })); memoGrid.setWrapCells(true); memoGrid.setFixedRecordHeights(false); memoBody.addMember(memoGrid); if (clientFactory.isTablet()){ memoGrid.hideFields(AllocateFlag,CancelFlag,HistoryFlag); } }
Code:
public class ListGridTextAreaField extends ListGridField { /** * * @param name * @param title */ public ListGridTextAreaField(String name, String title) { super(name, title); setWidth("*"); TextAreaItem crud = new TextAreaItem(); setEditorProperties(crud); } }
<DataSource
schema="dbo"
dbName="Nova"
tableName="DxMemo"
ID="DxMemo"
dataSourceVersion="1"
generatedBy="v8.2p_2012-09-17/EVAL Deployment 2012-09-17"
serverType="sql"
requiresAuthentication="true"
logActionHistory="true"
>
<fields>
<field primaryKey="true" name="IDMEMO" type="sequence" hidden="true"></field>
<field name="IDGROUP" type="integer" required="true" hidden="true"></field>
<field name="IDRESERVATION" type="integer" required="true" title="Reservation"></field>
<field name="IDITINERARY" type="integer" foreignKey="DxItinerary.IDITINERARY" hidden="true" required="false"></field>
<field name="Memo" length="1000" type="text" required="true"></field>
<field name="CheckInFlag" type="boolean"></field>
<field name="CheckOutFlag" type="boolean"></field>
<field name="AllocateFlag" type="boolean"></field>
<field name="CancelFlag" type="boolean"></field>
<field name="HistoryFlag" type="boolean"></field>
<field name="CreateDT" type="datetime" customInsertExpression="GETDATE()" hidden="true"></field>
<field name="CreateIDEMPLOYEE" type="integer" hidden="true"></field>
<field name="ChangeDT" type="datetime" canEdit="false" customUpdateExpression="GETDATE()" hidden="true"></field>
<field name="ChangeIDEMPLOYEE" type="integer" hidden="true"></field>
</fields>
</DataSource>
Comment