Hi Vladimir,
<ext:Store ID="Store1" runat="server">
<UpdateProxy>
<ext:HttpWriteProxy Method="POST" Url="mbCenterTab1.ashx" />
</UpdateProxy>
<Reader>
<ext:JsonReader ReaderID="Id">
<Fields>
<ext:RecordField Name="Name" Type="String" />
<ext:RecordField Name="Message" Type="String" />
</Fields>
</ext:JsonReader>
</Reader>
<Listeners>
<LoadException Handler="Ext.Msg.alert('Model Book: Load failed', e.message || response.statusText);" />
<SaveException Handler="Ext.Msg.alert('Model Book: Save', e.message || response.statusText);" />
<CommitDone Handler="Ext.Msg.alert('Model Book: Save', 'Saved successfully !');" />
<CommitFailed Handler="Ext.Msg.alert('Model Book: Error', 'Error: ' + msg);" />
</Listeners>
</ext:Store>
<ext:GridPanel ID="GridPanel1" runat="server" StateId="Store1">
<ColumnModel ID="ctl01" runat="server">
<Columns>
<ext:Column DataIndex="Name" Hidden="true">
</ext:Column>
<ext:Column DataIndex="Message">
<Editor>
<ext:TextArea ID="txtMessage" runat="server" />
</Editor>
</ext:Column>
</Columns>
</ColumnModel>
<BottomBar>
<ext:PagingToolBar ID="PagingToolBar" runat="server" PageSize="20" StoreID="dtaCenterTab1" />
</BottomBar>
<Buttons>
<ext:Button ID="btnInsert_GridPanel1" runat="server" Text="Insert" Icon="Add">
<Listeners>
<Click Handler="var rowIndex = #{GridPanel1}.addRecord(); #{GridPanel1}.getView().focusRow(rowIndex); #{GridPanel1}.startEditing(rowIndex, 0);" />
</Listeners>
</ext:Button>
<ext:Button ID="btnDelete_GridPanel1" runat="server" Text="Delete" Icon="Delete" Disabled="true">
<Listeners>
<Click Handler="#{GridPanel1}.deleteSelected();if (!#{GridPanel1}.hasSelection()) {#{btnDelete_GridPanel1}.disable();}" />
</Listeners>
</ext:Button>
<ext:Button ID="btnSave_GridPanel1" runat="server" Text="Save" Icon="Disk" AutoPostBack="false">
<Listeners>
<Click Handler="#{GridPanel1}.save();" />
</Listeners>
</ext:Button>
</Buttons>
<LoadMask ShowMask="true" />
<SaveMask ShowMask="true" />
</ext:GridPanel>
HttpHandler
using System;
using System.Data.Linq;
using System.Web;
using System.Web.Services;
using Coolite.Ext.Web;
namespace ModelBook.Web.Shared
{
/// <summary>
/// Summary description for $codebehindclassname$
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class mbCenterTab1Save : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
var dataHandler = new StoreDataHandler(context);
var sr = new AjaxResponse(true);
ConfirmationList confirmationList = dataHandler.BuildConfirmationList("MBPId");
try
{
var db = new ModelBookDataContext();
//StoreDataHandler dataHandler = new StoreDataHandler(context);
ChangeRecords<HSFGraphFund> data = dataHandler.ObjectData<HSFGraphFund>();
foreach (HSFGraphFund value in data.Deleted)
{
db.HSFGraphFunds.Attach(value);
db.HSFGraphFunds.DeleteOnSubmit(value);
confirmationList[value.MBPId.ToString()].ConfirmRecord();
}
foreach (HSFGraphFund value in data.Updated)
{
db.HSFGraphFunds.Attach(value);
db.Refresh(RefreshMode.KeepCurrentValues, value);
confirmationList[value.MBPId.ToString()].ConfirmRecord();
}
foreach (HSFGraphFund value in data.Created)
{
db.HSFGraphFunds.InsertOnSubmit(value);
confirmationList[value.MBPId.ToString()].ConfirmRecord();
confirmationList[value.MBPId.ToString()].ConfirmRecord("newId");
}
db.SubmitChanges();
}
catch (Exception e)
{
sr.Success = false;
sr.Msg = e.Message;
}
var response = new StoreResponseData();
response.Confirmation = confirmationList;
sr.Data = response.ToString();
sr.MakeAnswer();
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
Thank You.