Unable to select ListGrid Record that was just selected via Filter Editor.
Couple of issues:
1) Unexpected data type error: employees.ds.xml "EmployeeId" column is type Integer, but throws error unless I access it as a String
2) Selection appearance not updated. ListGrid Record can be selected, and values can be accessed/verified. But it does not assume the cosmetic appearance of a selected record.
This sample code can be run in the Built-In-DS sample project as is:
Dev Mode Console Error re type error:
----------------------------
Info:
Eclipse Luna
GWT 2.6
Smart GWT: SmartClient Version: v9.1p_2015-08-21/PowerEdition Deployment (built 2015-08-21)
IE8
Classic Dev Mode
Couple of issues:
1) Unexpected data type error: employees.ds.xml "EmployeeId" column is type Integer, but throws error unless I access it as a String
2) Selection appearance not updated. ListGrid Record can be selected, and values can be accessed/verified. But it does not assume the cosmetic appearance of a selected record.
This sample code can be run in the Built-In-DS sample project as is:
Code:
package com.smartgwt.sample.client;
import com.google.gwt.core.client.EntryPoint;
import com.smartgwt.client.data.AdvancedCriteria;
import com.smartgwt.client.data.Criterion;
import com.smartgwt.client.data.DataSource;
import com.smartgwt.client.data.Record;
import com.smartgwt.client.types.Alignment;
import com.smartgwt.client.types.OperatorId;
import com.smartgwt.client.types.SelectionAppearance;
import com.smartgwt.client.types.SelectionStyle;
import com.smartgwt.client.util.SC;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.grid.ListGrid;
import com.smartgwt.client.widgets.grid.ListGridRecord;
import com.smartgwt.client.widgets.grid.events.FilterEditorSubmitEvent;
import com.smartgwt.client.widgets.grid.events.FilterEditorSubmitHandler;
import com.smartgwt.client.widgets.layout.VLayout;
public class DemoRecordSelect implements EntryPoint {
DataSource dsEmployees = DataSource.get("employees");
@Override
public void onModuleLoad() {
makeLayout();
}
private void makeLayout() {
VLayout vLayout = new VLayout();
vLayout.setWidth100();
vLayout.setHeight100();
vLayout.setBorder("2px solid green");
vLayout.setDefaultLayoutAlign(Alignment.CENTER);
vLayout.addMember(makeListGrid());
vLayout.draw();
}
private Canvas makeListGrid() {
final ListGrid listGrid = new ListGrid(dsEmployees);
listGrid.setWidth("80%");
listGrid.setAutoFetchData(true);
listGrid.setShowFilterEditor(true);
// listGrid.setGroupByField("EmployeeType", "EmployeeStatus");
listGrid.setSelectionType(SelectionStyle.SINGLE);
listGrid.setSelectionAppearance(SelectionAppearance.CHECKBOX);
listGrid.setReselectOnUpdate(true); // ?
listGrid.addFilterEditorSubmitHandler(new FilterEditorSubmitHandler() {
@Override
public void onFilterEditorSubmit(FilterEditorSubmitEvent event) {
Criterion[] criterions = event.getCriteria()
.asAdvancedCriteria().getCriteria();
Integer testParsedInteger = 0;
for (Criterion criterion : criterions) {
if (criterion.getFieldName().contentEquals("EmployeeId")) {
// ISSUE #1: Unexpected Type Failure
// Fails with GWT Exception
// "JS value of type string, expected int"
// Integer testInteger = criterion.getValueAsInteger();
// int testInt = criterion.getValueAsInt();
// Success
String testString = criterion.getValueAsString();
testParsedInteger = Integer.parseInt(testString);
}
}
// ISSUE #2: Record selection does not *appear* selected
AdvancedCriteria adCriteria = new AdvancedCriteria(
"EmployeeId", OperatorId.EQUALS, testParsedInteger);
Record filteredRecord = listGrid.find(adCriteria);
listGrid.selectRecord(filteredRecord);
SC.say(listGrid.getSelectedRecord()
.getAttributeAsString("Name")); // reports name correctly, so record selection worked?
}
});
return listGrid;
}
}Dev Mode Console Error re type error:
Code:
13:47:18.230 [ERROR] [builtinds] Uncaught exception escaped
com.google.gwt.event.shared.UmbrellaException: Exception caught: invoke arguments: JS value of type string, expected int
at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:129)
at com.google.gwt.user.client.ui.Widget.fireEvent(Widget.java:129)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:338)
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:219)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:576)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:284)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
at com.google.gwt.core.client.impl.Impl.apply(Impl.java)
at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:347)
at sun.reflect.GeneratedMethodAccessor74.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:293)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:547)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:364)
at java.lang.Thread.run(Unknown Source)
Caused by: com.google.gwt.dev.shell.HostedModeException: invoke arguments: JS value of type string, expected int
at com.google.gwt.dev.shell.JsValueGlue.getIntRange(JsValueGlue.java:266)
at com.google.gwt.dev.shell.JsValueGlue.get(JsValueGlue.java:144)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:65)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:338)
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:219)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:576)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:284)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
at com.smartgwt.client.util.JSOHelper.getAttributeAsInt(JSOHelper.java)
at com.smartgwt.client.data.Criterion.getValueAsInteger(Criterion.java:600)
at com.smartgwt.sample.client.DemoRecordSelect$1.onFilterEditorSubmit(DemoRecordSelect.java:64)
at com.smartgwt.client.widgets.grid.events.FilterEditorSubmitEvent.dispatch(FilterEditorSubmitEvent.java:111)
at com.smartgwt.client.widgets.grid.events.FilterEditorSubmitEvent.dispatch(FilterEditorSubmitEvent.java:1)
at com.google.gwt.event.shared.GwtEvent.dispatch(GwtEvent.java:1)
at com.google.web.bindery.event.shared.EventBus.dispatchEvent(EventBus.java:40)
at com.google.web.bindery.event.shared.SimpleEventBus.doFire(SimpleEventBus.java:193)
at com.google.web.bindery.event.shared.SimpleEventBus.fireEvent(SimpleEventBus.java:88)
at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:127)
at com.google.gwt.user.client.ui.Widget.fireEvent(Widget.java:129)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:338)
at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:219)
at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:576)
at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:284)
at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
at com.google.gwt.core.client.impl.Impl.apply(Impl.java)
at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:347)
at sun.reflect.GeneratedMethodAccessor74.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:293)
at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:547)
at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:364)
at java.lang.Thread.run(Unknown Source)Info:
Eclipse Luna
GWT 2.6
Smart GWT: SmartClient Version: v9.1p_2015-08-21/PowerEdition Deployment (built 2015-08-21)
IE8
Classic Dev Mode