Dec 25, 2009, 10:38 AM
Deleting record from Grid is not working
Hi,
I have a grind. See below.
Everthing(add/update) has been working but deleting.
Could you please check it. Maybe I am overlooking something very simple? See the attachment as well.
In the .ascx file
<ext:ScriptManager ID="ScriptManager1" runat="server" />
<ext:Store
ID="Store1"
runat="server"
AutoLoad="true"
RemoteSort="true"
OnRefreshData="Store1_RefreshData"
OnBeforeStoreChanged="SaveHandler"
>
<Proxy>
<ext:DataSourceProxy />
</Proxy>
<Reader>
<ext:JsonReader ReaderID="ID">
<Fields>
<%--dummy field for line number--%>
<ext:RecordField Name="RowNumber" Type="Int" />
<ext:RecordField Name="ID" Type="Int" SortType="AsInt" />
<ext:RecordField Name="Name" Type="String" />
<ext:RecordField Name="Title" Type="String" />
<ext:RecordField Name="UserControlName" Type="String"/>
<%--<ext:RecordField Name="Details" Type="String" />--%>
<ext:RecordField Name="Details" Type="String" />
</Fields>
</ext:JsonReader>
</Reader>
<AutoLoadParams>
<ext:Parameter Name="start" Value="0" Mode="Raw" />
<ext:Parameter Name="limit" Value="15" Mode="Raw" />
</AutoLoadParams>
<SortInfo Field="Name" Direction="ASC" />
<Listeners>
<LoadException Handler="Ext.MessageBox.alert('Load failed', response.statusText);" />
</Listeners>
</ext:Store>
<ext:GridPanel
runat="server"
ID="GridPanel1"
Height="570"
Title="Modules"
Frame="true"
StoreID="Store1">
<ColumnModel ID="ColumnModel1" runat="server">
<Columns>
<ext:RowNumbererColumn />
<ext:Column ColumnID="ID" DataIndex="ID" Header="Module ID" Width="75" />
<ext:Column DataIndex="Name" Header="Module Name" Width="150">
<Editor>
<ext:TextField ID="txtName" runat="server">
</ext:TextField>
</Editor>
</ext:Column>
<ext:Column DataIndex="Title" Header="Module Title" Width="150" >
<Editor>
<ext:TextField ID="txtTitle" runat="server">
</ext:TextField>
</Editor>
</ext:Column>
<ext:Column DataIndex="UserControlName" Header="User Control Name" Width="150">
<Editor>
<ext:TextField ID="txtUserControlName" runat="server">
</ext:TextField>
</Editor>
</ext:Column>
<ext:Column
ColumnID="Details"
Header="Details"
Width="50"
Align="Center"
Fixed="true"
MenuDisabled="true"
Resizable="false">
<Renderer Fn="moduleDetailsRender" />
</ext:Column>
</Columns>
</ColumnModel>
<LoadMask ShowMask="true" />
<SaveMask ShowMask="true" />
<%--Add/save record buttons--%>
<TopBar>
<ext:Toolbar ID="Toolbar1" runat="server">
<Items>
<ext:Button ID="Button1" runat="server" Text="Add record" Icon="Add">
<Listeners>
<Click Handler="#{GridPanel1}.insertRecord(0,{});" />
</Listeners>
</ext:Button>
<ext:Button ID="Button2" runat="server" Text="Delete selected" Icon="Delete">
<Listeners>
<Click Handler="#{GridPanel1}.deleteSelected(); #{GridPanel1}.store.load(#{GridPanel1}.store.lastOptions);" />
<%--<Click Handler="#{GridPanel1}.deleteSelected();" />--%>
</Listeners>
</ext:Button>
<ext:ToolbarFill ID="ToolbarFill1" runat="server" />
<ext:Button ID="Button6" runat="server" Text="Save" Icon="Disk">
<Listeners>
<Click Handler="#{GridPanel1}.save(); " />
</Listeners>
</ext:Button>
</Items>
</ext:Toolbar>
</TopBar>
<%--Pagging--%>
<BottomBar>
<ext:PagingToolBar ID="PagingToolBar1" runat="server"
PageSize="15"
DisplayInfo="true"
DisplayMsg="Displaying modules {0} - {1} of {2}"
EmptyMsg="No modules to display"
/>
</BottomBar>
<Listeners>
<CellClick Fn="cellClick" />
<%--<Command Fn="cellClick" />--%>
</Listeners>
<AjaxEvents>
<CellClick OnEvent="ShowDetails" Failure="Ext.MessageBox.alert('Load failed', 'Error during ajax event!');">
<EventMask ShowMask="true" Target="CustomTarget" CustomTarget="={#{GridPanel1}.body}" />
<ExtraParams>
<ext:Parameter Name="id" Value="params[0].getStore().getAt(params[1]).id" Mode="Raw" />
<ext:Parameter Name="recordID" Value="params[0].getStore().getAt(params[1]).data['ID']" Mode="Raw" />
</ExtraParams>
</CellClick>
</AjaxEvents>
<%-- <Listeners>
<Command Handler="Ext.Msg.alert('Command', 'Command = '+ command + '<br/>'+ 'Column = ' + this.getColumnModel().getDataIndex(colIndex));" />
</Listeners>
--%>
</ext:GridPanel>
<uc1:WindowEditor ID="WindowEditor1" runat="server" />
protected void SaveHandler(object sender, BeforeStoreChangedEventArgs e)
{
ChangeRecords<GridRecord> data = e.DataHandler.ObjectData<GridRecord>();
using (testEntities db = new testEntities())
{
foreach (GridRecord t in data.Created)
{
//If Module name is not null
if (t.Name!="")
{
Modules record = new Modules();
record.Name = t.Name;
record.Title = t.Title;
record.UserControlName = t.UserControlName;
db.AddToModules(record);
}
}
foreach (GridRecord t in data.Updated)
{
Modules md = (from mt in db.Modules
where mt.ID == t.ID
select mt).First();
md.Name = t.Name;
md.Title = t.Title;
md.UserControlName = t.UserControlName;
}
foreach (GridRecord t in data.Deleted)
{
Modules md = (from mt in db.Modules
where mt.ID == t.ID
select mt).First();
db.DeleteObject(md);
}
//Save all changes
db.SaveChanges();
}
}
Thank you in advance.