diff --git a/bundles/org.eclipse.rap.nebula.widgets.grid/src/org/eclipse/nebula/widgets/grid/internal/gridkit/GridLCA.java b/bundles/org.eclipse.rap.nebula.widgets.grid/src/org/eclipse/nebula/widgets/grid/internal/gridkit/GridLCA.java
index c531ad6..6ca5335 100644
--- a/bundles/org.eclipse.rap.nebula.widgets.grid/src/org/eclipse/nebula/widgets/grid/internal/gridkit/GridLCA.java
+++ b/bundles/org.eclipse.rap.nebula.widgets.grid/src/org/eclipse/nebula/widgets/grid/internal/gridkit/GridLCA.java
@@ -19,6 +19,7 @@
 import static org.eclipse.rap.rwt.lifecycle.WidgetLCAUtil.readEventPropertyValue;
 import static org.eclipse.rap.rwt.lifecycle.WidgetLCAUtil.renderListener;
 import static org.eclipse.rap.rwt.lifecycle.WidgetLCAUtil.renderProperty;
+import static org.eclipse.rap.rwt.lifecycle.WidgetUtil.getId;
 
 import java.io.IOException;
 
@@ -30,6 +31,7 @@
 import org.eclipse.rap.rwt.internal.protocol.ClientObjectFactory;
 import org.eclipse.rap.rwt.internal.protocol.IClientObject;
 import org.eclipse.rap.rwt.internal.protocol.ClientMessageConst;
+import org.eclipse.rap.rwt.internal.protocol.ProtocolUtil;
 import org.eclipse.rap.rwt.internal.util.NumberFormatUtil;
 import org.eclipse.rap.rwt.lifecycle.AbstractWidgetLCA;
 import org.eclipse.rap.rwt.lifecycle.ControlLCAUtil;
@@ -95,7 +97,7 @@
     Grid grid = ( Grid )widget;
     IClientObject clientObject = ClientObjectFactory.getClientObject( grid );
     clientObject.create( TYPE );
-    clientObject.set( "parent", WidgetUtil.getId( grid.getParent() ) );
+    clientObject.set( "parent", getId( grid.getParent() ) );
     clientObject.set( "style", WidgetLCAUtil.getStyles( grid, ALLOWED_STYLES ) );
     clientObject.set( "appearance", "tree" );
     IGridAdapter adapter = getGridAdapter( grid );
@@ -196,9 +198,8 @@
   // Helping methods to read client-side state
 
   private static void readSelection( Grid grid ) {
-    String value = WidgetLCAUtil.readPropertyValue( grid, "selection" );
-    if( value != null ) {
-      String[] values = value.split( "," );
+    String[] values = ProtocolUtil.readPropertyValueAsStringArray( getId( grid ), "selection" );
+    if( values != null ) {
       GridItem[] selectedItems = new GridItem[ values.length ];
       boolean validItemFound = false;
       for( int i = 0; i < values.length; i++ ) {
@@ -291,7 +292,7 @@
     GridItem[] selection = grid.getSelection();
     String[] result = new String[ selection.length ];
     for( int i = 0; i < result.length; i++ ) {
-      result[ i ] = WidgetUtil.getId( selection[ i ] );
+      result[ i ] = getId( selection[ i ] );
     }
     return result;
   }
diff --git a/tests/org.eclipse.rap.nebula.widgets.grid.test/src/org/eclipse/nebula/widgets/grid/internal/gridkit/GridLCA_Test.java b/tests/org.eclipse.rap.nebula.widgets.grid.test/src/org/eclipse/nebula/widgets/grid/internal/gridkit/GridLCA_Test.java
index a4935df..fdef84e 100644
--- a/tests/org.eclipse.rap.nebula.widgets.grid.test/src/org/eclipse/nebula/widgets/grid/internal/gridkit/GridLCA_Test.java
+++ b/tests/org.eclipse.rap.nebula.widgets.grid.test/src/org/eclipse/nebula/widgets/grid/internal/gridkit/GridLCA_Test.java
@@ -851,7 +851,7 @@
     Fixture.fakeNewRequest( display );
     Fixture.fakeSetParameter( getId( grid ),
                               "selection",
-                              getId( items[ 0 ] ) + "," + getId( items[ 2 ] ) );
+                              new String[] { getId( items[ 0 ] ), getId( items[ 2 ] ) } );
     Fixture.readDataAndProcessAction( grid );
 
     GridItem[] selectedItems = grid.getSelection();
@@ -867,7 +867,7 @@
     Fixture.fakeNewRequest( display );
     Fixture.fakeSetParameter( getId( grid ),
                               "selection",
-                              getId( items[ 0 ] ) + "," + getId( items[ 2 ] ) );
+                              new String[] { getId( items[ 0 ] ), getId( items[ 2 ] ) } );
     Fixture.readDataAndProcessAction( grid );
 
     GridItem[] selectedItems = grid.getSelection();
