Scenario: I have a gridview that loads morethan 300 rows..but it takes a minute to save the value of checkboxes..how can i resolved this..
ASPX
<asp:GridViewID="gridRolApp"runat="server"ClientIDMode="Static"
BorderColor="#0070C0"GridLines="None"AutoGenerateColumns="False"
Width="1100px"UseAccessibleHeader="false"CssClass="Content"
datakeynames="User_Pidx,BusinessUnit,Department">
<Columns>
<asp:TemplateField>
<HeaderStyleWidth="200px"/>
<HeaderTemplate>BUSINESS UNIT</HeaderTemplate>
<ItemStyleBackColor="#EFEFEF"Width="200px"Font-Size="12px"/>
<ItemTemplate>
<%#Eval("Plant_Name")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderStyleWidth="200px"/>
<HeaderTemplate>DEPARTMENT</HeaderTemplate>
<ItemStyleBackColor="#EFEFEF"Width="200px"Font-Size="12px"/>
<ItemTemplate>
<%#Eval("Dept_Name")%>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderStyleHorizontalAlign="Center"/>
<HeaderTemplate>
<asp:CheckBoxrunat="server"id="chkAllDeptHead"AutoPostBack="True"oncheckedchanged="chkAllDeptHead_CheckedChanged"/>
<br>DH
</HeaderTemplate>
<ItemTemplate>
<center><asp:CheckBoxrunat="server"id="chkDeptHead"OnDataBinding="chkDeptHead_DataBinding"/></center>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderStyleHorizontalAlign="Center"/>
<HeaderTemplate>
<asp:CheckBoxrunat="server"id="chkAllSM"AutoPostBack="True"oncheckedchanged="chkAllSM_CheckedChanged"/>
<br>SM
</HeaderTemplate>
<ItemTemplate>
<center><asp:CheckBoxrunat="server"id="chkSM"OnDataBinding="chkSM_DataBinding"/></center>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
<HeaderStyleHorizontalAlign="Center"/>
<asp:CheckBoxrunat="server"id="chkAllTMM"AutoPostBack="True"oncheckedchanged="chkAllTMM_CheckedChanged"/>
<br>TMM
</HeaderTemplate>
<ItemTemplate>
<center><asp:CheckBoxrunat="server"id="chkTMM"OnDataBinding="chkTMM_DataBinding"/></center>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderStyleHorizontalAlign="Center"/>
<HeaderTemplate>
<asp:CheckBoxrunat="server"id="chkAllHRM"AutoPostBack="True"oncheckedchanged="chkAllHRM_CheckedChanged"/>
<br/>HRM
</HeaderTemplate>
<ItemTemplate>
<center><asp:CheckBoxrunat="server"id="chkHRM"OnDataBinding="chkHRM_DataBinding"/></center>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderStyleHorizontalAlign="Center"/>
<HeaderTemplate>
<asp:CheckBoxrunat="server"id="chkAllFM"AutoPostBack="True"oncheckedchanged="chkAllFM_CheckedChanged"/>
<br/>FM
</HeaderTemplate>
<ItemTemplate>
<center><asp:CheckBoxrunat="server"id="chkFM"OnDataBinding="chkFM_DataBinding"/></center>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderStyleHorizontalAlign="Center"/>
<HeaderTemplate>
<asp:CheckBoxrunat="server"id="chkAllFD"AutoPostBack="True"oncheckedchanged="chkAllFD_CheckedChanged"/>
<br/>FD
</HeaderTemplate>
<ItemTemplate>
<center><asp:CheckBoxrunat="server"id="chkFD"OnDataBinding="chkFD_DataBinding"/></center>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderStyleHorizontalAlign="Center"/>
<HeaderTemplate>
<asp:CheckBoxrunat="server"id="chkAllGM"AutoPostBack="True"oncheckedchanged="chkAllGM_CheckedChanged"/>
<br/>GM
</HeaderTemplate>
<ItemTemplate>
<center><asp:CheckBoxrunat="server"id="chkGM"OnDataBinding="chkGM_DataBinding"/></center>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderStyleHorizontalAlign="Center"/>
<HeaderTemplate>
<asp:CheckBoxrunat="server"id="chkAllSGM"AutoPostBack="True"oncheckedchanged="chkAllSGM_CheckedChanged"/>
<br/>SGM
</HeaderTemplate>
<ItemTemplate>
<center><asp:CheckBoxrunat="server"id="chkSGM"OnDataBinding="chkSGM_DataBinding"/></center>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderStyleHorizontalAlign="Center"/>
<HeaderTemplate>
<asp:CheckBoxrunat="server"id="chkAllFC"AutoPostBack="True"oncheckedchanged="chkAllFC_CheckedChanged"/>
<br/>FC
</HeaderTemplate>
<ItemTemplate>
<center><asp:CheckBoxrunat="server"id="chkFC"OnDataBinding="chkFC_DataBinding"/></center>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderStyleHorizontalAlign="Center"/>
<HeaderTemplate>
<asp:CheckBoxrunat="server"id="chkAllVPFHead"AutoPostBack="True"oncheckedchanged="chkAllVPFHead_CheckedChanged"/>
<br/>VP-FH
</HeaderTemplate>
<ItemTemplate>
<center><asp:CheckBoxrunat="server"id="chkVPFHead"OnDataBinding="chkVPFHead_DataBinding"/></center>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderStyleHorizontalAlign="Center"/>
<HeaderTemplate>
<asp:CheckBoxrunat="server"id="chkAllVPML"AutoPostBack="True"oncheckedchanged="chkAllVPML_CheckedChanged"/>
<br/>VP-M&L
</HeaderTemplate>
<ItemTemplate>
<center><asp:CheckBoxrunat="server"id="chkVPML"OnDataBinding="chkVPML_DataBinding"/></center>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderStyleHorizontalAlign="Center"/>
<HeaderTemplate>
<asp:CheckBoxrunat="server"id="chkAllCorpLegal"AutoPostBack="True"oncheckedchanged="chkAllCorpLegal_CheckedChanged"/>
<br/>CLS
</HeaderTemplate>
<ItemTemplate>
<center><asp:CheckBoxrunat="server"id="chkCorpLegal"OnDataBinding="chkCorpLegal_DataBinding"/></center>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderStyleHorizontalAlign="Center"/>
<HeaderTemplate>
<asp:CheckBoxrunat="server"id="chkAllVPHR"AutoPostBack="True"oncheckedchanged="chkAllVPHR_CheckedChanged"/>
<br/>VP-HR
</HeaderTemplate>
<ItemTemplate>
<center><asp:CheckBoxrunat="server"id="chkVPHR"OnDataBinding="chkVPHR_DataBinding"/></center>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderStyleHorizontalAlign="Center"/>
<HeaderTemplate>
<asp:CheckBoxrunat="server"id="chkAllEVPSales"AutoPostBack="True"oncheckedchanged="chkAllEVPSales_CheckedChanged"/>
<br/>EVPSales
</HeaderTemplate>
<ItemTemplate>
<center><asp:CheckBoxrunat="server"id="chkEVPSales"OnDataBinding="chkEVPSales_DataBinding"/></center>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderStyleHorizontalAlign="Center"/>
<HeaderTemplate>
<asp:CheckBoxrunat="server"id="chkAllCFO"AutoPostBack="True"oncheckedchanged="chkAllCFO_CheckedChanged"/>
<br/>CFO
</HeaderTemplate>
<ItemTemplate>
<center><asp:CheckBoxrunat="server"id="chkCFO"OnDataBinding="chkCFO_DataBinding" /></center>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderStyleHorizontalAlign="Center"/>
<HeaderTemplate>
<asp:CheckBoxrunat="server"id="chkAllPres"AutoPostBack="True"/>
<br/>Pres
</HeaderTemplate>
<ItemTemplate>
<center><asp:CheckBoxrunat="server"id="chkPres"OnDataBinding="chkPres_DataBinding"/></center>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderStyleHorizontalAlign="Center"/>
<HeaderTemplate>
<asp:CheckBoxrunat="server"id="chkAllCEO"AutoPostBack="True"oncheckedchanged="chkAllCEO_CheckedChanged"/>
<br/>CEO
</HeaderTemplate>
<ItemTemplate>
<center><asp:CheckBoxrunat="server"id="chkCEO"OnDataBinding="chkCEO_DataBinding"/></center>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<HeaderStyleCssClass="GridviewScrollHeader"/>
<RowStyleCssClass="GridviewScrollItem"/>
<PagerStyleCssClass="GridviewScrollPager"/>
</asp:GridView>
<asp:Buttonrunat="server"Text="Save"ID="btnSave"Width="100"CssClass="TextDrop"onclick="btnSave_Click"/>
protectedvoid btnSave_Click(object sender, EventArgs e)
{
if (txtValidation().Equals(true))
{
CLMSDataContext context = newCLMSDataContext();
try
{
context.ExecuteCommand("UPDATE Dim_User SET PosLoc_Abbreviation = '" + txtPosLocAbb.Text + "', " + Environment.NewLine +
" Active ='"+ chkActive.Checked +"'," + Environment.NewLine +
" Admin ='" + chkAdmin.Checked + "'," + Environment.NewLine +
" RealTime_Notification ='" + ChkRTNotification.Checked + "'," +Environment.NewLine +
" LastName = '" + txtLastName.Text + "', " + Environment.NewLine +
" FirstName = '" + txtFirstName.Text + "', " + Environment.NewLine +
" MiddleInitial = '" + txtMI.Text.Trim() + "', " + Environment.NewLine +
" NickName = '" + txtAKA.Text + "', " + Environment.NewLine +
" SMTPAddress = '" + txtEmail.Text + "', " + Environment.NewLine +
" Plant_PIdx = '" + defaultBU.SelectedValue + "', Dept_PIdx = '" + defaultDept.SelectedValue + "' " + Environment.NewLine +
" WHERE User_Idx = '" + Convert.ToInt64(Session["UserID"]) + "'");
bool chkboxIsChecked = false;
List<Dim_User_Role> deleteRole = (from key in context.Dim_User_Roles
where key.User_PIdx == Convert.ToInt64(Session["UserID"])
select key).ToList();
context.Dim_User_Roles.DeleteAllOnSubmit(deleteRole);
context.SubmitChanges();
foreach (GridViewRow row in gridRolApp.Rows)
{
string pUserID = gridRolApp.DataKeys[row.RowIndex].Values["User_Pidx"].ToString();
string pPlantID = gridRolApp.DataKeys[row.RowIndex].Values["BusinessUnit"].ToString();
string pDeptID = gridRolApp.DataKeys[row.RowIndex].Values["Department"].ToString();
chkboxIsChecked = false;
CheckBox chkDeptHead = (CheckBox)row.FindControl("chkDeptHead");
if ((chkDeptHead != null)&& (chkDeptHead.Checked == true))
{
chkboxIsChecked = true;
}
RoleSaving(Convert.ToInt64(pUserID), Convert.ToInt64(pPlantID), Convert.ToInt64(pDeptID), getRole("chkDeptHead"), chkboxIsChecked);
chkboxIsChecked = false;
CheckBox chkSM = (CheckBox)row.FindControl("chkSM");
if ((chkSM != null)&& (chkSM.Checked == true))
{
chkboxIsChecked = true;
}
RoleSaving(Convert.ToInt64(pUserID), Convert.ToInt64(pPlantID), Convert.ToInt64(pDeptID), getRole("chkSM"), chkboxIsChecked);
chkboxIsChecked = false;
CheckBox chkTMM = (CheckBox)row.FindControl("chkTMM");
if ((chkTMM != null)&& (chkTMM.Checked == true))
{
chkboxIsChecked = true;
}
RoleSaving(Convert.ToInt64(pUserID), Convert.ToInt64(pPlantID),Convert.ToInt64(pDeptID), getRole("chkTMM"), chkboxIsChecked);
chkboxIsChecked = false;
CheckBox chkHRM = (CheckBox)row.FindControl("chkHRM");
if ((chkHRM != null)&& (chkHRM.Checked == true))
{
chkboxIsChecked = true;
}
RoleSaving(Convert.ToInt64(pUserID), Convert.ToInt64(pPlantID), Convert.ToInt64(pDeptID), getRole("chkHRM"), chkboxIsChecked);
chkboxIsChecked = false;
CheckBox chkFM = (CheckBox)row.FindControl("chkFM");
if ((chkFM != null)&& (chkFM.Checked == true))
{
chkboxIsChecked = true;
}
RoleSaving(Convert.ToInt64(pUserID), Convert.ToInt64(pPlantID), Convert.ToInt64(pDeptID), getRole("chkFM"), chkboxIsChecked);
chkboxIsChecked = false;
CheckBox chkFD = (CheckBox)row.FindControl("chkFD");
if ((chkFD != null)&& (chkFD.Checked == true))
{
chkboxIsChecked = true;
}
RoleSaving(Convert.ToInt64(pUserID), Convert.ToInt64(pPlantID), Convert.ToInt64(pDeptID), getRole("chkFD"), chkboxIsChecked);
chkboxIsChecked = false;
CheckBox chkGM = (CheckBox)row.FindControl("chkGM");
if ((chkGM != null)&& (chkGM.Checked == true))
{
chkboxIsChecked = true;
}
RoleSaving(Convert.ToInt64(pUserID), Convert.ToInt64(pPlantID), Convert.ToInt64(pDeptID), getRole("chkGM"), chkboxIsChecked);
chkboxIsChecked = false;
CheckBox chkSGM = (CheckBox)row.FindControl("chkSGM");
if ((chkSGM != null)&& (chkSGM.Checked == true))
{
chkboxIsChecked = true;
}
RoleSaving(Convert.ToInt64(pUserID), Convert.ToInt64(pPlantID), Convert.ToInt64(pDeptID), getRole("chkSGM"), chkboxIsChecked);
chkboxIsChecked = false;
CheckBox chkFC = (CheckBox)row.FindControl("chkFC");
if ((chkFC != null)&& (chkFC.Checked == true))
{
chkboxIsChecked = true;
}
RoleSaving(Convert.ToInt64(pUserID), Convert.ToInt64(pPlantID), Convert.ToInt64(pDeptID), getRole("chkFC"), chkboxIsChecked);
chkboxIsChecked = false;
CheckBox chkVPFHead = (CheckBox)row.FindControl("chkVPFHead");
if ((chkVPFHead != null)&& (chkVPFHead.Checked == true))
{
chkboxIsChecked = true;
}
RoleSaving(Convert.ToInt64(pUserID), Convert.ToInt64(pPlantID), Convert.ToInt64(pDeptID), getRole("chkVPFHead"), chkboxIsChecked);
chkboxIsChecked = false;
CheckBox chkVPML = (CheckBox)row.FindControl("chkVPML");
if ((chkVPML != null)&& (chkVPML.Checked == true))
{
chkboxIsChecked = true;
}
RoleSaving(Convert.ToInt64(pUserID), Convert.ToInt64(pPlantID), Convert.ToInt64(pDeptID), getRole("chkVPML"), chkboxIsChecked);
chkboxIsChecked = false;
CheckBox chkCorpLegal = (CheckBox)row.FindControl("chkCorpLegal");
if ((chkCorpLegal != null)&& (chkCorpLegal.Checked == true))
{
chkboxIsChecked = true;
}
RoleSaving(Convert.ToInt64(pUserID), Convert.ToInt64(pPlantID), Convert.ToInt64(pDeptID), getRole("chkCorpLegal"), chkboxIsChecked);
chkboxIsChecked = false;
CheckBox chkVPHR = (CheckBox)row.FindControl("chkVPHR");
if ((chkVPHR != null)&& (chkVPHR.Checked == true))
{
chkboxIsChecked = true;
}
RoleSaving(Convert.ToInt64(pUserID), Convert.ToInt64(pPlantID), Convert.ToInt64(pDeptID), getRole("chkVPHR"), chkboxIsChecked);
chkboxIsChecked = false;
CheckBox chkEVPSales = (CheckBox)row.FindControl("chkEVPSales");
if ((chkEVPSales != null)&& (chkEVPSales.Checked == true))
{
chkboxIsChecked = true;
}
RoleSaving(Convert.ToInt64(pUserID), Convert.ToInt64(pPlantID), Convert.ToInt64(pDeptID), getRole("chkEVPSales"), chkboxIsChecked);
chkboxIsChecked = false;
CheckBox chkCFO = (CheckBox)row.FindControl("chkCFO");
if ((chkCFO != null)&& (chkCFO.Checked == true))
{
chkboxIsChecked = true;
}
RoleSaving(Convert.ToInt64(pUserID), Convert.ToInt64(pPlantID), Convert.ToInt64(pDeptID), getRole("chkCFO"), chkboxIsChecked);
chkboxIsChecked = false;
CheckBox chkPres = (CheckBox)row.FindControl("chkPres");
if ((chkPres != null)&& (chkPres.Checked == true))
{
chkboxIsChecked = true;
}
RoleSaving(Convert.ToInt64(pUserID), Convert.ToInt64(pPlantID), Convert.ToInt64(pDeptID), getRole("chkPres"), chkboxIsChecked);
chkboxIsChecked = false;
CheckBox chkCEO = (CheckBox)row.FindControl("chkCEO");
if ((chkCEO != null)&& (chkCEO.Checked == true))
{
chkboxIsChecked = true;
}
RoleSaving(Convert.ToInt64(pUserID), Convert.ToInt64(pPlantID), Convert.ToInt64(pDeptID), getRole("chkCEO"), chkboxIsChecked);
}
successTitle.InnerText = "User Registration";
pSuccessMessage1.InnerText = "User successfully registered!";
btnSuccessOk.Focus();
modpopSuccess.Show();
}
catch (Exception ex)
{
successTitle.InnerText = "User Registration";
pSuccessMessage1.InnerText = ex.Message;
btnSuccessOk.Focus();
modpopSuccess.Show();
}
finally
{ context.Dispose(); }
}
else
{
successTitle.InnerText = "User Registration";
pSuccessMessage1.InnerText = "Incomplete field!";
btnSuccessOk.Focus();
modpopSuccess.Show();
}
}
privateInt64 getRole(string RoleStr)
{
Int64 roleid = 0;
switch (RoleStr)
{
//case "chkInitiator": roleid = 1; break;
case"chkDeptHead": roleid = 2; break;
case"chkSM": roleid = 3; break;
case"chkTMM": roleid = 4; break;
case"chkHRM": roleid = 5; break;
case"chkFM": roleid = 6; break;
case"chkFD": roleid = 7; break;
case"chkGM": roleid = 8; break;
case"chkSGM": roleid = 9; break;
case"chkFC": roleid = 10; break;
case"chkVPFHead": roleid = 11; break;
case"chkVPML": roleid = 12; break;
case"chkCorpLegal": roleid = 13; break;
case"chkVPHR": roleid = 14; break;
case"chkEVPSales": roleid = 15; break;
case"chkCFO": roleid = 16; break;
case"chkPres": roleid = 17; break;
case"chkCEO": roleid = 18; break;
default: roleid = 0; break;
}
return roleid;
}
privatevoid RoleSaving(Int64 userid, Int64 plant, Int64 dept, Int64 role, bool isChecked)
{
CLMSDataContext context = newCLMSDataContext();
try
{
var roleRec = (from r in context.Dim_User_Roles
where r.User_PIdx == userid &&
r.Dept_PIdx == dept &&
r.Plant_PIdx == plant &&
r.Role_PIdx == role
select r).ToList();
if (roleRec.Count == 0)
{
try
{
if (isChecked == true)
{
Dim_User_Role uRol = newDim_User_Role();
uRol.User_PIdx = userid;
uRol.Plant_PIdx = plant;
uRol.Dept_PIdx = dept;
uRol.Role_PIdx = role;
context.Dim_User_Roles.InsertOnSubmit(uRol);
context.SubmitChanges();
}
}
catch (Exception e)
{
context.Transaction.Rollback();
Response.Write(e.Message);
}
}
}
catch (Exception e)
{ Response.Write(e.Message); return; }
finally
{
context.Dispose();
}
}