Hi,
See my sample I am getting the javascript error after editing the new record.Please tell me where i am doing wrong
Design page is
<%@ Register Assembly="Coolite.Ext.Web" Namespace="Coolite.Ext.Web" TagPrefix="ext" %>
<!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 type="text/javascript">
function getValues(grid) {
var records = [],
values = [];
grid.store.each(function(r) {
if (r.get('ChangeType') === true) {
records.push(r);
}
});
for (i = 0; i < records.length; i++) {
var dataR = grid.store.prepareRecord(records[i].data, records[i], {});
if (!Ext.isEmptyObj(dataR)) {
values.push(dataR);
}
}
return values
}
</script>
<script type="text/javascript">
var getFunctionName = function(value) {
if (value != "")
return storFunction.getById(value).data.FunctionTitle;
else
return "";
};
</script>
</head>
<body>
<form id="form1" runat="server">
<ext:ScriptManager ID="scm" runat="server">
</ext:ScriptManager>
<ext:Store ID="storFunction" runat="server">
<Reader>
<ext:JsonReader ReaderID="FunctionId">
<Fields>
<ext:RecordField Name="FunctionId" Type="Int" />
<ext:RecordField Name="FunctionTitle" Type="String" />
</Fields>
</ext:JsonReader>
</Reader>
<Listeners>
<Load Handler="var o = gpEmp.addRecordEx();o.record.firstEdit=false;" Delay="100" />
</Listeners>
</ext:Store>
<ext:Store ID="storEmp" runat="server">
<Reader>
<ext:JsonReader ReaderID="EmployeeID">
<Fields>
<ext:RecordField Name="ID" Type="Int" />
<ext:RecordField Name="Time" Type="string" />
<ext:RecordField Name="ChangeType" Type="Int" />
</Fields>
</ext:JsonReader>
</Reader>
</ext:Store>
<ext:ViewPort runat="server" ID="parentPanel">
<Body>
<ext:BorderLayout ID="BL" runat="Server">
<Center>
<ext:Panel ID="pnl" runat="Server" Border="false">
<Body>
<ext:GridPanel runat="server" ID="gpEmp" AutoHeight="False" StoreID="storEmp" Floating="true"
Border="true" BodyBorder="true" Header="true" Height="400">
<ColumnModel ID="ColumnModel1" runat="server">
<Columns>
<ext:Column DataIndex="ID" Header="Id" Width="150">
<Renderer Fn="getFunctionName" />
<Editor>
<ext:ComboBox ID="cbDepartments" CtCls="cntrlFont" ListClass="cntrlFont" ReadOnly="true"
runat="server" StoreID="storFunction" DisplayField="FunctionTitle" ValueField="FunctionId"
Mode="Local" AutoPostBack="False" Selectonfocus="true" ForceSelection="True"
TriggerAction="All" />
</Editor>
</ext:Column>
<ext:Column DataIndex="Time" Header="Time">
<Editor>
<ext:TimeField Editable="false" runat="server">
</ext:TimeField>
</Editor>
</ext:Column>
<ext:CheckColumn DataIndex="ChangeType" Hidden="true" Editable="true" Header="ChangeType"
Width="150">
</ext:CheckColumn>
</Columns>
</ColumnModel>
<Listeners>
<AfterEdit Handler="e.record.set('ChangeType', true);if(e.row == (e.gpEmp.store.getCount()-1)){var o = e.gpEmp.addRecordEx();o.record.firstEdit=false;}" />
</Listeners>
<AjaxEvents>
</AjaxEvents>
</ext:GridPanel>
<ext:Button ID="btnAdd" runat="server" Text="Add">
<AjaxEvents>
<Click OnEvent="btnAdd_Click">
<EventMask ShowMask="true" MinDelay="500" Msg="Loading..." />
<ExtraParams>
<ext:Parameter Name="rows" Value="Ext.encode(getValues(gpEmp))" Mode="Raw" />
</ExtraParams>
</Click>
</AjaxEvents>
</ext:Button>
<ext:TimeField ID="TimeField1" Format="H:mm" runat="server">
</ext:TimeField>
</Body>
</ext:Panel>
</Center>
</ext:BorderLayout>
</Body>
</ext:ViewPort>
</form>
</body>
</html>
CodeBehind is
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Coolite.Ext.Web;
using System.Data;
using System.Xml;
public partial class SampleGrid : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Ext.IsAjaxRequest)
{
FillEmpData();
FillFunctonStor();
TimeField1.Value = "12:33";
}
}
private void FillEmpData()
{
DataTable dtEmp = new DataTable();
dtEmp.Columns.Add("ID");
dtEmp.Columns.Add("Time");
dtEmp.Columns.Add("ChangeType");
DataRow dr;
for (int i = 0; i < 10; i++)
{
dr = dtEmp.NewRow();
dr[0] = i.ToString();
dr[1] = "EmpName" + i.ToString();
dr[2] = "0";
dtEmp.Rows.Add(dr);
}
storEmp.DataSource = dtEmp;
storEmp.DataBind();
}
private void FillFunctonStor()
{
DataSet dsFunction = new DataSet();
DataTable dt = new DataTable();
dt.Columns.Add("FunctionId");
dt.Columns.Add("FunctionTitle");
DataRow dr;
for (int i = 0; i < 10; i++)
{
dr = dt.NewRow();
dr[0] = i.ToString();
dr[1] = "E" + i.ToString();
dt.Rows.Add(dr);
}
dsFunction.Tables.Add(dt);
storFunction.DataSource = dsFunction;
storFunction.DataBind();
}
protected void btnAdd_Click(object sender, AjaxEventArgs e)
{
//string s = e.ExtraParams["rows"];
//string TIME = TimeField1.Value.ToString();
DataTable dtEmp = new DataTable();
dtEmp.Columns.Add("ID");
dtEmp.Columns.Add("Time");
dtEmp.Columns.Add("ChangeType");
DataRow dr;
string ID = "";
string Time = "";
string ChangeType = "";
//JSON representation
string gridJson = e.ExtraParams["rows"];
//XML representation
XmlNode gridXml = JSON.DeserializeXmlNode("{records:{record:" + gridJson + "}}");
//array of Dictionaries
Dictionary<string, string>[] grid1Data = JSON.Deserialize<Dictionary<string, string>[]>(gridJson);
foreach (IDictionary<string, string> JColumn in grid1Data)
{
dr = dtEmp.NewRow();
dr[0] = JColumn["ID"];
dr[1]= JColumn["Time"];
dr[2] = JColumn["ChangeType"];
dtEmp.Rows.Add(dr);
}
}
}