Hi Isomorphic,
please see this BuiltInDS based testcase (v11.1p_2018-06-09).
As you can see when you open the sample, the column incName is not there in the GUI. This is expected as DataSourceLaoder returns this for the incName field:
Nevertheless the generated SQL is (I do have customSelectExpression in employees.ds.xml):
As you can see it includes the join to employees. This is unexpected. Not having the unneeded field (plus join) would result in easier and faster SQLs.
animals.ds.xml (join added):
BuiltInDS.java:
Best regards
Blama
please see this BuiltInDS based testcase (v11.1p_2018-06-09).
As you can see when you open the sample, the column incName is not there in the GUI. This is expected as DataSourceLaoder returns this for the incName field:
Code:
{canView:false,name:"incName",columnCode:"60f633f201247e9259633def4260a46f"}]}
Code:
SELECT LIMIT 0 75 animals.commonName, animals.scientificName, animals.lifeSpan, animals.status, animals.diet, animals.information, animals.picture, [B]UPPER(Name) AS incName[/B]
FROM animals
[B]LEFT OUTER JOIN employeeTable ON animals.lifeSpan = employeeTable.EmployeeId[/B]
WHERE ('1'='1') ORDER BY animals.scientificName
animals.ds.xml (join added):
Code:
<DataSource
ID="animals"
serverType="sql"
tableName="animals"
testFileName="animals.data.xml" useAnsiJoins="true"
>
<fields>
<field name="commonName" title="Animal" type="text" />
<field name="scientificName" title="Scientific Name" type="text" primaryKey="true" required="true"/>
<field name="lifeSpan" title="Life Span" type="integer"/>
<field name="status" title="Endangered Status" type="text">
<valueMap>
<value>Threatened</value>
<value>Endangered</value>
<value>Not Endangered</value>
<value>Not currently listed</value>
<value>May become threatened</value>
<value>Protected</value>
</valueMap>
</field>
<field name="diet" title="Diet" type="text"/>
<field name="information" title="Interesting Facts" type="text" length="1000" />
<field name="picture" title="Picture" type="image" detail="true"
imageURLPrefix="/isomorphic/system/reference/inlineExamples/tiles/images/"/>
[B] <field name="incName" includeFrom="employees.Name" viewRequires="false" />
<field foreignKey="employees.EmployeeId" name="lifeSpan" title="Life Span" type="integer" joinType="outer" />[/B]
</fields>
</DataSource>
Code:
package com.smartgwt.sample.client;
import com.google.gwt.core.client.EntryPoint;
import com.smartgwt.client.Version;
import com.smartgwt.client.core.KeyIdentifier;
import com.smartgwt.client.data.DataSource;
import com.smartgwt.client.data.SortSpecifier;
import com.smartgwt.client.types.SortDirection;
import com.smartgwt.client.util.Page;
import com.smartgwt.client.util.PageKeyHandler;
import com.smartgwt.client.util.SC;
import com.smartgwt.client.widgets.IButton;
import com.smartgwt.client.widgets.Window;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.grid.ListGrid;
import com.smartgwt.client.widgets.grid.ListGridField;
import com.smartgwt.client.widgets.layout.VLayout;
public class BuiltInDS implements EntryPoint {
private VLayout mainLayout;
private IButton recreateBtn;
public void onModuleLoad() {
KeyIdentifier debugKey = new KeyIdentifier();
debugKey.setCtrlKey(true);
debugKey.setKeyName("D");
Page.registerKey(debugKey, new PageKeyHandler() {
public void execute(String keyName) {
SC.showConsole();
}
});
mainLayout = new VLayout(20);
mainLayout.setWidth100();
mainLayout.setHeight100();
recreateBtn = new IButton("Recreate");
recreateBtn.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
recreate();
}
});
mainLayout.addMember(recreateBtn);
recreate();
mainLayout.draw();
}
private void recreate() {
Window w = new Window();
w.setWidth("95%");
w.setHeight("95%");
w.setMembersMargin(0);
w.setModalMaskOpacity(70);
w.setTitle(" (" + Version.getVersion() + "/" + Version.getSCVersionNumber() + ")");
w.setTitle("Problem with length validation run for included field" + w.getTitle());
w.setShowMinimizeButton(false);
w.setIsModal(true);
w.setShowModalMask(true);
w.centerInPage();
final ListGrid animalsGrid = new ListGrid(DataSource.get("animals"));
animalsGrid.setHeight100();
animalsGrid.setAutoFetchData(false);
animalsGrid.setCanEdit(true);
ListGridField scientificName = new ListGridField("scientificName");
scientificName.setCanEdit(false);
ListGridField commonName = new ListGridField("commonName");
ListGridField lifeSpan = new ListGridField("lifeSpan");
ListGridField status = new ListGridField("status");
ListGridField incName = new ListGridField("incName");
animalsGrid.setFields(scientificName, commonName, lifeSpan, status, incName);
animalsGrid.setSort(new SortSpecifier[] { new SortSpecifier(scientificName.getName(), SortDirection.ASCENDING) });
animalsGrid.fetchData();
w.addItem(animalsGrid);
w.show();
}
}
Blama
Comment