Quantcast
Channel: SmartClient Forums
Viewing all articles
Browse latest Browse all 4756

Issues Selecting Record from FilterEditor Search

$
0
0
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:
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

Viewing all articles
Browse latest Browse all 4756

Trending Articles