Jul 21, 2010, 2:37 PM
Gridpanel delete a record with rowcommand
I am trying to delete a rocrodr from gridpanle and underliyng datastore . IHow can send record id to remove ajax event. My code follows:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="kpi.aspx.cs" Inherits="ANT.Application.Performance.kpi" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="Resources/lib.js" type="text/javascript"></script>
<script type="text/javascript">
var template = '<span style="color:{0};">{1}</span>';
var change = function (value) {
return String.format(template, (value > 0) ? 'green' : 'red', value);
}
var pctChange = function (value) {
return String.format(template, (value > 0) ? 'green' : 'red', value + '%');
}
var rowcommand = function (command, id) {
if (command == "Delete") {
Ext.Msg.confirm("Sil", "Emin misiniz?");
Ext.Msg.confirm('Kayıt Sil',
'Emin misiniz?',
function (btn) {
if (btn == 'yes') {
var store = GridPanel1.store;
store.remove(id);
//GridPanel1.deleteSelected();
}
}, this, { stopEvent: true });
}
}
var beforedelete = function(ar) {
var args = arguments;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<ext:ScriptManager ID="ScriptManager1" runat="server" ScriptMode="Debug">
</ext:ScriptManager>
<div>
<ext:Store ID="Store1" runat="server">
<Reader>
<ext:JsonReader ReaderID="Id">
<Fields>
<ext:RecordField Name="Id" />
<ext:RecordField Name="Name" />
</Fields>
</ext:JsonReader>
</Reader>
<AjaxEvents>
<Remove>
<EventMask ShowMask="true" />
</Remove>
</AjaxEvents>
<Listeners>
<LoadException Handler="var e = e || {message: response.statusText}; alert('Load failed: ' + e.message);" />
<SaveException Handler="alert('save failed');" />
<CommitDone Handler="alert('commit success');" />
<CommitFailed Handler="alert('Commit failed\nReason: '+msg)" />
</Listeners>
</ext:Store>
<ext:Store ID="ProsessModelStore" runat="server">
<Reader>
<ext:JsonReader>
<Fields>
<ext:RecordField Name="Id" />
<ext:RecordField Name="Name" />
</Fields>
</ext:JsonReader>
</Reader>
</ext:Store>
<ext:Panel ID="Panel1" runat="server" Height="500" AutoWidth="true" HideBorders="true">
<Body>
<ext:BorderLayout runat="server">
<West>
<ext:GridPanel ID="GridPanel1" runat="server" StoreID="Store1" StripeRows="true"
Title="Grid" TrackMouseOver="true" Width="500" AutoExpandColumn="Name">
<ColumnModel>
<Columns>
<ext:Column ColumnID="Id" Header="Id" Width="160" Sortable="true" DataIndex="Id" />
<ext:Column ColumnID="Name" Header="KPI Adı" Width="160" Sortable="true" DataIndex="Name" />
<ext:CommandColumn Width="60">
<Commands>
<ext:GridCommand Icon="Delete" CommandName="Delete">
<ToolTip Text="Sil" />
</ext:GridCommand>
<ext:CommandSeparator />
<ext:GridCommand Icon="NoteEdit" CommandName="Edit">
<ToolTip Text="Düzenle" />
</ext:GridCommand>
</Commands>
</ext:CommandColumn>
</Columns>
</ColumnModel>
<SelectionModel>
<ext:RowSelectionModel ID="RowSelectionModel1" runat="server" SingleSelect="true">
<Listeners>
<RowSelect Handler="#{FormPanel1}.getForm().loadRecord(record);" />
</Listeners>
</ext:RowSelectionModel>
</SelectionModel>
<Listeners>
<Command Handler="rowcommand(command, record);" />
</Listeners>
<LoadMask ShowMask="true" />
</ext:GridPanel>
</West>
<Center>
<ext:FormPanel ID="FormPanel1" runat="server" BodyStyle="padding:5px;" ButtonAlign="Right"
Frame="true" AutoHeight="true" AutoWidth="true" Title="KPI Düzenlemesi" Width="300">
<Body>
<ext:FormLayout ID="FormLayout1" runat="server" LabelPad="10">
<ext:Anchor>
<ext:TextField ID="Name" runat="server" FieldLabel="KPI Adı" DataIndex="Name" AllowBlank="false"
BlankText="Lütfen Key Performance Indicator İsmini Giriniz.">
</ext:TextField>
</ext:Anchor>
<ext:Anchor>
<ext:TextArea ID="Desc" runat="server" FieldLabel="Açıklama">
</ext:TextArea>
</ext:Anchor>
<ext:Anchor>
<ext:ComboBox ID="ProsessModel" runat="server" StoreID="ProsessModelStore" BlankText="Bu alan gereklidir."
DisplayField="Name" ValueField="Id" ForceSelection="true" Editable="false" FieldLabel="Hesaplama Modeli"
EmptyText="Seçiniz.." AllowBlank="false">
</ext:ComboBox>
</ext:Anchor>
<ext:Anchor>
<ext:ComboBox ID="Period" runat="server" EmptyText="Seçiniz.." AllowBlank="false"
BlankText="Bu alan gereklidir." ForceSelection="true" Editable="false" TypeAhead="true"
Mode="Local" SelectOnFocus="true" FieldLabel="Hesaplama Periyodu">
<Items>
<ext:ListItem Text="Günlük" Value="1"></ext:ListItem>
<ext:ListItem Text="Aylık" Value="30"></ext:ListItem>
</Items>
</ext:ComboBox>
</ext:Anchor>
</ext:FormLayout>
</Body>
<Buttons>
<ext:Button ID="btnSave" runat="server" Text="Submit" Icon="Disk" CausesValidation="true">
<AjaxEvents>
<Click Before="return DoWork(FormPanel1);" Success="DoWorkHide(FormPanel1);" Failure="DoWorkHideFailed(FormPanel1);">
</Click>
</AjaxEvents>
</ext:Button>
</Buttons>
</ext:FormPanel>
</Center>
</ext:BorderLayout>
</Body>
</ext:Panel>
</div>
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ANT.Application.Performance;
using System.Collections;
using Coolite.Ext.Web;
using ANT.Web.Framework.EntitySchema;
using System.Data.Objects;
namespace ANT.Application.Performance
{
public partial class kpi : EditPage<ANT.Web.Framework.EntitySchema.KPI>
{
public void Remove_Event(object sender, AjaxEventArgs e)
{
// delete code comes
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Ext.IsAjaxRequest)
{
using (PerformanceContainer ctx = new PerformanceContainer())
{
string eSql = @"SELECT VALUE KPI
FROM PerformanceContainer.KPI as kpi
ORDER BY kpi.Name";
ObjectQuery<KPI> productQuery = ctx.CreateQuery<KPI>(eSql);
using (ObjectResult<KPI> result =
productQuery.Execute(MergeOption.AppendOnly))
{
List<KPI> products = result.ToList<KPI>();
this.Store1.DataSource = products;
this.Store1.DataBind();
}
}
ArrayList list = new ArrayList();
list.AddRange(
new ANT.Application.Performance.ProsessModel[]
{
new ANT.Application.Performance.ProsessModel
{ Id = 1, Name = "Doğru Orantılı" },
new ANT.Application.Performance.ProsessModel { Id = 2, Name = "Ters Orantılı" },
new ANT.Application.Performance.ProsessModel
{ Id = 3, Name = "Parabolik" }
}
);
ProsessModelStore.DataSource = list;
ProsessModelStore.DataBind();
}
}
}
class ProsessModel
{
public int Id { get; set; }
public string Name { get; set; }
}
}