This is a migrated thread and some comments may be shown as answers.

ItemCommand Event of RadGrid is not Firing

1 Answer 424 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Naveen kumar
Top achievements
Rank 1
Naveen kumar asked on 23 Nov 2012, 01:08 PM
Hi all,
         In the code below Item Command of grid with IdrgAttendenceDetails is not getting fired when a link button present in a template column which is created dynamically in code behind is clicked. Please have a look at the code and specify a answer for it thank you.
using System;
using System.Collections;
using System.Collections.Specialized;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Drawing;
using System.Diagnostics;
using Telerik.Web;
using Telerik.Web.UI;
using System.Data.SqlClient;
using MSI.Emailing;
using MSI.Logging;
using AttendenceManagement.Business_Layer;
 
namespace AttendenceManagement.Controls
{
    public partial class AttendenceDetailsGrid : System.Web.UI.UserControl
    {
        #region Properties Declarations
        /// <summary>
        /// Business Layer Objects Declared to Reterive or Save Data To DataBase.
        /// </summary>
        AttendenceDetailsDAO objAttendenceDetailsDAO = new AttendenceDetailsDAO();
        AttendenceDetailsEntities objAttendenceDetailsEntities = new AttendenceDetailsEntities();
        AttendenceDAO objAttendenceDAO = new AttendenceDAO();
        AttendenceEntities objAttendenceEntities = new AttendenceEntities();
        LoggingClass objLogging = new LoggingClass();
        Emailclass objEmailclass = new Emailclass();
        DataSet dsDetails = new DataSet();
        string strEmployeeId;
        #endregion
 
        #region Events
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                rdpFrom.MaxDate = DateTime.Now.AddDays(-1);
                rbClose.Image.IsBackgroundImage = true;
                rbClose.Image.ImageUrl = "~/CSS/TelerikCustomSkins/Grid/cancelbtn.png";
 
