<ext:GridPanel ID="GridPanel1" runat="server" Title="Saisie des besoins de production (dose)" Css="width:auto;"
Frame="true" TrackMouseOver="true" StripeRows="True" Collapsible="True" Height="300"
FormGroup="True" ClicksToEdit="1" ColumnLines="True" AutoExpandColumn="Comment">
<Store>
<ext:Store ID="Store1" runat="server" RemoteSort="true" OnRefreshData="Store1_RefreshData">
<Proxy>
<ext:PageProxy />
</Proxy>
<AutoLoadParams>
<ext:Parameter Name="start" Value="0" Mode="Raw" />
<ext:Parameter Name="limit" Value="10" Mode="Raw" />
</AutoLoadParams>
<BaseParams>
<ext:Parameter Name="sort" Value="" />
<ext:Parameter Name="dir" Value="" />
</BaseParams>
<Reader>
</Reader>
<SortInfo Field="VarietyGroupName" Direction="ASC" />
<Listeners>
<LoadException Handler="var e = e || {message: response.responseText}; alert('Load failed: ' + e.message);" />
<SaveException Handler="alert('Echec Sauvegarde');" />
<CommitDone Handler="alert('Sauvegarde réussie');" />
<CommitFailed Handler="alert('Commit failed\nReason: '+msg)" />
</Listeners>
</ext:Store>
</Store>
<SelectionModel>
<ext:CheckboxSelectionModel ID="CheckboxSelectionModel1" runat="server">
<Listeners>
<RowSelect Handler="#{btnDelete}.enable();" />
<RowDeselect Handler="if (!#{GridPanel1}.hasSelection()) {#{btnDelete}.disable();}" />
</Listeners>
</ext:CheckboxSelectionModel>
</SelectionModel>
<TopBar>
<ext:Toolbar ID="Toolbar1" runat="server" Css="width:auto;">
<Items>
<ext:Button ID="btnAffect" runat="server" Text="Affecter au bassin principal">
<Listeners>
</Listeners>
</ext:Button>
<ext:Button ID="btnAdd" runat="server" Text="Ajouter" Icon="BellAdd">
<Listeners>
<Click Handler="var rowIndex = #{GridPanel1}.addRecord(); #{GridPanel1}.getView().focusRow(rowIndex); #{GridPanel1}.startEditing(rowIndex, 0);" />
<%--<Click Handler="var rowIndex = #{GridPanel1}.insertRecord(0, {});#{GridPanel1}.getView().focusRow(0);#{GridPanel1}.startEditing(0, 0);" />--%>
</Listeners>
</ext:Button>
<ext:Button ID="btnDelete" runat="server" Text="Supprimer" Icon="BellDelete" Disabled="true">
<Listeners>
<Click Handler="#{GridPanel1}.deleteSelected();if (!#{GridPanel1}.hasSelection()) {#{btnDelete}.disable();}" />
</Listeners>
</ext:Button>
</Items>
</ext:Toolbar>
</TopBar>
<BottomBar>
<ext:PagingToolbar ID="PagingToolbar1" runat="server" PageSize="10" Css="width:auto;"/>
</BottomBar>
<LoadMask ShowMask="true" />
<SaveMask ShowMask="true" />
<Plugins>
<ext:GridFilters runat="server" ID="GridFilters1">
<Filters>
<ext:StringFilter DataIndex="VarietyGroupName" />
<ext:NumericFilter DataIndex="ProductionDoseNeeded" />
<ext:NumericFilter DataIndex="OtherNeeds" />
<ext:NumericFilter DataIndex="TotalNeeds" />
<ext:NumericFilter DataIndex="TotalDoseAffected" />
<ext:NumericFilter DataIndex="Ecart" />
<ext:StringFilter DataIndex="Comment" />
</Filters>
</ext:GridFilters>
</Plugins>
<Listeners>
<AfterEdit Handler="e.record.set('TotalNeeds', parseInt(e.record.data.ProductionDoseNeeded) + parseInt(e.record.data.OtherNeeds)); e.record.set('Ecart', e.record.data.TotalDoseAffected - (e.record.data.OtherNeeds + e.record.data.ProductionDoseNeeded));" />
</Listeners>
</ext:GridPanel>
and in my code behind i'd have something like this :
GridPanel1.Store[0].Reader.Add(jread);
GridPanel1.ColumnLines = true;
GridPanel1.BodyCssClass = "width:auto;";
....
ColumnModel colMod = new ColumnModel();
colMod.ID = "ColumnModel1";
Column col = new Column();
col.ColumnID = "GROUP_VAR";
col.Width = 120;
col.Header = "Groupe de variétés";
col.DataIndex = "VarietyGroupName";
col.Sortable = true;
col.Editable = true;
col.Css = "width:auto";