Here you go. By default if nothing has been selected, all rows are submitted.
<ext:Store ID="_store1" runat="server" AutoLoad="true" RefreshAfterSaving="None" OnSubmitData="OnSubmitStore1Data">
<Reader>
<ext:JsonReader IDProperty="Id">
<Fields>
<ext:RecordField Name="Id" Type="Int" />
<ext:RecordField Name="Name" Type="String" />
<ext:RecordField Name="Price" Type="String" />
</Fields>
</ext:JsonReader>
</Reader>
<BaseParams>
<ext:Parameter Name="Id" Value="#{_gridPanel}.getSelectionModel().hasSelection() ? #{_gridPanel}.getSelectionModel().getSelected().id : -1" Mode="Raw" />
</BaseParams>
<Listeners>
<LoadException Handler="Ext.MessageBox.alert('Load failed', response.statusText);" />
</Listeners>
</ext:Store>
<ext:GridPanel ID="_gridPanel" runat="server" Frame="false" AutoHeight="true" StripeRows="true" StoreID="_store1" EnableViewState="true">
<ColumnModel ID="_columnModel1" runat="server">
<Columns>
<ext:Column ColumnID="Name" DataIndex="Name" Width="114" Fixed="true" Sortable="true" MenuDisabled="true" />
<ext:Column ColumnID="Price" DataIndex="Price" Width="68" Fixed="true" Sortable="true" MenuDisabled="true" />
</Columns>
</ColumnModel>
<View>
<ext:GridView ID="_gridView1" runat="server" ForceFit="false" />
</View>
<SelectionModel>
<ext:CheckboxSelectionModel ID="_checkboxSelectionModel1" runat="server" HideCheckAll="true" SingleSelect="false" AllowDeselect="true" />
</SelectionModel>
<LoadMask ShowMask="true" Msg="Loading..." />
</ext:GridPanel>
var submitSelectedValues = function() {
<%= _gridPanel.ClientID %>.submitData({selectedOnly : true});
}
<ext:ImageButton ID="_button1" runat="server" OnClientClick="submitSelectedValues();"></ext:ImageButton>
protected void OnSubmitStore1Data(object sender, StoreSubmitDataEventArgs e)
{
var xml = e.Xml;
var xDoc = Xdocument.Load(new XmlNodeReader(xml));
var descendant = xDoc.Elements("records").Descendants("record").ToList();
foreach (var d in descendant)
{
var selectedId = Convert.ToInt32(d.Element("Id").Value);
}
}