Hi,
I am sending the sample.Run the sample and change the sum columns in the grid and then change the radio button,check the previously changed columns.
design
[CODE]
<%@ 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">
var getProductName = function(value) {
if (value != "")
return storProject.getById(value).data.Name;
else
return "";
};
var getProductTitle = function(value) {
if (value != "")
return storProject.getById(value).data.Title;
else
return "";
};
</script>
<script type="text/javascript">
function getValues(grid) {
var records = [],
values = [];
grid.store.each(function(r) {
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>
</head>
<body>
<form id="form2" runat="server">
<ext:ScriptManager ID="scm" runat="server">
</ext:ScriptManager>
<ext:Store ID="storProject" runat="server">
<Reader>
<ext:JsonReader ReaderID="Id">
<Fields>
<ext:RecordField Name="Id" Type="Int" />
<ext:RecordField Name="Title" Type="String" />
<ext:RecordField Name="Name" Type="String" />
</Fields>
</ext:JsonReader>
</Reader>
</ext:Store>
<ext:Store ID="storData" runat="server">
<Reader>
<ext:JsonReader ReaderID="ProjectID">
<Fields>
<ext:RecordField Name="ProjectID" Type="Int" />
<ext:RecordField Name="ProjectID1" Type="Int" />
<ext:RecordField Name="Hours" Type="String" />
<ext:RecordField Name="Minutes" Type="String" />
<ext:RecordField Name="Seconds" Type="String" />
</Fields>
</ext:JsonReader>
</Reader>
</ext:Store>
<ext:Radio ID="rbtnShowHours" runat="server" BoxLabel="ShowHours">
<AjaxEvents>
<Check Before="return checked;" OnEvent="rbtnShowHours_Click">
</Check>
</AjaxEvents>
</ext:Radio>
<ext:Radio ID="rbtnHideHours" runat="server" BoxLabel="HideHours">
<AjaxEvents>
<Check Before="return ;" OnEvent="rbtnHideHours_Click">
</Check>
</AjaxEvents>
</ext:Radio>
<ext:GridPanel runat="server" ID="gpEmp" AutoHeight="False" StoreID="storData" Floating="true"
Border="true" BodyBorder="true" Header="true" Height="400">
<ColumnModel ID="ColumnModel1" runat="server">
<Columns>
<ext:Column DataIndex="ProjectID" Header="Project Title">
<Renderer Fn="getProductTitle" />
<Editor>
<ext:ComboBox ID="cbProjectTitle" CtCls="cntrlFont" ListClass="cntrlFont" ReadOnly="true"
runat="server" StoreID="storProject" DisplayField="Title" ValueField="Id" Mode="Local"
AutoPostBack="False" Selectonfocus="true" ForceSelection="True" TriggerAction="All" />
</Editor>
</ext:Column>
<ext:Column DataIndex="ProjectID" Header="Project Name">
<Renderer Fn="getProductName" />
<Editor>
<ext:ComboBox ID="cbProjectName" CtCls="cntrlFont" ListClass="cntrlFont" ReadOnly="true"
runat="server" StoreID="storProject" DisplayField="Name" ValueField="Id" Mode="Local"
AutoPostBack="False" Selectonfocus="true" ForceSelection="True" TriggerAction="All" />
</Editor>
</ext:Column>
<ext:Column DataIndex="Hours" Header="Hours">
<Editor>
<ext:TimeField runat="server" Format="H:mm" Editable="true">
</ext:TimeField>
</Editor>
</ext:Column>
<ext:Column DataIndex="Minutes" Header="Minutes">
<Editor>
<ext:TimeField runat="server" Format="H:mm" Editable="true">
</ext:TimeField>
</Editor>
</ext:Column>
<ext:Column DataIndex="Seconds" Header="Seconds">
<Editor>
<ext:TimeField runat="server" Format="H:mm" Editable="true">
</ext:TimeField>
</Editor>
</ext:Column>
</Columns>
</ColumnModel>
<AjaxEvents>
<AfterEdit OnEvent="AfterEdit">
<ExtraParams>
<ext:Parameter Name="id" Value="e.record.id" Mode="Raw" />
<ext:Parameter Name="projectID" Value="e.record.data.ProjectID" Mode="Raw" />
</ExtraParams>
</AfterEdit>
</AjaxEvents>
</ext:GridPanel>
<ext:Button ID="btnAdd" Text="ADD" runat="server">
<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>
</form>
</body>
</html>
code behind
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using Coolite.Ext.Web;
public partial class SampleGridChange : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Ext.IsAjaxRequest)
{
rbtnShowHours.Checked = true;
fillProjectStore();
fillDataStore();
}
}
private void fillProjectStore()
{
DataTable dtproject = new DataTable();
dtproject.Columns.Add("Id");
dtproject.Columns.Add("Title");
dtproject.Columns.Add("Name");
DataRow dr;
for (int i = 0; i < 10; i++)
{
dr = dtproject.NewRow();
dr[0] = i.ToString();
dr[1] = "Title" + i.ToString();
dr[2] = "Name" + i.ToString();
dtproject.Rows.Add(dr);
}
storProject.DataSource = dtproject;
storProject.DataBind();
}
private void fillDataStore()
{
DataTable dtData = new DataTable();
dtData.Columns.Add("ProjectID");
dtData.Columns.Add("ProjectID1");
dtData.Columns.Add("Hours");
dtData.Columns.Add("Minutes");
dtData.Columns.Add("Seconds");
DataRow dr;
for (int i = 0; i < 10; i++)
{
dr = dtData.NewRow();
dr[0] = i.ToString();
dr[1] = i.ToString();
dr[2] = "00:" + i.ToString();
dr[3] = "10:" + i.ToString();
dr[4] = "15:" + i.ToString();
dtData.Rows.Add(dr);
}
storData.DataSource = dtData;
storData.DataBind();
if (Ext.IsAjaxRequest)
{
if (rbtnShowHours.Checked)
{
gpEmp.ColumnModel.Columns[2].Hidden = false;
gpEmp.Reconfigure();
}
else
{
gpEmp.ColumnModel.Columns[2].Hidden = true;
gpEmp.Reconfigure();
}
}
}
protected void btnAdd_Click(object sender, AjaxEventArgs e)
{
fillDataStore();
}
private void UpdateRecordField(object id, string dataIndex, object value)
{
storData.AddScript("{0}.getById({1}).set({2},{3});", storData.ClientID, JSON.Serialize(id), JSON.Serialize(dataIndex), JSON.Serialize(value));
}
protected void AfterEdit(object sender, AjaxEventArgs e)
{
DataTable dtData = new DataTable();
dtData.Columns.Add("ProjectID");
dtData.Columns.Add("ProjectID1");
dtData.Columns.Add("Hours");
dtData.Columns.Add("Minutes");
dtData.Columns.Add("Seconds");
DataRow dr;
for (int i = 0; i < 10; i++)
{
dr = dtData.NewRow();
dr[0] = i.ToString();
dr[1] = i.ToString();
dr[2] = "00:" + i.ToString();
dr[3] = "10:" + i.ToString();
dr[4] = "15:" + i.ToString();
dtData.Rows.Add(dr);
}
DataRow[] drs = dtData.Select("ProjectID=" + e.ExtraParams["projectID"].ToString());
UpdateRecordField(e.ExtraParams["id"], "ProjectID", e.ExtraParams["projectID"].ToString());
UpdateRecordField(e.ExtraParams["id"], "Hours", drs[0][2].ToString());
UpdateRecordField(e.ExtraParams["id"], "Minutes", drs[0][3].ToString());
UpdateRecordField(e.ExtraParams["id"], "Seconds", drs[0][4].ToString());
}
protected void rbtnHideHours_Click(object sender, EventArgs e)
{
if (rbtnHideHours.Checked)
{
rbtnShowHours.Checked = false;
fillDataStore();
}
}
protected void rbtnShowHours_Click(object sender, EventArgs e)
{
if (rbtnShowHours.Checked)
{
rbtnHideHours.Checked = false;
fillDataStore();
}
}
}