Hi Isomorphic
could you please advise if the following behaviour is a bug, not supported, or an error on my behalf:
I have two tables, father and child where:
- father displaying all its values.
- child displaying all its values and father.name instead of father.id (done with custom operationBinding including the SQL-join).
When I update father.name within the app, this update is not shown on the child, although FK-relationship in the .ds.xml is set (and SmartGWT therefore should also propagate father-changes to all Widgets with FKs to the fatherDS, not only the Widgets with the fatherDS, as I'd suppose).
Code:
father.ds.xml
	child.ds.xml
	SQL Create statements (Oracle):
	Java (integrates in built-in-ds sample)
	I'm on 3.0 eval, FF10.0, GWT Development mode and production.
Thank you,
Blama
					could you please advise if the following behaviour is a bug, not supported, or an error on my behalf:
I have two tables, father and child where:
- father displaying all its values.
- child displaying all its values and father.name instead of father.id (done with custom operationBinding including the SQL-join).
When I update father.name within the app, this update is not shown on the child, although FK-relationship in the .ds.xml is set (and SmartGWT therefore should also propagate father-changes to all Widgets with FKs to the fatherDS, not only the Widgets with the fatherDS, as I'd suppose).
Code:
father.ds.xml
Code:
	
	<!-- Auto-generated from database table T_COMPANY --> <DataSource schema="myschema" dbName="Oracle" tableName="T_COMPANY" ID="T_COMPANY" dataSourceVersion="1" generatedBy="SC_SNAPSHOT-2011-12-05/EVAL Deployment 2011-12-05" serverType="sql" > <fields> <field primaryKey="true" name="ID" type="sequence"></field> <field name="NAME" title="Companyname" length="20" type="text" required="true"></field> </fields> </DataSource>
Code:
	
	<!-- Auto-generated from database table T_UNIT --> <DataSource schema="myschema" dbName="Oracle" tableName="T_UNIT" ID="T_UNIT" dataSourceVersion="1" generatedBy="SC_SNAPSHOT-2011-12-05/EVAL Deployment 2011-12-05" serverType="sql"> <fields> <field primaryKey="true" name="ID" type="sequence"></field> <field name="COMPANY_ID" title="Companyname" foreignKey="T_COMPANY.ID" displayField="COMPANY" type="int" required="true"></field> <field name="COMPANY" hidden="true" type="int" canSave="false" nativeName="NAME" tableName="T_COMPANY"></field> <field name="NAME" title="Unitname" length="20" type="text" required="true"></field> </fields> <operationBindings> <operationBinding operationType="fetch"> <tableClause>T_UNIT INNER JOIN T_COMPANY ON T_UNIT.COMPANY_ID = T_COMPANY.ID</tableClause> </operationBinding> </operationBindings> </DataSource>
Code:
	
	DROP TRIGGER T_UNIT_BI;
DROP TRIGGER T_COMPANY_BI;
DROP SEQUENCE T_UNIT_ID;
DROP SEQUENCE T_COMPANY_ID;
DROP TABLE T_COMPANY CASCADE CONSTRAINTS;
DROP TABLE T_UNIT CASCADE CONSTRAINTS;
CREATE TABLE T_COMPANY
(
ID INTEGER NOT NULL ,
NAME VARCHAR2 (20) NOT NULL
)
;
ALTER TABLE T_COMPANY
ADD CONSTRAINT PK_COMPANY PRIMARY KEY ( ID ) ;
CREATE TABLE T_UNIT
(
ID INTEGER NOT NULL ,
COMPANY_ID INTEGER NOT NULL ,
NAME VARCHAR2 (20) NOT NULL
)
;
ALTER TABLE T_UNIT
ADD CONSTRAINT PK_UNIT PRIMARY KEY ( ID ) ;
ALTER TABLE T_UNIT
ADD CONSTRAINT FK_T_UNIT_T_COMPANY FOREIGN KEY
(
COMPANY_ID
)
REFERENCES T_COMPANY
(
ID
)
;
CREATE SEQUENCE T_COMPANY_ID
NOCACHE
ORDER ;
CREATE SEQUENCE T_UNIT_ID
NOCACHE
ORDER ;
CREATE OR REPLACE TRIGGER T_UNIT_BI
BEFORE INSERT ON T_UNIT
FOR EACH ROW
WHEN (NEW.ID IS NULL)
BEGIN
SELECT T_UNIT_ID.NEXTVAL INTO :NEW.ID FROM DUAL;
END;
/
CREATE OR REPLACE TRIGGER T_COMPANY_BI
BEFORE INSERT ON T_COMPANY
FOR EACH ROW
WHEN (NEW.ID IS NULL)
BEGIN
SELECT T_COMPANY_ID.NEXTVAL INTO :NEW.ID FROM DUAL;
END;
/
INSERT INTO T_COMPANY (NAME) VALUES ('ACME');
INSERT INTO T_COMPANY (NAME) VALUES ('Foocomp');
INSERT INTO T_UNIT (COMPANY_ID, NAME) VALUES ('1', 'ACME_UNIT1');
INSERT INTO T_UNIT (COMPANY_ID, NAME) VALUES ('2', 'foo UNIT1');
INSERT INTO T_UNIT (COMPANY_ID, NAME) VALUES ('1', 'ACME_UNIT2');
INSERT INTO T_UNIT (COMPANY_ID, NAME) VALUES ('2', 'foo UNIT2');
COMMIT;
Code:
	
	package com.smartgwt.sample.client;
import com.smartgwt.client.data.DataSource;
import com.smartgwt.client.widgets.grid.ListGrid;
import com.smartgwt.client.widgets.layout.HLayout;
import com.smartgwt.client.widgets.layout.VLayout;
import com.google.gwt.core.client.EntryPoint;
public class Testcase implements EntryPoint {
	@Override
	public void onModuleLoad() {
		VLayout vL = new VLayout() {
			{
				setWidth100();
				setHeight100();
				final DataSource unitDS = DataSource.get("T_UNIT");
				final DataSource companyDS = DataSource.get("T_COMPANY");
				HLayout twiceFather = new HLayout() {
					{
						ListGrid companyLG1 = new ListGrid() {
							{
								setDataSource(companyDS);
								fetchData();
								setCanEdit(true);
							}
						};
						ListGrid companyLG2 = new ListGrid() {
							{
								setDataSource(companyDS);
								fetchData();
								setCanEdit(true);
							}
						};
						setMembersMargin(10);
						addMember(companyLG1);
						addMember(companyLG2);
					}
				};
				ListGrid unitLG = new ListGrid() {
					{
						setDataSource(unitDS);
						fetchData();
						setCanEdit(true);
					}
				};
				setMembersMargin(10);
				addMember(twiceFather);
				addMember(unitLG);
			}
		};
		vL.draw();
	}
}
Thank you,
Blama

Comment