Hi
Below is a fragment of a WSDL document. The fragment below is based on "Ability" data. The web service wraps the data as an "ArrayOfAbilityData". This contains "AbilityData". In turn, this has two fields "CurrentAbility" and "OriginalAbility" of type "Ability".
The concept of "Current" and "Original" comes from the ADO.Net DataSet which has in-built change tracking. It retains a copy of the data in an "Original" bucket, and changes to the data are made to the row in the "Current" bucket. The difference in the Original and Current values can be detected and gives targeted Optimistic Concurrency support.
The web service based on this DataSet approach gives the Original and Current values so that when/where required (generally a remote .NET client piece), a DataSet could be rebuilt on the client side. Using SmartClient, the DataSet obviously cannot be rebuilt but, the Original and Current data is automatically sent anyway. There is nothing I can do about the data sent by the web service. This configuration is how I will receive all web-service data in this particular application.
Here is the real question. I have been reading the Client-side Data Integration topic and am starting to understand this. However, I wonder if you can cast some light on how I can "tell" SmartClient that I want to bind to and operate on the "CurrentData" only, and then return the "CurrentData" with any changes and the "Original" data (that clearly has had no changes made to it) so that the web service can rebuild the ADO.Net DataSet (server-side) and consequently "know" about changes that have occured browser-side by comparing "Current" and "Original" data.
In otherwords, how do I express this in code in SmartClient?
Thanks
-=H
Below is a fragment of a WSDL document. The fragment below is based on "Ability" data. The web service wraps the data as an "ArrayOfAbilityData". This contains "AbilityData". In turn, this has two fields "CurrentAbility" and "OriginalAbility" of type "Ability".
The concept of "Current" and "Original" comes from the ADO.Net DataSet which has in-built change tracking. It retains a copy of the data in an "Original" bucket, and changes to the data are made to the row in the "Current" bucket. The difference in the Original and Current values can be detected and gives targeted Optimistic Concurrency support.
The web service based on this DataSet approach gives the Original and Current values so that when/where required (generally a remote .NET client piece), a DataSet could be rebuilt on the client side. Using SmartClient, the DataSet obviously cannot be rebuilt but, the Original and Current data is automatically sent anyway. There is nothing I can do about the data sent by the web service. This configuration is how I will receive all web-service data in this particular application.
Here is the real question. I have been reading the Client-side Data Integration topic and am starting to understand this. However, I wonder if you can cast some light on how I can "tell" SmartClient that I want to bind to and operate on the "CurrentData" only, and then return the "CurrentData" with any changes and the "Original" data (that clearly has had no changes made to it) so that the web service can rebuild the ADO.Net DataSet (server-side) and consequently "know" about changes that have occured browser-side by comparing "Current" and "Original" data.
In otherwords, how do I express this in code in SmartClient?
Thanks
-=H
Code:
- <s:complexType name="ArrayOfAbilityData"> - <s:sequence> <s:element minOccurs="0" maxOccurs="unbounded" name="AbilityData" nillable="true" type="tns:AbilityData" /> </s:sequence> </s:complexType> - <s:complexType name="AbilityData"> - <s:sequence> <s:element minOccurs="0" maxOccurs="1" name="OriginalAbility" type="tns:Ability" /> <s:element minOccurs="0" maxOccurs="1" name="CurrentAbility" type="tns:Ability" /> </s:sequence> </s:complexType> - <s:complexType name="Ability"> - <s:sequence> <s:element minOccurs="1" maxOccurs="1" name="AbilityId" type="s:int" /> <s:element minOccurs="0" maxOccurs="1" name="AbilityName" type="s:string" /> </s:sequence> </s:complexType>
Comment