                if (!IsPostBack)
                {
                    rdpFrom.SelectedDate = DateTime.Now.AddMonths(-1);
 
                }
                LoadAttendenceGrid(true);
            }
            catch (Exception ex)
            {
                objLogging.WriteToErrorLog(ex.Message);
                throw ex;
            }
        }
 
        /// <summary>
        /// Click Event to Select and Load Employee Attendence Details.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void rbtnSelect_Click(object sender, EventArgs e)
        {
            try
            {
                LoadAttendenceGrid(true);
            }
            catch (Exception ex)
            {
                objLogging.WriteToErrorLog(ex.Message);
                throw ex;
            }
        }
        /// <summary>
        ///Attendence Grid ItemCommnad Event Fired to Load AttendenceDetailsPopup for a Particular Date of an Employee.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void rgAttendenceDetails_ItemCommand(object sender, GridCommandEventArgs e)
        {
            try
            {
                rtbxComments.Text = string.Empty;
                string strMSIID;
                DateTime dtDate;
                if (e.CommandName == "AttendenceCheck")
                {
                    if (e.Item is GridDataItem)
                    {
                        GridDataItem item = (GridDataItem)e.Item;
 
                        strMSIID = item["Emp_ID"].Text;
                        CommonDAO objCommonDao = new CommonDAO();
                        DataSet dsUserDetails = objCommonDao.GetUserDetails(strMSIID);
                        if (dsUserDetails != null)
                        {
                            if (dsUserDetails.Tables.Count > 0)
                            {
                                if (dsUserDetails.Tables[0].Rows.Count > 0)
                                {
                                    lblEmployeeNameValue.Text = (string)dsUserDetails.Tables[0].Rows[0]["Employee_Name"];
                                }
                            }
                        }
                        lblEmployeeIdValue.Text = strMSIID;
                        dtDate = Convert.ToDateTime(e.CommandArgument.ToString());
                        lblDateValue.Text = dtDate.ToString("dd-MM-yyyy");
                        rwdAttendenceDetails.VisibleOnPageLoad = true;
                        objAttendenceDetailsEntities.EmployeeId = "0" + strMSIID; //Concatenating EmployeeId with 0 as defined in Database.
                        objAttendenceDetailsEntities.Date = dtDate;
                        Session["MSIId"] = strMSIID;
                        Session["Date"] = dtDate;
                        rcbxType.SelectedValue = "0";
                        LoadAttendenceGridPopUp();
                        LoadAttendenceGrid(false);
 
                        if (Session["AttendencePage"] != null)
                        {
                            if (Session["AttendencePage"].ToString() == "Attendence")
                            {
                                lblEmployeeNameValue.Enabled = false;
                                lblEmployeeIdValue.Enabled = false;
                                lblDateValue.Enabled = false;
                                rgMyAttendenceDetails.Enabled = false;
                                rtbxComments.Enabled = false;
                                rcbxType.Enabled = false;
                                objAttendenceEntities.MSIId = Session["MSIId"].ToString();
                                objAttendenceEntities.AttDate = Convert.ToDateTime(Session["Date"]);
                                DataSet dsAttType = new DataSet();
                                dsAttType = objAttendenceDAO.GetAttendenceType(objAttendenceEntities);
                                if (dsAttType != null)
                                {
                                    if (dsAttType.Tables.Count > 0)
                                    {
                                        if (dsAttType.Tables[0].Rows.Count > 0)
                                        {
                                            string strTypeName = (string)dsAttType.Tables[0].Rows[0]["Att_Type"];
                                            objAttendenceEntities.TypeName = strTypeName;
                                            DataSet dsTypeId = new DataSet();
                                            dsTypeId = objAttendenceDAO.GetTypeId(objAttendenceEntities);
                                            if (dsTypeId != null)
                                            {
                                                if (dsTypeId.Tables.Count > 0)
                                                {
                                                    if (dsTypeId.Tables[0].Rows.Count > 0)
                                                    {
                                                        rcbxType.SelectedValue = (string)dsTypeId.Tables[0].Rows[0]["TypeId"];
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                objLogging.WriteToErrorLog(ex.Message);
                throw ex;
            }
        }
 
        /// <summary>
        /// Attendence Grid ItemDataBound Event Fired to set the Backcolor of the Control present in a Particular Cell of the Grid.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void rgAttendenceDetails_ItemDataBound(object sender, GridItemEventArgs e)
        {
            try
            {
                //Not Header row
                if (e.Item.RowIndex > 0)
                {
                    for (int i = 1; i < e.Item.Cells.Count; i++)
                    {
                        if (e.Item.Cells[i].Controls.Count > 0)
                        {
                            LiteralControl lbl = (LiteralControl)e.Item.Cells[i].Controls[1];
                            LinkButton lnk = (LinkButton)e.Item.Cells[i].Controls[0];
                            if (lbl != null && lnk != null)
                            {
                                AttendenceDetailsDAO.AttendenceType objAttendenceType = AttendenceDetailsDAO.GetValueFromDescription(lbl.Text);
                                if (default(AttendenceDetailsDAO.AttendenceType) != objAttendenceType && objAttendenceType != AttendenceDetailsDAO.AttendenceType.Absent && objAttendenceType != AttendenceDetailsDAO.AttendenceType.HalfDayAbsent)
                                {
                                    lnk.Visible = false;
                                    e.Item.Cells[i].BackColor = AttendenceDetailsDAO.GetBackGroundColor(objAttendenceType);
                                }
                                else
                                {
                                    lbl.Visible = false;
                                    e.Item.Cells[i].BackColor = AttendenceDetailsDAO.GetBackGroundColor(objAttendenceType);
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                objLogging.WriteToErrorLog(ex.Message);
                throw ex;
            }
        }
 
        /// <summary>
        /// Click Event to Save the Status of the Employee For a Particular Date Selected for an Employee from the Attendence Details to DB.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void rbOk_Click(object sender, EventArgs e)
        {
            try
            {
                objAttendenceEntities.MSIId = Session["MSIId"].ToString();
                objAttendenceEntities.AttDate = Convert.ToDateTime(Session["Date"]);
                objAttendenceEntities.CodeValue = rcbxType.Text;
                DataSet dsCodeId = new DataSet();
                dsCodeId = objAttendenceDAO.GetCodeId(objAttendenceEntities);
                if (dsCodeId != null && dsCodeId.Tables.Count > 0 && dsCodeId.Tables[0].Rows.Count > 0)
                {
                    foreach (DataRow row in dsCodeId.Tables[0].Rows)
                    {
                        objAttendenceEntities.AttTypeId = int.Parse(row["Code_ID"].ToString());
                    }
                }
                objAttendenceEntities.Comments = rtbxComments.Text;
                objAttendenceEntities.CreatedUserId = UserDetails.User.EmployeeId;
                objAttendenceDAO.SaveAttendenceDetails(objAttendenceEntities);
 
 
                if (rcbxType.Text == "Work From Home")
                {
                    string strLeadEmail = string.Empty;
                    for (int i = 0; i < UserDetails.Leads.Count; i++)
                    {
                        strLeadEmail += UserDetails.Leads[i].Lead_Email + ",";
                    }
                    if (strLeadEmail != string.Empty)
                    {
                        strLeadEmail = strLeadEmail.Substring(0, strLeadEmail.Length - 1);
                    }
                    objEmailclass.SendMailMessage(strLeadEmail, null, "Test", "Testing");
                }
                else
                {
                    string strAdminEmail = string.Empty;
                    strAdminEmail = UserDetails.Admin.Admin_Email_Id;
                    objEmailclass.SendMailMessage(strAdminEmail, null, "Test", "Testing");
                }
 
                if (rcbxType.Text == "Swipe Error")
                {
                    objAttendenceEntities.LastChangedUserId = UserDetails.User.EmployeeId;
                    objAttendenceDAO.UpdateAttendenceDetails(objAttendenceEntities);
                }
 
                LoadAttendenceGrid(true);
            }
            catch (Exception ex)
            {
                objLogging.WriteToErrorLog(ex.Message);
                throw ex;
            }
        }
 
        /// <summary>
        /// Click Event By Admin or Leads to Approve the Status of a Particular Date Attendence of a Employee.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void rbApprove_Click(object sender, EventArgs e)
        {
            try
            {
                objAttendenceEntities.MSIId = Session["MSIId"].ToString();
                objAttendenceEntities.AttDate = Convert.ToDateTime(Session["Date"]);
                objAttendenceEntities.LastChangedUserId = UserDetails.User.EmployeeId;
                objAttendenceDAO.UpdateAttendenceIsApproved(objAttendenceEntities);
 
                string strUserEmailId;
                CommonDAO objCommonDao = new CommonDAO();
                DataSet dsUserDetails = objCommonDao.GetUserDetails(Session["MSIId"].ToString());
                if (dsUserDetails != null)
                {
                    if (dsUserDetails.Tables.Count > 0)
                    {
                        if (dsUserDetails.Tables[0].Rows.Count > 0)
                        {
                            strUserEmailId = (string)dsUserDetails.Tables[0].Rows[0]["Email_Id"];
                            objEmailclass.SendMailMessage(strUserEmailId, null, "Test", "Approved");
                        }
                    }
                }
 
                LoadAttendenceGrid(true);
            }
            catch (Exception ex)
            {
                objLogging.WriteToErrorLog(ex.Message);
                throw ex;
            }
        }
 
        /// <summary>
        /// Click Event By Admin or Leads to Reject the Status of a Particular Date Attendence of a Employee.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void rbReject_Click(object sender, EventArgs e)
        {
            try
            {
                objAttendenceEntities.MSIId = Session["MSIId"].ToString();
                objAttendenceEntities.AttDate = Convert.ToDateTime(Session["Date"]);
                objAttendenceEntities.LastChangedUserId = UserDetails.User.EmployeeId;
                objAttendenceDAO.UpdateAttendenceIsApproved(objAttendenceEntities);
 
                string strUserEmailId;
                CommonDAO objCommonDao = new CommonDAO();
                DataSet dsUserDetails = objCommonDao.GetUserDetails(Session["MSIId"].ToString());
                if (dsUserDetails != null)
                {
                    if (dsUserDetails.Tables.Count > 0)
                    {
                        if (dsUserDetails.Tables[0].Rows.Count > 0)
                        {
                            strUserEmailId = (string)dsUserDetails.Tables[0].Rows[0]["Email_Id"];
                            objEmailclass.SendMailMessage(strUserEmailId, null, "Test", "Rejected");
                        }
                    }
                }
 
                LoadAttendenceGrid(true);
            }
            catch (Exception ex)
            {
                objLogging.WriteToErrorLog(ex.Message);
                throw ex;
            }
        }
 
        protected void rgMyAttendenceDetails_NeedDataSource(object sender, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
        {
            try
            {
                rgMyAttendenceDetails.DataSource = new int[] { };
            }
            catch (Exception ex)
            {
                objLogging.WriteToErrorLog(ex.Message);
                throw ex;
            }
        }
 
 
        #endregion
 
        #region Methods
        /// <summary>
        /// Method to Load the Attendence Details Grid for a Select no of Employees.
        /// </summary>
        /// <param name="forceLoad"></param>
        private void LoadAttendenceGrid(bool forceLoad)
        {
            try
            {
                strEmployeeId = GetSelectedEmployees();
                objAttendenceDetailsEntities = new AttendenceDetailsEntities();
                rgAttendenceDetails.Columns.Clear();
                lblFromdatewithyear.Text = rdpFrom.SelectedDate.Value.Date.ToShortDateString();
                lblTodatewithyear.Text = rdpFrom.SelectedDate.Value.AddMonths(1).AddDays(-1).Date.ToShortDateString();
                if (Session["HomePage"] != null)
                {
                    if (Session["HomePage"].ToString() == "Home")
                    {
                        objAttendenceDetailsEntities.EmployeeId = UserDetails.User.MSIId;
                    }
                }
 
                else if (strEmployeeId != string.Empty)
                {
                    objAttendenceDetailsEntities.EmployeeId = strEmployeeId;
                }
                if (objAttendenceDetailsEntities.EmployeeId != null)
                {
 
                    objAttendenceDetailsEntities.FromDate = Convert.ToDateTime(rdpFrom.SelectedDate);
                    objAttendenceDetailsEntities.ToDate = Convert.ToDateTime(rdpFrom.SelectedDate.Value.AddMonths(1).AddDays(-1));
 
                    string[] strEmplId = objAttendenceDetailsEntities.EmployeeId.Split(',');
 
                    DataTable dtEmplyees = new DataTable();
 
                    //If it needs to be loaded again from database
                    if (forceLoad == true)
                    {
                        Session["AttData"] = objAttendenceDetailsDAO.GetFullAttendenceDetails(objAttendenceDetailsEntities);
                    }
 
                    dtEmplyees = (DataTable)Session["AttData"];
                    if (dtEmplyees != null)
                    {
                        dtEmplyees.DefaultView.Sort = "Att_Date";
                    }
                    rgAttendenceDetails.AutoGenerateColumns = false;
                    rgAttendenceDetails.MasterTableView.AutoGenerateColumns = false;
 
                    DataTable dtAttendence = new DataTable();
                    DataColumn dc = new DataColumn();
                    DataColumn dcCol2 = new DataColumn();
                    GridBoundColumn boundColumn = new GridBoundColumn();
 
                    GridTemplateColumn clNew;
 
                    for (int iLength = 0; iLength < strEmplId.Length; iLength++)
                    {
                        DataRow[] dr = dtEmplyees.Select("Emp_ID='" + strEmplId[iLength] + "'", "Att_Date");
 
                        if (dr.Length > 0)
                        {
 
                            DataRow drRow = dtAttendence.NewRow();
 
                            if (dr.Length + 1 != dtAttendence.Columns.Count)
                            {
                                boundColumn = new GridBoundColumn();
                                boundColumn.HeaderText = "Employee Id";
                                boundColumn.DataField = "Emp_ID";
                                boundColumn.UniqueName = "Emp_ID";
                                dc.ColumnName = "Emp_ID";
                                dtAttendence.Columns.Add(dc);
                                rgAttendenceDetails.MasterTableView.Columns.Add(boundColumn);
                            }
 
                            //To bind EmployeeId without 0 as the first Character.
                            if (strEmplId[iLength].StartsWith("0"))
                            {
                                drRow[dc.ColumnName] = strEmplId[iLength].Substring(1);
                            }
                            else
                            {
                                drRow[dc.ColumnName] = strEmplId[iLength];
                            }
                            for (int i = 0; i < dr.Length; i++)
                            {
                                if (dr.Length + 1 != dtAttendence.Columns.Count)
                                {
                                    dcCol2 = new DataColumn();
                                    dtAttendence.Columns.Add(dcCol2);
                                    dcCol2.ColumnName = dr[i]["Att_Date"].ToString();
                                }
 
                                //AttendenceDetailsDAO.AttendenceType objAttendanceType = (AttendenceDetailsDAO.AttendenceType)Enum.Parse(typeof(AttendenceDetailsDAO.AttendenceType), dr[i]["Status"].ToString());
                                AttendenceDetailsDAO.AttendenceType objAttendanceType = AttendenceDetailsDAO.GetValueFromDescription(dr[i]["Status"].ToString());
 
                                clNew = new GridTemplateColumn();
                                clNew.HeaderText = dr[i]["Day"].ToString();
                                string strcolName = dcCol2.ColumnName;
                                clNew.ItemTemplate = new MyTemplate(strcolName, ListItemType.Item, dr[i]["Att_Date"].ToString());
                                clNew.UniqueName = dcCol2.ColumnName;
                                clNew.DataField = dcCol2.ColumnName;
                                clNew.ItemStyle.ForeColor = Color.Blue;
 
                                if (dr.Length != rgAttendenceDetails.Columns.Count - 1)
                                {
                                    rgAttendenceDetails.MasterTableView.Columns.Add(clNew);
                                }
                                drRow[dr[i]["Att_Date"].ToString()] = AttendenceDetailsDAO.GetEnumDescription(objAttendanceType);
 
                            }
                            dtAttendence.Rows.Add(drRow);
                        }
                    }
                    //If there is no rows then
                    if (dtAttendence.Rows.Count > 0)
                    {
                        rgAttendenceDetails.DataSource = dtAttendence;
                        rgAttendenceDetails.DataBind();
                        rgAttendenceDetails.Visible = true;
                    }
                }
                else
                {
                    rgAttendenceDetails.DataSource = new int[] { };
                    rgAttendenceDetails.DataBind();
                    rgAttendenceDetails.Visible = false;
                }
            }
            catch (Exception ex)
            {
                objLogging.WriteToErrorLog(ex.Message);
                throw ex;
            }
        }
 
        /// <summary>
        /// Method to Select Employees from the Employee RadCombobox.
        /// </summary>
        /// <returns></returns>
        private string GetSelectedEmployees()
        {
 
            try
            {
                string EmpIds = string.Empty;
 
                foreach (RadComboBoxItem item in rcbxEmployee.CheckedItems)
                {
                    EmpIds += item.Text + ",";
 
                }
                if (EmpIds != string.Empty)
                {
                    EmpIds = EmpIds.Substring(0, EmpIds.Length - 1);
                }
 
                return EmpIds;
            }
            catch (Exception ex)
            {
                objLogging.WriteToErrorLog(ex.Message);
                throw ex;
            }
        }
 
        /// <summary>
        /// Method To Load Type into RadCombobox from DB Present in the AttendenceDetailsPopup.
        /// </summary>
        private void LoadRadCmboxType()
        {
            try
            {
                dsDetails = objAttendenceDetailsDAO.GetTypes();
                rcbxType.DataSource = dsDetails;
                foreach (DataRow dr in dsDetails.Tables[0].Rows)
                {
                    rcbxType.DataTextField = "TypeName";
                    rcbxType.DataValueField = "TypeId";
                }
                rcbxType.DataBind();
                rcbxType.Items.Insert(0, new RadComboBoxItem(string.Empty));//Adding a Empty Item to the dropdown.
            }
            catch (Exception ex)
            {
                objLogging.WriteToErrorLog(ex.Message);
                throw ex;
            }
        }
 
        /// <summary>
        /// Method To Load The MyAttendenceDetails grid Present in the AttendenceDetailsPopup.
        /// </summary>
        private void LoadAttendenceGridPopUp()
        {
            try
            {
 
                DataSet AttdataSet = new DataSet();
                AttdataSet = objAttendenceDetailsDAO.GetAttPunchedInandOutDtls(objAttendenceDetailsEntities);
                DataTable dtAttendence = new DataTable();
                DataRow drAttendence = null;
 
                dtAttendence.Columns.Add("PunchIn", typeof(string));
                dtAttendence.Columns.Add("PunchOut", typeof(string));
                dtAttendence.Columns.Add("PunchIn2", typeof(string));
                dtAttendence.Columns.Add("PunchOut2", typeof(string));
                dtAttendence.Columns.Add("PunchIn3", typeof(string));
                dtAttendence.Columns.Add("PunchOut3", typeof(string));
                dtAttendence.Columns.Add("PunchIn4", typeof(string));
                dtAttendence.Columns.Add("PunchOut4", typeof(string));
 
                drAttendence = dtAttendence.NewRow();
                if (AttdataSet != null && AttdataSet.Tables.Count > 0 && AttdataSet.Tables[0].Rows.Count > 0)
                {
 
                    if (AttdataSet.Tables[0].Rows.Count > 0)
                    {
                        drAttendence["PunchIn"] = AttdataSet.Tables[0].Rows[0]["Punch_In"].ToString().Remove(5);
                        drAttendence["PunchOut"] = AttdataSet.Tables[0].Rows[0]["Punch_Out"].ToString().Remove(5);
                    }
                    else if (AttdataSet.Tables[0].Rows.Count > 1)
                    {
                        drAttendence["PunchIn2"] = AttdataSet.Tables[0].Rows[1]["Punch_In"].ToString().Remove(5);
                        drAttendence["PunchOut2"] = AttdataSet.Tables[0].Rows[1]["Punch_Out"].ToString().Remove(5);
                    }
                    else if (AttdataSet.Tables[0].Rows.Count > 2)
                    {
                        drAttendence["PunchIn3"] = AttdataSet.Tables[0].Rows[2]["Punch_In"].ToString().Remove(5);
                        drAttendence["PunchOut3"] = AttdataSet.Tables[0].Rows[2]["Punch_Out"].ToString().Remove(5);
                    }
                    else if (AttdataSet.Tables[0].Rows.Count > 3)
                    {
                        drAttendence["PunchIn4"] = AttdataSet.Tables[0].Rows[3]["Punch_In"].ToString().Remove(5);
                        drAttendence["PunchOut4"] = AttdataSet.Tables[0].Rows[3]["Punch_Out"].ToString().Remove(5);
                    }
                    dtAttendence.Rows.Add(drAttendence);
                }
                if (dtAttendence.Rows.Count > 0)
                {
                    rgMyAttendenceDetails.DataSource = dtAttendence;
                    rgMyAttendenceDetails.DataBind();
                }
                else
                {
                    rgMyAttendenceDetails.DataSource = new int[] { };
                    rgMyAttendenceDetails.DataBind();
                }
                LoadRadCmboxType();
            }
            catch (Exception ex)
            {
                objLogging.WriteToErrorLog(ex.Message);
                throw ex;
            }
        }
        #endregion
 
        #region Template Declarations
        /// <summary>
        /// RadGrid Template Class
        /// </summary>
        private class MyTemplate : ITemplate, IBindableTemplate
        {
            protected LinkButton lnkButton;
            protected LiteralControl lControl;
            private string colname;
            private ListItemType lstItemType;
            private string controlId;
            private string literalId;
            private string lnkbuttonId;
            private string commandArgument;
            public MyTemplate(string CName, ListItemType type, string commandArgument)
            {
                this.colname = CName;
                this.lstItemType = type;
                literalId = "lbl_" + type.ToString() + "_" + CName;
                lnkbuttonId = "lnk_" + type.ToString() + "_" + CName;
                this.commandArgument = commandArgument;
            }
 
            public void InstantiateIn(System.Web.UI.Control container)
            {
                switch (lstItemType)
                {
                    case ListItemType.Item:
 
                        lnkButton = new LinkButton();
                        controlId = "lnk_" + colname;
                        lnkButton.ID = controlId;
                        lnkButton.CommandName = "AttendenceCheck";
                        lnkButton.CommandArgument = commandArgument;
                        lnkButton.DataBinding += new EventHandler(lnkButton_DataBinding);
                        // lnkButton.Click += new EventHandler(lnkButton_Click);
                        container.Controls.Add(lnkButton);
 
                        lControl = new LiteralControl();
                        controlId = "lbl_" + colname;
                        lControl.ID = controlId;
                        lControl.DataBinding += new EventHandler(lControl_DataBinding);
                        container.Controls.Add(lControl);
 
                        break;
                }
            }
 
            public void lnkButton_DataBinding(object sender, EventArgs e)
            {
                LinkButton lnk = (LinkButton)sender;
                GridDataItem container = (GridDataItem)lnk.NamingContainer;
                lnk.Text = ((DataRowView)container.DataItem)[colname].ToString();
            }
 
            public void lControl_DataBinding(object sender, EventArgs e)
            {
                LiteralControl ltlControl = (LiteralControl)sender;
                GridDataItem container = (GridDataItem)ltlControl.NamingContainer;
                ltlControl.Text = ((DataRowView)container.DataItem)[colname].ToString();
            }
 
            public System.Collections.Specialized.IOrderedDictionary ExtractValues(System.Web.UI.Control container)
            {
                OrderedDictionary od = new OrderedDictionary();
 
                od.Add("ProviderName", ((LinkButton)((GridDataItem)container).FindControl(controlId)).Text);
 
                return od;
            }
        }
        #endregion
    }
}

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="AttendenceDetails.ascx.cs"
    Inherits="AttendenceManagement.Controls.AttendenceDetailsGrid" %>
<%@ Register Assembly="Telerik.Web.UI" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>
<link href="../CSS/AttendenceStyle.css" rel="stylesheet" type="text/css" />
<link href="../CSS/TelerikCustomSkins/Grid.css" rel="stylesheet" type="text/css" />
 
<script language="javascript" type="text/javascript">
 
    //    function getRadWindow() {
    //        var oWindow = null;
    //        if (window.radWindow) oWindow = window.radWindow;
    //        else if (window.frameElement.radWindow) oWindow = window.frameElement.radWindow;
    //        return oWindow;
    //    }
 
    //    function closeWindow() {
    //        getRadWindow().close();
    //    }
 
    function OnClientClicked(sender, args) {
        var window = $find('<%=rwdAttendenceDetails.ClientID %>');
        window.close();
    }
          
</script>
 
<telerik:RadWindowManager ID="rwmAttendenceDetails" runat="server" ShowContentDuringLoad="false"
    VisibleStatusbar="false" Modal="true" VisibleTitlebar="false" EnableViewState="false"
    EnableEmbeddedSkins="false">
    <Windows>
        <telerik:RadWindow ID="rwdAttendenceDetails" runat="server" ShowContentDuringLoad="true"
            VisibleStatusbar="false" Modal="true" VisibleTitlebar="false" VisibleOnPageLoad="false"
            BorderWidth="0" BorderStyle="None" Height="400px" Width="700px">
            <ContentTemplate>
                <div style="width: 676px; height: 376px; background-color: #323367; vertical-align: top;
                    margin-top: 0px !important; border: 4px solid skyblue;">
                    <div class="divClose">
                        <telerik:RadButton ID="rbClose" runat="server" Height="17px" Width="20px" AutoPostBack="false"
                            OnClientClicked="OnClientClicked">
                        </telerik:RadButton>
                    </div>
                    <div class="divlblAttendenceDetails">
                        <asp:Label ID="lblAttendenceDetails" runat="server" Text="My Attendence Details"
                            ForeColor="White"></asp:Label>
                    </div>
                    <div class="divEmplyeeDetail">
                        <asp:Label ID="lblEmployeeName" runat="server" Text="Employee Name :" ForeColor="White"></asp:Label>
                        <asp:Label ID="lblEmployeeNameValue" runat="server" CssClass="rtxtEmployeeNameStyle"
                            ForeColor="White">
                        </asp:Label>
                        <asp:Label ID="lblEmployeeId" runat="server" Text="Empolyee Id :" CssClass="lblEmployeeIdStyle"
                            ForeColor="White"></asp:Label>
                        <asp:Label ID="lblEmployeeIdValue" runat="server" CssClass="lblEmployeeIdValueStyle"
                            ForeColor="White"></asp:Label>
                        <asp:Label ID="lblDate" runat="server" Text="Date :" CssClass="lblDateStyle" ForeColor="White"></asp:Label>
                        <asp:Label ID="lblDateValue" runat="server" CssClass="rtbxDateStyle" ForeColor="White">
                        </asp:Label>
                    </div>
                    <div class="divGrid">
                        <telerik:RadGrid ID="rgMyAttendenceDetails" runat="server" GridLines="None" AutoGenerateColumns="false"
                            ShowHeader="true" ShowFooter="true" EnableEmbeddedSkins="false" OnNeedDataSource="rgMyAttendenceDetails_NeedDataSource"
                            Skin="Internal" CssClass="RadGridStyle">
                            <HeaderStyle VerticalAlign="Middle" HorizontalAlign="Center" CssClass="RadGridStyle" />
                            <MasterTableView AutoGenerateColumns="false" EnableNoRecordsTemplate="true" ShowHeadersWhenNoRecords="true"
                                ShowHeader="true" ShowFooter="true" CssClass="RadGridStyle">
                                <Columns>
                                    <telerik:GridBoundColumn HeaderText="PunchIn" DataField="PunchIn">
                                    </telerik:GridBoundColumn>
                                    <telerik:GridBoundColumn HeaderText="PunchOut" DataField="PunchOut">
                                    </telerik:GridBoundColumn>
                                    <telerik:GridBoundColumn HeaderText="PunchIn2" DataField="PunchIn2">
                                    </telerik:GridBoundColumn>
                                    <telerik:GridBoundColumn HeaderText="PunchOut2" DataField="PunchOut2">
                                    </telerik:GridBoundColumn>
                                    <telerik:GridBoundColumn HeaderText="PunchIn3" DataField="PunchIn3">
                                    </telerik:GridBoundColumn>
                                    <telerik:GridBoundColumn HeaderText="PunchOut3" DataField="PunchOut3">
                                    </telerik:GridBoundColumn>
                                    <telerik:GridBoundColumn HeaderText="PunchIn4" DataField="PunchIn4">
                                    </telerik:GridBoundColumn>
                                    <telerik:GridBoundColumn HeaderText="PunchOut4" DataField="PunchOut4">
                                    </telerik:GridBoundColumn>
                                </Columns>
                                <NoRecordsTemplate>
                                    <div>
                                        <asp:Literal ID="ltlNoRecords" runat="server" Text="No Swipe Details Available"></asp:Literal>
                                    </div>
                                </NoRecordsTemplate>
                            </MasterTableView>
                        </telerik:RadGrid></div>
                    <asp:Label ID="lblDetails" runat="server" Visible="True"></asp:Label>
                    <div class="divComments">
                        <asp:Label ID="lblComments" runat="server" Text="Comments" Visible="true" ForeColor="White"></asp:Label>
                        <telerik:RadTextBox ID="rtbxComments" runat="server" Width="350px" Height="50px"
                            TextMode="MultiLine" MaxLength="300" CssClass="rtbxCommentsStyle" Visible="true">
                        </telerik:RadTextBox>
                    </div>
                    <div class="divType">
                        <asp:Label ID="lblType" runat="server" Text="Type" Visible="true" ForeColor="White"></asp:Label>
                        <telerik:RadComboBox ID="rcbxType" runat="server" CssClass="rcbxTypeStyle" Visible="true"
                            AutoPostBack="false" Width="125px">
                        </telerik:RadComboBox>
                    </div>
                    <asp:Panel ID="pnlOkCancel" runat="server" Visible="false" Style="float: left;">
                        <div class="divbtn">
                            <asp:Button ID="rbOk" runat="server" Text="Ok" Width="75px" OnClick="rbOk_Click">
                            </asp:Button>
                            <asp:Button ID="rbCancel" runat="server" Text="Cancel" Width="75px" OnClientClick="OnClientClicked();return false;">
                            </asp:Button>
                        </div>
                    </asp:Panel>
                    <asp:Panel ID="pnlAcceptReject" Visible="false" runat="server">
                        <div class="divbtn">
                            <asp:Button ID="rbApprove" runat="server" Text="Approve" Width="75px" OnClick="rbApprove_Click">
                            </asp:Button>
                            <asp:Button ID="rbReject" runat="server" Text="Reject" Width="75px" OnClick="rbReject_Click">
                            </asp:Button>
                        </div>
                    </asp:Panel>
                </div>
            </ContentTemplate>
        </telerik:RadWindow>
    </Windows>
</telerik:RadWindowManager>
<div class="divlblHeader">
    <asp:Label ID="lblHeader" runat="server" Text="Attendence Details"></asp:Label></div>
<asp:Panel runat="server" ID="pnlout" BackColor="#D8D8D8" Height="80px">
    <div class="divPickerLabel">
        <div class="divPicker">
            <div class="divFromDate">
                <asp:Label ID="lblFromDate" runat="server" Text="From"></asp:Label>
                <telerik:RadDatePicker ID="rdpFrom" runat="server" CssClass="rtxtFromStyle" Width="125px">
                </telerik:RadDatePicker>
            </div>
            <asp:Panel ID="pnlEmployee" runat="server" Style="float: left;">
                <div class="divSelectEmployee">
                    <asp:Label ID="lblSelectEmployee" runat="server" Text="Select Employee"></asp:Label>
                    <telerik:RadComboBox ID="rcbxEmployee" runat="server" CssClass="rcbxEmployeeStyle"
                        Visible="true" Width="125px" CheckBoxes="true" EnableCheckAllItemsCheckBox="true">
                    </telerik:RadComboBox>
                </div>
            </asp:Panel>
            <div class="divbtnSelect">
                <asp:Button ID="rbtnSelect" runat="server" Text="Select" OnClick="rbtnSelect_Click"
                    CssClass="rbtnSelectStyle" Width="75px"></asp:Button>
            </div>
        </div>
    </div>
    <div class="divfromdatetodatelbl">
        <div class="divlblfromdatetodate">
            <div class="divDummy">
            </div>
            <asp:Label ID="lblAttendenceDetaisFrom" runat="server" Text="Attendence Details From"></asp:Label>
            <asp:Label ID="lblFromdatewithyear" runat="server"></asp:Label>
            <asp:Label ID="lblTo" runat="server" Text="To"></asp:Label>
            <asp:Label ID="lblTodatewithyear" runat="server"></asp:Label></div>
    </div>
</asp:Panel>
<div class="divlegend">
    <asp:Panel ID="pnllegend" runat="server" BackColor="Gray" Height="95px">
        <table runat="server" cellpadding="0" cellspacing="0">
            <tr>
                <td style="width: 11%; padding: 15px 0px 0px 20px;">
                    <div style="background-color: White; height: 20px; text-align: center; width: 20px;
                        float: left;">
                        <span>P</span>
                    </div>
                    <div>
                        <asp:Label ID="lblPresent" runat="server" Text="Present" CssClass="lblLegendStyle"
                            ForeColor="White"></asp:Label></div>
                </td>
                <td style="width: 12%; padding: 15px 0px 0px 20px;">
                    <div style="background-color: Red; height: 20px; text-align: center; width: 20px;
                        float: left;">
                        <span>A</span>
                    </div>
                    <div>
                        <asp:Label ID="lblAbsent" runat="server" Text="Absent" CssClass="lblLegendStyle"
                            ForeColor="White"></asp:Label></div>
                </td>
                <td style="width: 14%; padding: 15px 0px 0px 20px;">
                    <div style="background-color: PowderBlue; height: 20px; text-align: center; width: 20px;
                        float: left;">
                        <span>H</span>
                    </div>
                    <div>
                        <asp:Label ID="lblHoilday" runat="server" Text="Holiday" CssClass="lblLegendStyle"
                            ForeColor="White"></asp:Label></div>
                </td>
                <td style="width: 20%; padding: 15px 0px 0px 20px;">
                    <div style="background-color: Plum; height: 20px; text-align: center; width: 25px;
                        float: left;">
                        <span>RH</span>
                    </div>
                    <div>
                        <asp:Label ID="lblResHoliday" runat="server" Text="Restricted Holiday" CssClass="lblLegendStyle"
                            ForeColor="White">
                        </asp:Label></div>
                </td>
                <td style="width: 19%; padding: 15px 0px 0px 20px;">
                    <div style="background-color: Aquamarine; height: 20px; text-align: center; width: 25px;
                        float: left;">
                        <span>HL</span>
                    </div>
                    <div>
                        <asp:Label ID="lblHDLeave" runat="server" Text="Half Day Leave" CssClass="lblLegendStyle"
                            ForeColor="White">
                        </asp:Label></div>
                </td>
                <td colspan="2" style="width: 100%; padding: 15px 0px 0px 20px;">
                    <div style="background-color: Aqua; height: 20px; text-align: center; width: 25px;
                        float: left;">
                        <span>SR</span>
                    </div>
                    <div>
                        <asp:Label ID="lblSwipeError" runat="server" Text="Swipe Error" CssClass="lblLegendStyle"
                            ForeColor="White">
                        </asp:Label></div>
                </td>
            </tr>
            <tr>
                <td style="width: 10%; padding: 15px 0px 0px 20px;">
                    <div style="background-color: Blue; height: 20px; text-align: center; width: 20px;
                        float: left;">
                        <span>L</span>
                    </div>
                    <div>
                        <asp:Label ID="lblLeave" runat="server" Text="Leave" CssClass="lblLegendStyle" ForeColor="White"></asp:Label></div>
                </td>
                <td style="width: 12%; padding: 15px 0px 0px 20px;">
                    <div style="background-color: Peru; height: 20px; text-align: center; width: 20px;
                        float: left;">
                        <span>C</span>
                    </div>
                    <div>
                        <asp:Label ID="lblCompoff" runat="server" Text="CompOff" CssClass="lblLegendStyle"
                            ForeColor="White"></asp:Label></div>
                </td>
                <td style="width: 15%; padding: 15px 0px 0px 20px;">
                    <div style="background-color: Green; height: 20px; text-align: center; width: 20px;
                        float: left;">
                        <span>T</span>
                    </div>
                    <div>
                        <asp:Label ID="lblTemporaryId" runat="server" Text="TemporaryId" CssClass="lblLegendStyle"
                            ForeColor="White">
                        </asp:Label></div>
                </td>
                <td style="width: 20%; padding: 15px 0px 0px 20px;">
                    <div style="background-color: Yellow; height: 20px; text-align: center; width: 26px;
                        float: left;">
                        <span>WH</span>
                    </div>
                    <div>
                        <asp:Label ID="lblWorkFromHome" runat="server" Text="Work From Home" CssClass="lblLegendStyle"
                            ForeColor="White">
                        </asp:Label></div>
                </td>
                <td style="width: 19%; padding: 15px 0px 0px 20px;">
                    <div style="background-color: Tan; height: 20px; text-align: center; width: 25px;
                        float: left;">
                        <span>HA</span>
                    </div>
                    <div>
                        <asp:Label ID="lblHDAbsent" runat="server" Text="Half Day Absent" CssClass="lblLegendStyle"
                            ForeColor="White">
                        </asp:Label></div>
                </td>
                <td colspan="2" style="width: 100%; padding: 15px 0px 0px 20px;">
                    <div style="background-color: Fuchsia; height: 20px; text-align: center; width: 25px;
                        float: left;">
                        <span>AP</span>
                    </div>
                    <div>
                        <asp:Label ID="lblApproval" runat="server" Text="Approval Needed" CssClass="lblLegendStyle"
                            ForeColor="White">
                        </asp:Label></div>
                </td>
            </tr>
        </table>
    </asp:Panel>
</div>
<div class="divrGrid">
    <telerik:RadGrid ID="rgAttendenceDetails" runat="server" AllowSorting="true" AllowPaging="true"
        PagerStyle-ShowPagerText="true" PagerStyle-AlwaysVisible="true" AutoGenerateColumns="false"
        SortingSettings-EnableSkinSortStyles="false" EnableEmbeddedSkins="false" CellSpacing="0"
        Skin="Internal" GridLines="Both" CssClass="rgLeaveApproval" OnItemCommand="rgAttendenceDetails_ItemCommand"
        OnItemDataBound="rgAttendenceDetails_ItemDataBound" >
        <MasterTableView AutoGenerateColumns="false" EnableNoRecordsTemplate="true" ShowHeadersWhenNoRecords="true"
            ShowHeader="true" ShowFooter="true">
            <HeaderStyle VerticalAlign="Middle" HorizontalAlign="Center" />
            <PagerStyle Mode="NextPrevAndNumeric"></PagerStyle>
            <NoRecordsTemplate>
                <div>
                    <asp:Literal ID="ltlNoRecords" runat="server" Text="No Records To Display"></asp:Literal>
                </div>
            </NoRecordsTemplate>
        </MasterTableView>
    </telerik:RadGrid>
</div>


1 Answer, 1 is accepted

Sort by
0
Antonio Stoilkov
Telerik team
answered on 28 Nov 2012, 06:45 AM
Hi Naveen,

You could resolve your issue by creating the RadGrid control in the Page_Init method. As described in the help article below - Creating columns in the Page_Load event handler does not work for template columns. For the controls inside a template to persist their ViewState, the grid must be generated completely in the code-behind using the Page_Init event (see below). That way, template controls are instantiated before the LoadViewState event of the page.

Regards,
Antonio Stoilkov
the Telerik team
If you want to get updates on new releases, tips and tricks and sneak peeks at our product labs directly from the developers working on the RadControls for ASP.NET AJAX, subscribe to their blog feed now.
Tags
Grid
Asked by
Naveen kumar
Top achievements
Rank 1
Answers by
Antonio Stoilkov
Telerik team
Share this question
or