Reputation: 3502
when click the insert button(btnSinifEkle),my event fire via OnBeforeRecordInserted="tetikle4".even I click the cancel button,It is already inserted via OnBeforeRecordInserted and shown inside the grid. how I can avoid this.Plus when ever I click insert button ,record shown inside grid,even I dont tell update or cancel.
thank you so much.
<ext:XScript ID="XScript1" runat="server">
<script>
var sinifEkle = function () {
var grid = #{gridSinif};
grid.editingPlugin.cancelEdit();
// Create a record instance through the ModelManager
var r = Ext.ModelManager.create({
SinifAd: 'yeni sınıf',
}, 'Sinif');
grid.store.insert(0, r);
grid.editingPlugin.startEdit(0, 0);
};
var sinifSil = function () {
var grid = #{gridSinif},
sm = grid.getSelectionModel();
grid.editingPlugin.cancelEdit();
grid.store.remove(sm.getSelection());
if (grid.store.getCount() > 0) {
sm.select(0);
}
};
</script>
</ext:XScript>
<ext:GridPanel ID="gridSinif" runat="server" Width="250" Height="300" Title="Sınıf tanımlama"
Frame="true">
<Store>
<ext:Store ID="SinifStore" runat="server" AutomaticResponseValues="false" OnAfterStoreChanged="tetikle"
OnBeforeRecordUpdated="tetikle1" OnBeforeRecordDeleted="tetikle3" AutoSync="true" OnBeforeRecordInserted="tetikle4">
<Model>
<ext:Model ID="Model1" runat="server" IDProperty="SinifId" Name="Sinif">
<Fields>
<ext:ModelField Name="SinifId" Type="Int" />
<ext:ModelField Name="SinifAd" Type="String" />
</Fields>
</ext:Model>
</Model>
</ext:Store>
</Store>
<Plugins>
<ext:RowEditing ID="RowEditing1" runat="server" ClicksToMoveEditor="1" AutoCancel="false" />
</Plugins>
<TopBar>
<ext:Toolbar ID="Toolbar1" runat="server">
<Items>
<ext:Button ID="btnSinifEkle" runat="server" Text="Sınıf ekle" Icon="Add">
<Listeners>
<Click Fn="sinifEkle" />
</Listeners>
</ext:Button>
<ext:Button ID="btnSinifSil" runat="server" Text="Sınıf sil" Icon="Delete" Disabled="true">
<Listeners>
<Click Fn="sinifSil" />
</Listeners>
</ext:Button>
</Items>
</ext:Toolbar>
</TopBar>
<ColumnModel ID="ColumnModel1" runat="server">
<Columns>
<ext:Column ID="Column1" runat="server" Text="ID" DataIndex="SinifId" Width="35" />
<ext:Column ID="Column3" runat="server" Text="Sınıf adı" DataIndex="SinifAd" Flex="1">
<Editor>
<ext:TextField runat="server" />
</Editor>
</ext:Column>
</Columns>
</ColumnModel>
<Listeners>
<SelectionChange Handler="#{btnSinifSil}.setDisabled(!selected.length);" />
</Listeners>
</ext:GridPanel>
Upvotes: 0
Views: 1644
Reputation: 1851
The Store's OnBeforeRecordInserted is called here:
grid.store.insert(0, r);
because you set up AutoSync="true".
To avoid it you should set up AutoSync="false" and call a Store's sync method (client side) when you need.
Upvotes: 1