Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    ListGrid Filter Dropping Criteria on Some ListGridFields?

    I'm puzzled: I have ListGrid with a Filter. Depending on which column's Filter Editor is used, sometimes the ListGrid.Criteria is included, and sometimes it's omitted.

    As the Criteria are always required at the OperationBinding (per business rule), changes to some Filter Editors are submitting an incomplete SQL query.

    Here's my ListGrid, with notations re which ListGridFields include/omit the ListGrid Criteria:
    Code:
    ListGrid listGrid = new ListGrid(ds_Requests) {
     // DetailViewer code here...
     {
     setFetchOperation("fetch_ListGrid_onModuleLoad_Filter");
     setAutoFetchData(true);
    
     setShowFilterEditor(true);
     
     // Restrict the ListGrid to show only ORG_IDs the Approver is allowed to see.
     Criteria criteria = new Criteria();
     criteria.addCriteria("ORG_ID_ARRAY", approver.getPermittedOrgIds()); // Integer[]
     
     // Apply the Criteria to the ListGrid...
     setCriteria(criteria);
     // ...and to the ListGrid Filter too
     setFilterEditorCriteria(criteria);
     
     setSelectionAppearance(SelectionAppearance.CHECKBOX);
     setSelectionType(SelectionStyle.SINGLE);
    
     setFields(
    
      // SUCCESS: ListGrid Criteria are included on Filter Search
      // FAIL: ListGrid Criteria are omitted
    
      // Shown Columns
      make_ListGridField_RequestId(), // SUCCESS
    
      make_ListGridField_LeaveCode(), // SUCCESS
    
      make_ListGridField_Name(), // SUCCESS
    
      make_ListGridField_DateTime("STARTDATETIME", "From..."), // FAIL
    
      make_ListGridField_DateTime("ENDDATETIME", "...Thru"), // FAIL
    
      make_ListGridField_DateTime("SUBMITDATETIME", "Submitted"), // FAIL
    
      make_ListGridField_Status(), // w/o FilterEditor SUCCESS, w/ FilterEditor FAIL
    
      make_ListGridField_FormCs180(), // *SUCCESS when assigned non-default Filter Editor
    
      // Hidden Columns
      make_ListGridField_Hidden("EMAIL"), // SUCCESS when shown
    
      make_ListGridField_Hidden("DESCRIPTION"), // SUCCESS when shown
    
      make_ListGridField_Hidden_GroupBy("APPROVER_NAME", "Approver"), // SUCCESS when shown
    
      make_ListGridField_Hidden_GroupBy("SUBGROUP", "Group"), // SUCCESS when shown
    
      make_ListGridField_Hidden("PAYNOPAY"), // SUCCESS when shown
    
      make_ListGridField_Requestor_OrgId(), // N/A: Filter ignores, uses ListGrid Criteria
      // for ORG_ID
    
      make_ListGridField_Hidden("REASON"), // SUCCESS when shown
    
      make_ListGridField_Hidden("NUMHOURS") // SUCCESS when shown
    
      );
     
     groupBy("SUBGROUP", "APPROVER_NAME");
    
     setSortField("STARTDATETIME");
    
      ...
     }
    }
    Here are the ListGridFields for which the ListGrid Criteria are included when their Filter Editor criteria are submitted (SUCCESS):
    Code:
     /****************************** make_ListGridField_RequestId ******************************/
     private ListGridField make_ListGridField_RequestId() {
    
     // Column for REQUESTS.REQUEST_ID
     ListGridField lgf_RequestId = new ListGridField("REQUEST_ID", "Request #") {
      {
    
      setWidth("80px");
      setAlign(Alignment.CENTER);
      setCellAlign(Alignment.RIGHT);
      // setCanEdit(false);
    
      // Column Header Filter Control
      setFilterEditorProperties(new SpinnerItem() {
       {
       setKeyPressFilter("[0-9]");
    
       }
      });
    
      // Add commas for readability, e.g. "1,234"
      setCellFormatter(new CellFormatter() {
    
       @Override
       public String format(Object value, ListGridRecord record, int rowNum, int colNum) {
    
       if (value == null)
        return null;
    
       try {
    
        NumberFormat nf = NumberFormat.getFormat("###,###,###,###");
    
        return nf.format(((Number) value).doubleValue());
    
       } catch (Exception e) {
    
        return value.toString();
    
       }
    
       }
    
      });
    
      }
     };
    
     return lgf_RequestId;
    
     }// make_ListGridField_RequestId
    
     /****************************** make_ListGridField_LeaveCode ******************************/
     private ListGridField make_ListGridField_LeaveCode() {
    
     // Column for REQUESTS.LEAVECODE
     ListGridField lgf_LeaveCode = new ListGridField("LEAVETYPE", "Code") {
      {
      setWidth(80);
      setAlign(Alignment.CENTER);
      setCanEdit(false);
    
      setFilterEditorProperties(new SelectItem() {
       {
    
       setOptionDataSource(ds_LeaveCodes);
       setMultiple(true);
    
       // This SelectItem has three "columns" (ListGridFields)
       // 1) Checkboxes
       setMultipleAppearance(MultipleAppearance.PICKLIST);
    
       // 2) Leave Code (e.g., "VAT")
       final ListGridField lgf_LeaveCode = new ListGridField("LEAVETYPE", "Code");
       lgf_LeaveCode.setWidth(42);
       lgf_LeaveCode.setAlign(Alignment.CENTER);
    
       // 3) Leave Description (e.g., "Vacation Taken")
       final ListGridField lgf_LeaveDescription = new ListGridField("DESCRIPTION");
       lgf_LeaveDescription.setWidth(200);
       lgf_LeaveDescription.setAlign(Alignment.CENTER);
       lgf_LeaveDescription.setCellAlign(Alignment.LEFT);
    
       // Now add the ListGridFields to the SelectItem
       setPickListFields(lgf_LeaveCode, lgf_LeaveDescription);
    
       setSortField("LEAVETYPE");
    
       }
      });
    
      }
     };
    
     return lgf_LeaveCode;
    
     }// make_ListGridField_LeaveCode
    
     /****************************** make_ListGridField_Name ******************************/
     private ListGridField make_ListGridField_Name() {
    
     // Column for EMPLOYEE.NAME
     ListGridField lgf_Name = new ListGridField("NAME", "Requestor") {
      {
    
      setOptionDataSource(ds_Employee);
      // setValueField("EMPLOYEE_ID");
      // setDisplayField("NAME");
    
      setWidth("130px");
      setAlign(Alignment.CENTER);
      setCellAlign(Alignment.LEFT);
      // setCanEdit(false);
    
      setFilterEditorProperties(new SelectItem() {
       {
       setOptionDataSource(ds_Employee);
       setOptionOperationId("filterItem_Names");
       setSortField("NAME"); 
       setMultiple(true);
       setMultipleAppearance(MultipleAppearance.PICKLIST);
       setAllowEmptyValue(true);
       }
      });
    
      }
     };
    
     return lgf_Name;
    
     }// make_ListGridField_Name
     
     /*************************************** make_ListGridField_Hidden ***************************************/
     protected ListGridField make_ListGridField_Hidden(String name) {
    
     // Hidden Column: Data not shown in ListGrid, but available for DetailViewer & Selection Handlers
     ListGridField lgf_Hidden = new ListGridField(name) {
      {
      setHidden(true);
      }
     };
    
     return lgf_Hidden;
     
     }// make_ListGridField_Hidden
    
     /*************************************** make_ListGridField_Hidden_GroupBy ***************************************/
     protected ListGridField make_ListGridField_Hidden_GroupBy(String name, final String groupTitle) {
    
     ListGridField lgf_ApproverName = new ListGridField(name) {
      {
      // Use value for Approve/Disapprove actions, but don't show in ListGrid
      setHidden(true);
    
      // Put 'Title: ' prompt in front of grouped items
      setGroupTitleRenderer(new GroupTitleRenderer() {
    
       @Override
       public String getGroupTitle(Object groupValue,
        com.smartgwt.client.widgets.grid.GroupNode groupNode, ListGridField field,
        String fieldName, ListGrid grid) {
    
       String rowTitle = groupTitle + ":  " + groupValue;
    
       return rowTitle;
       }
    
      });
    
      }
     };
    
     return lgf_ApproverName;
    
     }// make_ListGridField_Hidden_GroupBy
    The DateTime ListGridFields OMIT the ListGrid Criteria when their Filter Editor criteria are submitted (FAIL):
    Code:
     /*************************************** make_ListGridField_DateTime ***************************************/
     protected ListGridField make_ListGridField_DateTime(String name, String title) {
    
     // Column for REQUESTS.STARTDATETIME
     ListGridField lgf_DateTime = new ListGridField(name, title) {
      {
    
      setType(ListGridFieldType.DATE);
      setAlign(Alignment.CENTER);
      setWidth("170px");
      setCanEdit(true);
    
      // Apply Formatter to DateTime column
      setCellFormatter(new CellFormatter() {
       public String format(Object value, ListGridRecord record, int rowNum, int colNum) {
       if (value != null) {
    
        try {
        Date dateValue = (Date) value;
        // Timestamp dateValue = (Timestamp) value; // Nope!
        return dateTimeFormatter.format(dateValue);
        } catch (Exception e) {
        return value.toString();
        }
       } else {
        return "";
       }
       }
      });
    
      }
     };
    
     return lgf_DateTime;
    
     }// make_ListGridField_DateTime
    And here are the ListGridFields for which the ListGrid Criteria may or may not be OMITTED, depending on how their Filter Editors are configured:
    Code:
     /****************************** make_ListGridField_Status ******************************/
     private ListGridField make_ListGridField_Status() {
    
     // Column for REQUESTS.STATUS
     ListGridField lgf_Status = new ListGridField("STATUS") {
      {
    
      setWidth("80px");
      setAlign(Alignment.CENTER);
      // setCanEdit(true);
    
      // SUCCESS: If the Filter Editor is removed, then ListGrid Criteria are included.
      // FAIL: If this Filter Editor is enabled, then ListGrid Criteria are OMITTED.
      setFilterEditorProperties(new SelectItem() {
       {
       setOptionDataSource(ds_Requests);
       setOptionOperationId("filterItem_Status");
       // Override default LIKE operator, lest "approved" also retrieve "disapproved"
       setOperator(OperatorId.EQUALS);
       setSortField("STATUS");
       setMultiple(true);
       setMultipleAppearance(MultipleAppearance.PICKLIST);
       }
      });
    
      }
     };
    
     return lgf_Status;
    
     }// make_ListGridField_Status
    
     /****************************** make_ListGridField_FormCs180 ******************************/
     private ListGridField make_ListGridField_FormCs180() {
    
     // Cool example code re how to place graphic in Column Header:
     // http://www.smartclient.com/smartgwt/showcase/#grid_top_header
     String title_FormCs180;
     title_FormCs180 = Canvas.imgHTML(GWT.getModuleBaseURL() + "Acrobat.png");
    
     // Column for REQUESTS.FORM_CS180
     ListGridField lgf_FormCs180 = new ListGridField("FORM_CS180", title_FormCs180) {
      {
    
      setType(ListGridFieldType.IMAGEFILE);
    
      setAlign(Alignment.CENTER);
    
      // Kludge: Fix column width to be wide enough to show View/Download icons ONLY.
      // Voilą: De facto suppression of '_filename' field text.
      // Posted to SGWT Support Forum as
      // http://forums.smartclient.com/showthread.php?p=95311#post95311
      setWidth("38px");
    
      // Disable remaining built-in column-header controls...
      setCanDragResize(false);
      setCanSort(false);
      setShowDefaultContextMenu(false);
      setShowHover(false);
    
      // Hack: If you setCanFilter(false), the default Filter Editor Type (ViewFileItem File Picker)
      // returns null, which blows up the Filter query. The workaround is to set a non-default
      // Filter Editor Type, then not use it.
      // Posted @ http://forums.smartclient.com/showthread.php?t=28708
      setFilterEditorProperties(new SelectItem());
    
      setCanFilter(false);
      }
     };
    
     return lgf_FormCs180;
    
     }// make_ListGridField_FormCs180
    Here is the OperationBinding:
    Code:
      <operationBinding appScreen="Review" operationType="fetch" operationId="fetch_ListGrid_onModuleLoad_Filter">
      <selectClause> 
        requests.request_id, 
        requests.leavetype, 
        leavecodes.description,
        employee.name,
        requests.startdatetime,
        requests.enddatetime,
        requests.submitdatetime,
        requests.status,
        employee.email,    
        leavecodes.description,
        employee.approver_name,
        org.subgroup,
        requests.FORM_CS180,
        requests.FORM_CS180_date_created,
        requests.FORM_CS180_filename,
        requests.FORM_CS180_filesize,
        requests.paynopay,
        employee.org_id,
        requests.reason,
        requests.numhours
      </selectClause>
      <tableClause> 
        requests 
        JOIN leavecodes ON requests.leavetype = leavecodes.leavetype
        JOIN employee ON requests.employee_id = employee.employee_id
        JOIN org ON employee.org_id = org.org_id
      </tableClause>
      <whereClause> employee.org_id IN ( #foreach($org_id in $criteria.ORG_ID_ARRAY)'$org_id'#if( $velocityCount != $criteria.ORG_ID_ARRAY.size()),#end #end ) 
        AND ${defaultWhereClause}
      </whereClause>
     </operationBinding>
    Here is server log output when the ListGrid Criteria are properly included: "WHERE employee.org_id IN ( '43', '44' )"...
    Code:
    === 2013-12-06 09:03:06,859 [0-15] DEBUG SQLDataSource - [builtinApplication.fetch_ListGrid_onModuleLoad_Filter] JDBC driver windowed select rows 0->75, result size 75. Query: SELECT 
        requests.request_id, 
        requests.leavetype, 
        leavecodes.description,
        employee.name,
        requests.startdatetime,
        requests.enddatetime,
        requests.submitdatetime,
        requests.status,
        employee.email,    
        leavecodes.description,
        employee.approver_name,
        org.subgroup,
        requests.FORM_CS180,
        requests.FORM_CS180_date_created,
        requests.FORM_CS180_filename,
        requests.FORM_CS180_filesize,
        requests.paynopay,
        employee.org_id,
        requests.reason,
        requests.numhours
      FROM 
        requests 
        JOIN leavecodes ON requests.leavetype = leavecodes.leavetype
        JOIN employee ON requests.employee_id = employee.employee_id
        JOIN org ON employee.org_id = org.org_id
      WHERE employee.org_id IN ( '43', '44' ) 
        AND ('1'='1')
    ...and when the ListGrid Criteria are not included: "WHERE employee.org_id IN ( )"...
    Code:
    === 2013-12-06 08:30:21,046 [0-12] INFO SQLDriver - [builtinApplication.fetch_ListGrid_onModuleLoad_Filter] Executing SQL query on 'MyDatabase': SELECT COUNT(*) FROM 
        requests 
        JOIN leavecodes ON requests.leavetype = leavecodes.leavetype
        JOIN employee ON requests.employee_id = employee.employee_id
        JOIN org ON employee.org_id = org.org_id
      WHERE employee.org_id IN ( ) 
        AND (('1'='1' OR '1'='1') AND (REQUESTS.STARTDATETIME >= TO_DATE('2013-12-05 00:00:00','YYYY-MM-DD HH24:MI:SS') AND REQUESTS.STARTDATETIME IS NOT NULL) AND ((REQUESTS.STATUS = 'approved' AND REQUESTS.STATUS IS NOT NULL)))
      
    === 2013-12-06 08:30:21,046 [0-12] WARN RequestContext - dsRequest.execute() failed: 
    java.sql.SQLException: ORA-00936: missing expression
    
     at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:113)
     at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
     at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
     at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:754)
     at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:210)
     at oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:804)
     at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1051)
     at oracle.jdbc.driver.T4CStatement.executeMaybeDescribe(T4CStatement.java:845)
     at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1156)
     at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1315)
     at org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208)
     at com.isomorphic.sql.SQLDriver.getTransformedResults(SQLDriver.java:604)
     at com.isomorphic.sql.SQLDriver.getTransformedResults(SQLDriver.java:533)
     at com.isomorphic.sql.SQLDriver.getTransformedResults(SQLDriver.java:526)
     at com.isomorphic.sql.SQLDriver.getScalarResult(SQLDriver.java:690)
     at com.isomorphic.sql.SQLDriver.executeScalar(SQLDriver.java:924)
     at com.isomorphic.sql.SQLDataSource.runRowCountQuery(SQLDataSource.java:2463)
     at com.isomorphic.sql.SQLDataSource.executeWindowedSelect(SQLDataSource.java:1887)
     at com.isomorphic.sql.SQLDataSource.SQLExecute(SQLDataSource.java:1542)
     at com.isomorphic.sql.SQLDataSource.processRequest(SQLDataSource.java:408)
     at com.isomorphic.sql.SQLDataSource.executeFetch(SQLDataSource.java:352)
     at com.isomorphic.datasource.DataSource.execute(DataSource.java:1447)
     at com.isomorphic.application.AppBase.executeDefaultDSOperation(AppBase.java:723)
     at com.isomorphic.application.AppBase.executeAppOperation(AppBase.java:658)
     at com.isomorphic.application.AppBase.execute(AppBase.java:491)
     at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:2431)
     at com.isomorphic.servlet.IDACall.handleDSRequest(IDACall.java:215)
     at com.isomorphic.servlet.IDACall.processRPCTransaction(IDACall.java:172)
     at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:137)
     at com.isomorphic.servlet.IDACall.doPost(IDACall.java:73)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
     at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:152)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
     at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
     at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1097)
     at com.isomorphic.servlet.CompressionFilter.doFilter(CompressionFilter.java:260)
     at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088)
     at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
     at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
     at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
     at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
     at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
     at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
     at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
     at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
     at org.mortbay.jetty.Server.handle(Server.java:324)
     at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
     at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
     at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
     at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205)
     at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
     at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
     at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
    Here is SGWT Console RPC info from a Filter query with FAILURE status:

    REQUEST: RPCRequest
    Code:
    {
        "actionURL":"http://localhost:8888/AbsenceRequestOnline/sc/IDACall", 
        "showPrompt":true, 
        "prompt":"Finding Records that match your criteria...", 
        "transport":"xmlHttpRequest", 
        "promptStyle":"cursor", 
        "bypassCache":true, 
        "data":{
      "criteria":{
          "operator":"and", 
          "_constructor":"AdvancedCriteria", 
          "criteria":[
        {
            "fieldName":"STARTDATETIME", 
            "operator":"greaterOrEqual", 
            "value":"2013-12-05"
        }, 
        {
            "operator":"iContains", 
            "fieldName":"ORG_ID_ARRAY", 
            "value":[
          43, 
          44
            ]
        }
          ]
      }, 
      "operationConfig":{
          "dataSource":"REQUESTS", 
          "repo":null, 
          "operationType":"fetch", 
          "textMatchStyle":"substring"
      }, 
      "startRow":0, 
      "endRow":75, 
      "componentId":"isc_Demo_ListGridFilter_4_0", 
      "appID":"builtinApplication", 
      "operation":"fetch_ListGrid_onModuleLoad_Filter", 
      "oldValues":{
          "operator":"and", 
          "_constructor":"AdvancedCriteria", 
          "criteria":[
        {
            "fieldName":"STARTDATETIME", 
            "operator":"greaterOrEqual", 
            "value":"2013-12-05"
        }, 
        {
            "operator":"iContains", 
            "fieldName":"ORG_ID_ARRAY", 
            "value":[
          43, 
          44
            ]
        }
          ]
      }
        }
    }
    REQUEST: Raw
    Code:
    isc_tnum=3&_transaction=%3Ctransaction%20xmlns%3Axsi%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2F10%2FXMLSchema-instance%22%20xsi%3Atype%3D%22xsd%3AObject%22%3E%3CtransactionNum%20xsi%3Atype%3D%22xsd%3Along%22%3E3%3C%2FtransactionNum%3E%3Coperations%20xsi%3Atype%3D%22xsd%3AList%22%3E%3Celem%20xsi%3Atype%3D%22xsd%3AObject%22%3E%3Ccriteria%20xsi%3Atype%3D%22xsd%3AObject%22%3E%3Coperator%3Eand%3C%2Foperator%3E%3C_constructor%3EAdvancedCriteria%3C%2F_constructor%3E%3Ccriteria%20xsi%3Atype%3D%22xsd%3AList%22%3E%3Celem%20xsi%3Atype%3D%22xsd%3AObject%22%3E%3CfieldName%3ESTARTDATETIME%3C%2FfieldName%3E%3Coperator%3EgreaterOrEqual%3C%2Foperator%3E%3Cvalue%20xsi%3Atype%3D%22xsd%3Adate%22%3E2013-12-05%3C%2Fvalue%3E%3C%2Felem%3E%3Celem%20xsi%3Atype%3D%22xsd%3AObject%22%3E%3Coperator%3EiContains%3C%2Foperator%3E%3CfieldName%3EORG_ID_ARRAY%3C%2FfieldName%3E%3Cvalue%20xsi%3Atype%3D%22xsd%3AList%22%3E%3Celem%20xsi%3Atype%3D%22xsd%3Along%22%3E43%3C%2Felem%3E%3Celem%20xsi%3Atype%3D%22xsd%3Along%22%3E44%3C%2Felem%3E%3C%2Fvalue%3E%3C%2Felem%3E%3C%2Fcriteria%3E%3C%2Fcriteria%3E%3CoperationConfig%20xsi%3Atype%3D%22xsd%3AObject%22%3E%3CdataSource%3EREQUESTS%3C%2FdataSource%3E%3CoperationType%3Efetch%3C%2FoperationType%3E%3CtextMatchStyle%3Esubstring%3C%2FtextMatchStyle%3E%3C%2FoperationConfig%3E%3CstartRow%20xsi%3Atype%3D%22xsd%3Along%22%3E0%3C%2FstartRow%3E%3CendRow%20xsi%3Atype%3D%22xsd%3Along%22%3E75%3C%2FendRow%3E%3CcomponentId%3Eisc_Demo_ListGridFilter_4_0%3C%2FcomponentId%3E%3CappID%3EbuiltinApplication%3C%2FappID%3E%3Coperation%3Efetch_ListGrid_onModuleLoad_Filter%3C%2Foperation%3E%3ColdValues%20xsi%3Atype%3D%22xsd%3AObject%22%3E%3Coperator%3Eand%3C%2Foperator%3E%3C_constructor%3EAdvancedCriteria%3C%2F_constructor%3E%3Ccriteria%20xsi%3Atype%3D%22xsd%3AList%22%3E%3Celem%20xsi%3Atype%3D%22xsd%3AObject%22%3E%3CfieldName%3ESTARTDATETIME%3C%2FfieldName%3E%3Coperator%3EgreaterOrEqual%3C%2Foperator%3E%3Cvalue%20xsi%3Atype%3D%22xsd%3Adate%22%3E2013-12-05%3C%2Fvalue%3E%3C%2Felem%3E%3Celem%20xsi%3Atype%3D%22xsd%3AObject%22%3E%3Coperator%3EiContains%3C%2Foperator%3E%3CfieldName%3EORG_ID_ARRAY%3C%2FfieldName%3E%3Cvalue%20xsi%3Atype%3D%22xsd%3AList%22%3E%3Celem%20xsi%3Atype%3D%22xsd%3Along%22%3E43%3C%2Felem%3E%3Celem%20xsi%3Atype%3D%22xsd%3Along%22%3E44%3C%2Felem%3E%3C%2Fvalue%3E%3C%2Felem%3E%3C%2Fcriteria%3E%3C%2FoldValues%3E%3C%2Felem%3E%3C%2Foperations%3E%3C%2Ftransaction%3E&protocolVersion=1.0
    REQUEST: DSRequest
    Code:
    {
        dataSource:"REQUESTS", 
        operationType:"fetch", 
        operationId:"fetch_ListGrid_onModuleLoad_Filter", 
        componentId:"isc_Demo_ListGridFilter_4_0", 
        data:{
      operator:"and", 
      criteria:[
          {
        fieldName:"STARTDATETIME", 
        operator:"greaterOrEqual", 
        value:"2013-12-05"
          }, 
          {
        operator:"iContains", 
        fieldName:"ORG_ID_ARRAY", 
        value:[
            43, 
            44
        ]
          }
      ]
        }, 
        startRow:0, 
        endRow:75, 
        textMatchStyle:"substring", 
        resultSet:[ResultSet ID:isc_ResultSet_0 (created by: isc_Demo_ListGridFilter_4_0)], 
        callback:{
      caller:[ResultSet ID:isc_ResultSet_0 (created by: isc_Demo_ListGridFilter_4_0)], 
      methodName:"fetchRemoteDataReply"
        }, 
        willHandleError:true, 
        showPrompt:true, 
        prompt:"Finding Records that match your criteria...", 
        oldValues:{
      operator:"and", 
      criteria:[
          {
        fieldName:"STARTDATETIME", 
        operator:"greaterOrEqual", 
        value:"2013-12-05"
          }, 
          {
        operator:"iContains", 
        fieldName:"ORG_ID_ARRAY", 
        value:[
            43, 
            44
        ]
          }
      ]
        }, 
        requestId:"REQUESTS$6275", 
        clientContext:{
      requestIndex:2
        }, 
        fallbackToEval:false, 
        lastClientEventThreadCode:"TMR7", 
        bypassCache:true
    }
    RESPONSE: Raw
    Code:
    [
        {
      data:"ORA-00936: missing expression\n", 
      invalidateCache:false, 
      isDSResponse:true, 
      queueStatus:-1, 
      status:-1
        }
    ]
    Your guidance is appreciated, thanks.

    ---------------------------------

    SmartClient Version: v9.0p_2013-12-01/PowerEdition Deployment (built 2013-12-01)

    IE 8
Working...
X