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

creating dynamic columns in rad grid with radcomboboxes

10 Answers 205 Views
General Discussions
This is a migrated thread and some comments may be shown as answers.
anirud
Top achievements
Rank 1
anirud asked on 09 Mar 2011, 06:37 PM
on the index change of rad combobox arad grid must appear with dynamically created columns containing rad comboboxes and those comboboxes are to be binded with some data from database.the columns with comboboxes are coming but i am unable to bind with data. i am doing this programmatically using ITEMPLATE interface by inheriting in a class and calling InstantiateIn method.
help by sending or posting a code snippet.
thanks in advance
Anirud

10 Answers, 1 is accepted

Sort by
0
Iana Tsolova
Telerik team
answered on 15 Mar 2011, 09:51 AM
Hi anirud,

You can handle the ItemDataBound event for the grid to bind the combobox controls.
But if you decide to place the code for binding them directly in the class implementing the ITemplate interface, you would need to handle the DataBinding event of the combobox controls. In this case, you might need to pass a few more parameters to the class constructor.

Additionally, you can check this article:
http://www.telerik.com/help/aspnet-ajax/grid-operations-with-dropdownlist-in-edititemtemplate.html

Kind regards,
Iana
the Telerik team
Registration for Q1 2011 What’s New Webinar Week is now open. Mark your calendar for the week starting March 21st and book your seat for a walk through all the exciting stuff we ship with the new release!
0
anirud
Top achievements
Rank 1
answered on 01 Apr 2011, 12:42 PM
Thanks Iana for response.B
<%@ Page Title="" Language="C#" MasterPageFile="~/SMHRMaster.master" AutoEventWireup="true"
    CodeFile="frm_Attendance.aspx.cs" Inherits="Payroll_frm_Attendance" %>
 
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="cphDefault" runat="Server">
    <table align="center">
        <tr>
            <td colspan="4">
                <asp:Label ID="lbl_Header" runat="server" Text="Attendence Details">
                </asp:Label>
            </td>
        </tr>
        <tr>
            <td>
                <asp:Label ID="lbl_BusinessUnit" runat="server" Text="Business Unit">
                </asp:Label>
            </td>
            <td>
                <b>:</b>
            </td>
            <td>
                <telerik:RadComboBox ID="rcmb_AttBusinessUnit" runat="server" AutoPostBack="true">
                </telerik:RadComboBox>
            </td>
            <td>
            </td>
        </tr>
        <tr>
            <td>
                <asp:Label ID="lbl_Period" runat="server" Text="Period">
                </asp:Label>
            </td>
            <td>
                <b>:</b>
            </td>
            <td>
                <telerik:RadComboBox ID="rcmb_AttPeriod" runat="server" AutoPostBack="true" OnSelectedIndexChanged="rcmb_Period_SelectedIndexChanged">
                </telerik:RadComboBox>
            </td>
            <td>
            </td>
        </tr>
        <tr runat="server" id="tblr_AttPeriodElement" visible="false">
            <td>
                <asp:Label ID="lbl_PeriodElement" runat="server" Text="Period Element">
                </asp:Label>
            </td>
            <td>
                <b>:</b>
            </td>
            <td>
                <telerik:RadComboBox ID="rcmb_AttPeriodElement" runat="server" AutoPostBack="true"
                    OnSelectedIndexChanged="rcmb_AttPeriodElement_SelectedIndexChanged">
                </telerik:RadComboBox>
            </td>
            <td>
            </td>
        </tr>
    </table>
    <table align="center">
        <tr>
            <td align="center">
                <telerik:RadGrid ID="rg_Attendence" runat="server" AutoGenerateColumns="false" GridLines="None"
                    Width="750px" OnItemDataBound="rg_Attendence_ItemDataBound" OnPreRender="rg_Attendence_PreRender"
                    EnableViewState="false" OnNeedDataSource="rg_Attendence_NeedDataSource"
                    onitemcreated="rg_Attendence_ItemCreated">
                    <ClientSettings>
                        <Scrolling AllowScroll="true" UseStaticHeaders="true" SaveScrollPosition="true" FrozenColumnsCount="1" />
                    </ClientSettings>
                    <MasterTableView Width="100%" EnableColumnsViewState="false" EnableViewState="false">
                        <Columns>
                            <telerik:GridTemplateColumn Visible="false">
                                <ItemTemplate>
                                    <asp:Label ID="lbl_Empid" runat="server" Text='<%# Eval("ATTENDANCE_EMP_ID") %>'>
                                    </asp:Label>
                                </ItemTemplate>
                            </telerik:GridTemplateColumn>
                            <telerik:GridTemplateColumn Visible="true" HeaderText="Employee Name">
                                <ItemTemplate>
                                    <asp:Label ID="lbl_Name" runat="server" Text='<%# Eval("ATTENDANCE_EMP_NAME") %>'>
                                    </asp:Label>
                                </ItemTemplate>
                            </telerik:GridTemplateColumn>
                        </Columns>
                    </MasterTableView>
                </telerik:RadGrid>
            </td>
        </tr>
        <tr>
            <td align="center">
                <asp:Button ID="btn_Save" runat="server" Text="Save" OnClick="btn_Save_Click" Visible="false" />
                <asp:Button ID="btn_Finalize" runat="server" Text="Finalize" OnClick="btn_Save_Click"
                    Visible="false" />
            </td>
        </tr>
    </table>
</asp:Content>
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 SMHR;
using Telerik.Web.UI;
 
public partial class Payroll_frm_Attendance : System.Web.UI.Page
{
    SMHR_PAYROLL _obj_smhr_payroll;
    SMHR_LOGININFO _obj_SMHR_LoginInfo;
    SMHR_EMPLOYEE _obj_smhr_Employee;
    SMHR_ATTENDANCE _obj_Smhr_Attendance;
    SMHR_PERIODDTL _obj_Smhr_Prddtl;
    RadComboBox rcmbList = new RadComboBox();
    DataTable dt_ds=new DataTable();
 
    protected void Page_Load(object sender, EventArgs e)
    {
        if(!Page.IsPostBack)
        {
            loadDropdown();
        }
    }
 
    protected void loadDropdown()
    {
        try
        {
            rcmb_AttBusinessUnit.Items.Clear();
            _obj_SMHR_LoginInfo = new SMHR_LOGININFO();
            _obj_SMHR_LoginInfo.ORGANISATION_ID = Convert.ToInt32(Session["ORG_ID"]);
            _obj_SMHR_LoginInfo.LOGIN_ID = Convert.ToInt32(Session["USER_ID"]);
            DataTable dt_BUDetails = BLL.get_Business_Units(_obj_SMHR_LoginInfo);
            rcmb_AttBusinessUnit.DataSource = dt_BUDetails;
            rcmb_AttBusinessUnit.DataTextField = "BUSINESSUNIT_CODE";
            rcmb_AttBusinessUnit.DataValueField = "BUSINESSUNIT_ID";
            rcmb_AttBusinessUnit.DataBind();
            rcmb_AttBusinessUnit.Items.Insert(0, new Telerik.Web.UI.RadComboBoxItem("Select", "-1"));
 
            SMHR_PERIOD _obj_smhr_period = new SMHR_PERIOD();
            DataTable dt_Details = new DataTable();
            _obj_smhr_period.OPERATION = operation.Select;
            _obj_smhr_period.ORGANISATION_ID = Convert.ToInt32(Session["ORG_ID"]);
            dt_Details = BLL.get_PeriodHeaderDetails(_obj_smhr_period);
            rcmb_AttPeriod.DataSource = dt_Details;
            rcmb_AttPeriod.DataValueField = "PERIOD_ID";
            rcmb_AttPeriod.DataTextField = "PERIOD_NAME";
            rcmb_AttPeriod.DataBind();
            rcmb_AttPeriod.Items.Insert(0, new RadComboBoxItem("Select", "-1"));
        }
        catch (Exception ex)
        {
            SMHR.BLL.Error_Log(Session["USER_ID"].ToString(), ex.TargetSite.ToString(), ex.Message.Replace("'", "''"), "frm_Attendence", ex.StackTrace, DateTime.Now);
            Response.Redirect("~/Frm_ErrorPage.aspx");
            return;
        }
    }
 
    protected void rcmb_Period_SelectedIndexChanged(object o, Telerik.Web.UI.RadComboBoxSelectedIndexChangedEventArgs e)
    {
        try
        {
            _obj_smhr_payroll = new SMHR_PAYROLL();
            _obj_smhr_payroll.PERIODDTLID = Convert.ToInt32(rcmb_AttPeriod.SelectedValue);
            _obj_smhr_payroll.MODE = 28;
            DataTable dt_Details = BLL.get_payrolltrans(_obj_smhr_payroll);
            if (dt_Details.Rows.Count != 0)
            {
                rcmb_AttPeriodElement.DataSource = dt_Details;
                rcmb_AttPeriodElement.DataValueField = "PRDDTL_ID";
                rcmb_AttPeriodElement.DataTextField = "PRDDTL_NAME";
                rcmb_AttPeriodElement.DataBind();
                rcmb_AttPeriodElement.Items.Insert(0, new RadComboBoxItem("Select"));
                tblr_AttPeriodElement.Visible = true;
            }
            else
            {
                tblr_AttPeriodElement.Visible = false;
                 
            }
        }
        catch (Exception ex)
        {
            SMHR.BLL.Error_Log(Session["USER_ID"].ToString(), ex.TargetSite.ToString(), ex.Message.Replace("'", "''"), "frm_Attendence", ex.StackTrace, DateTime.Now);
            Response.Redirect("~/Frm_ErrorPage.aspx");
            return;
        }
    }
 
    protected void btn_Save_Click(object sender, EventArgs e)
        {
        DataTable dt_NoOfDays = Dal.ExecuteQuery("SELECT DATEDIFF(DD,PRDDTL_STARTDATE,PRDDTL_ENDDATE)+1 as NoOfDays FROM SMHR_PERIODDETAILS WHERE PRDDTL_ID='" + Convert.ToInt32(rcmb_AttPeriodElement.SelectedValue) + "'");
        bool status = false;
        string str_PeriodElementMonth = null;
        string str_PeriodYear = null;
        ViewState["chk_PostBack"]="true";
        string str_CurrentDate = DateTime.Now.ToShortDateString();
        string[] str_Split = str_CurrentDate.Split(new char[] { '/' });
        string str_Date = str_Split[1];
        _obj_Smhr_Attendance = new SMHR_ATTENDANCE();
        DataTable dt_NoOfDays1 = Dal.ExecuteQuery("SELECT DATEDIFF(DD,PRDDTL_STARTDATE,PRDDTL_ENDDATE)+1 as NoOfDays FROM SMHR_PERIODDETAILS WHERE PRDDTL_ID='" + Convert.ToInt32(rcmb_AttPeriodElement.SelectedValue) + "'");
        int I_Days1 = Convert.ToInt32(dt_NoOfDays.Rows[0][0]);
        SMHR_PERIOD _obj_smhr_Period = new SMHR_PERIOD();
        _obj_smhr_Period.OPERATION = operation.Check1;
        _obj_smhr_Period.PERIOD_ID = Convert.ToInt32(rcmb_AttPeriod.SelectedValue);
        DataTable dt_Period = BLL.get_PeriodHeaderDetails(_obj_smhr_Period);
        if (dt_Period.Rows.Count != 0)
        {
            str_PeriodYear = Convert.ToString(dt_Period.Rows[0][0]);
        }
        SMHR_PERIODDTL _obj_smhr_PeriodDetails = new SMHR_PERIODDTL();
        _obj_smhr_PeriodDetails.OPERATION = operation.Check1;
        _obj_smhr_PeriodDetails.PRDDTL_ID = Convert.ToInt32(rcmb_AttPeriodElement.SelectedValue);
        _obj_smhr_PeriodDetails.PRDDTL_PERIOD_ID = Convert.ToInt32(rcmb_AttPeriod.SelectedValue);
        DataTable dt_PeriodDetails = BLL.get_PeriodDetails(_obj_smhr_PeriodDetails);
        if (dt_PeriodDetails.Rows.Count != 0)
        {
            str_PeriodElementMonth = Convert.ToString(dt_PeriodDetails.Rows[0][0]);
        }
        Label lbl_Empid = new Label();
        for (int I_GridCount = 0; I_GridCount <= rg_Attendence.Items.Count - 1; I_GridCount++)
        {
            lbl_Empid = rg_Attendence.Items[I_GridCount].FindControl("lbl_Empid") as Label;
            for (int I_GridColCount = 1; I_GridColCount <= Convert.ToInt32(I_Days1); I_GridColCount++)
            {
                rcmbList = rg_Attendence.Items[I_GridCount].FindControl(Convert.ToString(I_GridColCount)) as RadComboBox;
                string str_DayCount = Convert.ToString(I_GridColCount);
                string str_Attendance = str_PeriodElementMonth + "/" + str_DayCount + "/" + str_PeriodYear + " " + Convert.ToString(DateTime.Now.ToLongTimeString());
                switch(((Button)sender).ID.ToUpper())
                {
                    case "BTN_SAVE":
                _obj_Smhr_Attendance.ATTENDANCE_BU_ID = Convert.ToInt32(rcmb_AttBusinessUnit.SelectedValue);
                _obj_Smhr_Attendance.ATTENDANCE_PERIOD_DTL_ID = Convert.ToInt32(rcmb_AttPeriodElement.SelectedValue);
                _obj_Smhr_Attendance.ATTENDANCE_DATE = Convert.ToDateTime(str_Attendance);
                _obj_Smhr_Attendance.ATTENDANCE_EMP_ID = Convert.ToInt32(lbl_Empid.Text);
                _obj_Smhr_Attendance.ORGANISATION_ID = Convert.ToInt32(Session["ORG_ID"]);
                _obj_Smhr_Attendance.OPERATION = operation.Validate;
                DataTable dt_ChkAttendance = BLL.get_Attendance(_obj_Smhr_Attendance);
                if(dt_ChkAttendance.Rows.Count!=0)
                {
                    if (Convert.ToString(dt_ChkAttendance.Rows[0]["ATTENDANCE_FINALIZE"]) == "1")
                    {
 
                    }
                    else
                    {
                        _obj_Smhr_Attendance.OPERATION = operation.Update;
                        _obj_Smhr_Attendance.ATTENDANCE_MODE = true;
                        _obj_Smhr_Attendance.ATTENDANCE_FINALIZE = 0;
                        _obj_Smhr_Attendance.ATTENDANCE_BU_ID = Convert.ToInt32(rcmb_AttBusinessUnit.SelectedValue);
                        _obj_Smhr_Attendance.ATTENDANCE_PERIOD_DTL_ID = Convert.ToInt32(rcmb_AttPeriodElement.SelectedValue);
                        _obj_Smhr_Attendance.ATTENDANCE_DATE = Convert.ToDateTime(str_Attendance);
                        _obj_Smhr_Attendance.ATTENDANCE_EMP_ID = Convert.ToInt32(lbl_Empid.Text);
                        _obj_Smhr_Attendance.ATTENDANCE_STATUS = Convert.ToString(rcmbList.SelectedValue);
                        _obj_Smhr_Attendance.ORGANISATION_ID = Convert.ToInt32(Session["ORG_ID"]);
                        if (BLL.set_Attendance(_obj_Smhr_Attendance))
                        {
                            status = true;
                        }
                        else
                        {
                            status = false;
                        }
                    }
                }
                else
                {
                    _obj_Smhr_Attendance.ATTENDANCE_BU_ID = Convert.ToInt32(rcmb_AttBusinessUnit.SelectedValue);
                    _obj_Smhr_Attendance.ATTENDANCE_PERIOD_DTL_ID = Convert.ToInt32(rcmb_AttPeriodElement.SelectedValue);
                    _obj_Smhr_Attendance.ATTENDANCE_DATE = Convert.ToDateTime(str_Attendance);
                    _obj_Smhr_Attendance.ATTENDANCE_EMP_ID = Convert.ToInt32(lbl_Empid.Text);
                    _obj_Smhr_Attendance.ATTENDANCE_STATUS = Convert.ToString(rcmbList.SelectedValue);
                    _obj_Smhr_Attendance.ORGANISATION_ID = Convert.ToInt32(Session["ORG_ID"]);
                    _obj_Smhr_Attendance.ATTENDANCE_FINALIZE = 0;
                    _obj_Smhr_Attendance.OPERATION = operation.Insert;
                     
                }
                break;
                    case "BTN_FINALIZE":
                _obj_Smhr_Attendance.ATTENDANCE_BU_ID = Convert.ToInt32(rcmb_AttBusinessUnit.SelectedValue);
                _obj_Smhr_Attendance.ATTENDANCE_PERIOD_DTL_ID = Convert.ToInt32(rcmb_AttPeriodElement.SelectedValue);
                _obj_Smhr_Attendance.ATTENDANCE_DATE = Convert.ToDateTime(str_Attendance);
                _obj_Smhr_Attendance.ATTENDANCE_EMP_ID = Convert.ToInt32(lbl_Empid.Text);
                _obj_Smhr_Attendance.ORGANISATION_ID = Convert.ToInt32(Session["ORG_ID"]);
                _obj_Smhr_Attendance.OPERATION = operation.Validate;
                DataTable dt_ChkAttendance1 = BLL.get_Attendance(_obj_Smhr_Attendance);
                if (dt_ChkAttendance1.Rows.Count != 0)
                {
                    if (Convert.ToString(dt_ChkAttendance1.Rows[0]["ATTENDANCE_FINALIZE"]) == "1")
                    {
 
                    }
                    else
                    {
                        _obj_Smhr_Attendance = new SMHR_ATTENDANCE();
                        _obj_Smhr_Attendance.OPERATION = operation.Update;
                        _obj_Smhr_Attendance.ATTENDANCE_MODE = false;
                        _obj_Smhr_Attendance.ATTENDANCE_FINALIZE = 1;
                        _obj_Smhr_Attendance.ATTENDANCE_BU_ID = Convert.ToInt32(rcmb_AttBusinessUnit.SelectedValue);
                        _obj_Smhr_Attendance.ATTENDANCE_DATE = Convert.ToDateTime(str_Attendance);
                        if (BLL.set_Attendance(_obj_Smhr_Attendance))
                        {
                            status = true;
                        }
                        else
                        {
                            status = false;
                        }
                    }
                }
                break;
                    default:
                break;
            }
            }
 
        }
    }
 
    protected void btn_Finalize_Click(object sender, EventArgs e)
    {
         
    }
 
    protected void rcmb_AttPeriodElement_SelectedIndexChanged(object o, RadComboBoxSelectedIndexChangedEventArgs e)
    {
        string str_CurrentDate = DateTime.Now.ToShortDateString();
        string[] str_Split = str_CurrentDate.Split(new char[] { '/' });
        string str_Month=str_Split[0];
        string str_Date = str_Split[1];
        string str_Year=str_Split[2];
        _obj_Smhr_Prddtl = new SMHR_PERIODDTL();
        _obj_Smhr_Prddtl.PRDDTL_ID = Convert.ToInt32(rcmb_AttPeriodElement.SelectedValue);
        _obj_Smhr_Prddtl.OPERATION = operation.Select;
        DataTable dt_Prddtl_EndDate = BLL.get_PeriodDetails(_obj_Smhr_Prddtl);
        DateTime DT_Prddtl_EndDate = Convert.ToDateTime(dt_Prddtl_EndDate.Rows[0]["PRDDTL_ENDDATE"]);
        string str_Prddtl_EndDate = DT_Prddtl_EndDate.ToShortDateString();
        string[] str_Prddtl_EndDateSplit = str_Prddtl_EndDate.Split(new char[] { '/'});
        string str_EndMonth = str_Prddtl_EndDateSplit[0];
        string str_EndDate=str_Prddtl_EndDateSplit[1];
        string str_EndYear = str_Prddtl_EndDateSplit[2];
        btn_Save.Visible = true;
        if (Convert.ToInt32(str_EndYear) <= Convert.ToInt32(str_Year))
        {
            if (Convert.ToInt32(str_EndMonth) <= Convert.ToInt32(str_Month))
            {
            btn_Finalize.Visible=true;
            }
        }
        rg_Attendence.Visible = true;
        loadGrid();
    }
 
    public void loadGrid()
    {
        //here i am creating the columns       
 
        DataTable dt_NoOfDays = Dal.ExecuteQuery("SELECT DATEDIFF(DD,PRDDTL_STARTDATE,PRDDTL_ENDDATE)+1 as NoOfDays FROM SMHR_PERIODDETAILS WHERE PRDDTL_ID='" + Convert.ToInt32(rcmb_AttPeriodElement.SelectedValue) + "'");
        int I_Days = Convert.ToInt32(dt_NoOfDays.Rows[0][0]);
        ViewState["NoOfDays"] = Convert.ToString(I_Days);
        for (int I_ColumnCount = 1; I_ColumnCount <= I_Days; I_ColumnCount++)
        {
            GridTemplateColumn gridtemplatecolumn = new GridTemplateColumn();
            gridtemplatecolumn.ItemTemplate = new MyTemplate(Convert.ToString(I_ColumnCount));
            gridtemplatecolumn.DataField = Convert.ToString("LEAVE_STATUS");
            gridtemplatecolumn.HeaderText = Convert.ToString(I_ColumnCount);
            gridtemplatecolumn.UniqueName = Convert.ToString(I_ColumnCount);
            this.rg_Attendence.MasterTableView.Columns.Add(gridtemplatecolumn);
            ViewState["grid_DayCount"] = Convert.ToString(I_ColumnCount);
            string grid_DayCount = Convert.ToString(ViewState["grid_DayCount"]);
            try
            {
                _obj_Smhr_Attendance = new SMHR_ATTENDANCE();
                _obj_Smhr_Attendance.OPERATION = operation.GetAttendance;
                _obj_Smhr_Attendance.ATTENDANCE_BU_ID = Convert.ToInt32(rcmb_AttBusinessUnit.SelectedItem.Value);
                _obj_Smhr_Attendance.ATTENDANCE_PERIOD_DTL_ID = Convert.ToInt32(rcmb_AttPeriodElement.SelectedValue);
                DataTable DT_Employee = new DataTable();
                DT_Employee = BLL.get_Attendance(_obj_Smhr_Attendance);
                if (DT_Employee.Rows.Count != 0)
                {
                    rg_Attendence.DataSource = DT_Employee;
                    rg_Attendence.DataBind();
                }
                else
                {
                    _obj_Smhr_Attendance = new SMHR_ATTENDANCE();
                    _obj_Smhr_Attendance.ATTENDANCE_BU_ID = Convert.ToInt32(rcmb_AttBusinessUnit.SelectedValue);
                    _obj_Smhr_Attendance.ORGANISATION_ID = Convert.ToInt32(Session["ORG_ID"]);
                    _obj_Smhr_Attendance.OPERATION = operation.SELECTEMPLOYEE;
                    DataTable dt_Emp = BLL.get_Attendance(_obj_Smhr_Attendance);
                    if (dt_Emp.Rows.Count != 0)
                    {
                        rg_Attendence.DataSource = dt_Emp;
                        rg_Attendence.DataBind();
                         
                    }
                     
                }
            }
            catch (Exception ex)
            {
                SMHR.BLL.Error_Log(Session["USER_ID"].ToString(), ex.TargetSite.ToString(), ex.Message.Replace("'", "''"), "frm_Attendance", ex.StackTrace, DateTime.Now);
                Response.Redirect("~/Frm_ErrorPage.aspx");
                return;
            }
        }
        loadEmployees();
    }
 
    public class MyTemplate : ITemplate
    {
        //here i am instantiating columns and radcombobox
 
        protected RadComboBox lblControl;
        public string colname;
        public MyTemplate(string cName)
        {
            colname = cName;
        }
 
        public void InstantiateIn(System.Web.UI.Control container)
        {
            lblControl = new RadComboBox();
            lblControl.ID = colname;
            container.Controls.Add(lblControl);
            lblControl.Items.Insert(0, new RadComboBoxItem("Select", "Select"));
            lblControl.Items.Insert(1, new RadComboBoxItem("P", "P"));
            lblControl.Items.Insert(2, new RadComboBoxItem("A", "A"));
            lblControl.Items.Insert(3, new RadComboBoxItem("L", "L"));
            lblControl.Items.Insert(4, new RadComboBoxItem("W", "W"));
            lblControl.Items.Insert(5, new RadComboBoxItem("T", "T"));
            lblControl.Items.Insert(6, new RadComboBoxItem("C", "C"));
            lblControl.Items.Insert(7, new RadComboBoxItem("H", "H"));
            lblControl.Items.Insert(8, new RadComboBoxItem("HD", "HD"));
            lblControl.EnableViewState = false;
        }
    }
 
    protected void loadEmployees()
    {
        //here i am binding the datatable to rad grid
 
        try
        {
            int i = 0;
            _obj_Smhr_Attendance = new SMHR_ATTENDANCE();
            _obj_Smhr_Attendance.OPERATION = operation.GetAttendance;
            _obj_Smhr_Attendance.ATTENDANCE_BU_ID = Convert.ToInt32(rcmb_AttBusinessUnit.SelectedItem.Value);
            _obj_Smhr_Attendance.ATTENDANCE_PERIOD_DTL_ID = Convert.ToInt32(rcmb_AttPeriodElement.SelectedValue);
            DataTable DT_Employee = new DataTable();
            DT_Employee = BLL.get_Attendance(_obj_Smhr_Attendance);
            ViewState["DT_Employee"] = DT_Employee;
            if (DT_Employee.Rows.Count != 0)
            {
              
                rg_Attendence.DataSource = DT_Employee;
                rg_Attendence.DataBind();
                DataTable dt_NoOfDays = Dal.ExecuteQuery("SELECT DATEDIFF(DD,PRDDTL_STARTDATE,PRDDTL_ENDDATE)+1 as NoOfDays FROM SMHR_PERIODDETAILS WHERE PRDDTL_ID='" + Convert.ToInt32(rcmb_AttPeriodElement.SelectedValue) + "'");
                int I_Days = Convert.ToInt32(dt_NoOfDays.Rows[0][0]);
                for (int I_ColumnCount = 1; I_ColumnCount <= I_Days; I_ColumnCount++)
                {
                    for (i = 0; i <= rg_Attendence.Items.Count - 1; i++)
                    {
                        rcmbList = rg_Attendence.Items[i].FindControl(Convert.ToString(I_ColumnCount)) as RadComboBox;
                       if(Convert.ToString(Convert.ToString(DT_Employee.Rows[i][I_ColumnCount])).Trim() !="")
                       {
                        if ((Convert.ToString(Convert.ToString(DT_Employee.Rows[i][I_ColumnCount])).Substring(0,1)).Trim() == "P")
                        {
                            rcmbList.SelectedIndex = rcmbList.FindItemIndexByValue(Convert.ToString("P"));
                        }
                        else if ((Convert.ToString(Convert.ToString(DT_Employee.Rows[i][I_ColumnCount])).Substring(0,1)).Trim() == "A")
                        {
                            rcmbList.SelectedIndex = rcmbList.FindItemIndexByValue(Convert.ToString("A"));
                        }
                        else if ((Convert.ToString(Convert.ToString(DT_Employee.Rows[i][I_ColumnCount])).Substring(0, 1)).Trim() == "L")
                        {
                            rcmbList.SelectedIndex = rcmbList.FindItemIndexByValue(Convert.ToString("L"));
                        }
                        else if ((Convert.ToString(Convert.ToString(DT_Employee.Rows[i][I_ColumnCount])).Substring(0, 1)).Trim() == "W")
                        {
                            rcmbList.SelectedIndex = rcmbList.FindItemIndexByValue(Convert.ToString("W"));
                        }
                        else if ((Convert.ToString(Convert.ToString(DT_Employee.Rows[i][I_ColumnCount])).Substring(0, 1)).Trim() == "T")
                        {
                            rcmbList.SelectedIndex = rcmbList.FindItemIndexByValue(Convert.ToString("T"));
                        }
                        else if ((Convert.ToString(Convert.ToString(DT_Employee.Rows[i][I_ColumnCount])).Substring(0, 1)).Trim() == "C")
                        {
                            rcmbList.SelectedIndex = rcmbList.FindItemIndexByValue(Convert.ToString("C"));
                        }
                        else if ((Convert.ToString(Convert.ToString(DT_Employee.Rows[i][I_ColumnCount])).Substring(0, 1)).Trim() == "H")
                        {
                            rcmbList.SelectedIndex = rcmbList.FindItemIndexByValue(Convert.ToString("H"));
                        }
                        string str = Convert.ToString(DT_Employee.Rows[i][I_ColumnCount]);
                        string[] s1 = str.Split(new char[] { '-' });
                        if (s1[1] == "1")
                        {
                            rcmbList.Enabled = false;
                        }
                         
                       }
                        else
                        {
                            rcmbList.SelectedIndex=1;
                            string str_CurrentDate = DateTime.Now.ToShortDateString();
                            string[] str_Split = str_CurrentDate.Split(new char[] { '/' });
                            string str_Date = str_Split[1];
                            if (Convert.ToInt32(I_ColumnCount) > Convert.ToInt32(str_Date))
                            {
                                rcmbList.Enabled = false;
                            }
                        }
                    }
                }
            }
            else
            {
                DataTable dt_NoOfDays = Dal.ExecuteQuery("SELECT DATEDIFF(DD,PRDDTL_STARTDATE,PRDDTL_ENDDATE)+1 as NoOfDays FROM SMHR_PERIODDETAILS WHERE PRDDTL_ID='" + Convert.ToInt32(rcmb_AttPeriodElement.SelectedValue) + "'");
                int I_Days = Convert.ToInt32(dt_NoOfDays.Rows[0][0]);
                for (int I_ColumnCount = 1; I_ColumnCount <= I_Days; I_ColumnCount++)
                {
                    for (i = 0; i <= rg_Attendence.Items.Count - 1; i++)
                    {
                        rcmbList = rg_Attendence.Items[i].FindControl(Convert.ToString(I_ColumnCount)) as RadComboBox;
                        rcmbList.SelectedIndex = 1;
                        string str_MonthNo = DateTime.Now.Month.ToString();
                        if(Convert.ToInt32(rcmb_AttPeriodElement.SelectedIndex)>Convert.ToInt32(str_MonthNo))
                        {
                            rcmbList.Enabled=false;
                            btn_Finalize.Enabled = false;
                            btn_Save.Enabled = false;
                        }
                    }
                }
            }
        }
 
        catch (Exception ex)
        {
            SMHR.BLL.Error_Log(Session["USER_ID"].ToString(), ex.TargetSite.ToString(), ex.Message.Replace("'", "''"), "frm_Attendance", ex.StackTrace, DateTime.Now);
            Response.Redirect("~/Frm_ErrorPage.aspx");
            return;
        }
    }
}
ut i want to see my design and coding part. Then you will have a clear idea.
0
Iana Tsolova
Telerik team
answered on 04 Apr 2011, 09:14 AM
Hi anirud,

I reviewed your code and was able to understand your scenario. However you should know that:
    - RadGrid does not support having declarative columns as well as columns added dynamically. You should either add all columns declaratively or dynamically.
    - If you have GridTemplateColumns added dynamically, you should do all the coding on Page_Init. In this case the whole grid should be created dynamically on Page_Init.

Therefore I suggest that you follow the steps described in this topic in order to achieve your goal. There the grid columns are changed based on DropDownList selection.

Kind regards,
Iana
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
0
anirud
Top achievements
Rank 1
answered on 05 Apr 2011, 04:11 PM
Hi Iana,
Thanks for reference code but that is nice as far as columns are concerned. When I try to created radcomboboxes inside Rad Grid in each of its cells the issue starts from there. Also I am facing problem in handling the postback from those comboboxes inside grid. Futhere I have save button in order to save the text selected on those comboboxes which are inside grid in database(again postback).
Due these total of 3 postbacks i am unable to capture the text selected on those comboboxes which are inside grid.
Thanks
0
Iana Tsolova
Telerik team
answered on 06 Apr 2011, 03:47 PM
Hi anirud,

If I properly understand you are adding the comboboxes in each cell for all rows in the grid, right? And the problem is that you cannot access them in the save button Click event handler?

Kind regards,
Iana
the Telerik team
Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
0
anirud
Top achievements
Rank 1
answered on 27 Apr 2011, 07:46 AM
HI lana,
yes you are right. I need radcomboboxes in that way only. But due to postbacks at multiple levels i am losing the rad grid every time .
For ex, at time of paging,click on button etc.
Thanks.
0
Iana Tsolova
Telerik team
answered on 27 Apr 2011, 01:54 PM
Hi anirud,

Try creating the grid with the template columns entire in code behind, on Page_Init as described in the below articles and see if it makes any difference:
http://www.telerik.com/help/aspnet-ajax/grid-programmatic-creation.html
http://www.telerik.com/help/aspnet-ajax/grid-changing-structure-dynamically.html

Regards,
Iana
the Telerik team

Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal.

0
Namrata
Top achievements
Rank 1
answered on 09 May 2015, 10:33 AM

i want to make student attendance from. i want to display the number of days on change of month in grid view

like this

student list        1/05/2015         2/05/2015       till last day

abc                        p                           p                        a

xyz                          p                          p                         p

 

0
Brett
Top achievements
Rank 1
answered on 12 May 2015, 04:14 PM
I haven't reviewed all of your issues, but since you're using the ITemplate.InitateIn (seemingly correctly).. 
It seems that the only thing you you're missing is the adding/assigning of the OnBinding, and OnSelectedIndexChanged an event handlers of the control you're adding to the container in the InitiateIn method.


public class MyTemplate : ITemplate

    //here i am instantiating columns and radcombobox         
protected RadComboBox lblControl;        
public string colname;        
  
public MyTemplate(string cName)        
{            
colname = cName;        
}         
  
public void InstantiateIn(System.Web.UI.Control container)        
{
lblControl = new RadComboBox();

lblControl.OnBinding += RadComboBox_OnBinding;
lblControl.OnSelectedIndexChanged += RadComboBox_OnSelectedIndexChanged;
lblControl.ID = colname;            
lblControl.Items.Insert(0, new RadComboBoxItem("Please Select", "None"));      
lblControl.EnableViewState = false;         

container.Controls.Add(lblControl);                  
}   

    protected void RadComboBox_OnBinding(object sender, System.EventArgs e)
{
// sender is a control (RadComboBox) that implements the INamingContainer which can be casted to 'GridDataItem'.. 
// GridDataItem.DataItem can be casted to your DataModel, or the instance/data of the property that correlates to the "Field" Property of the GridTemplateColumn you defined in your Code-Behind

RadComboBox control = (RadComboBox)sender;
GridDataItem container = ((GridDataItem)control.NamingContainer);
YouDataModel data = ((YourDataModel)container.DataItem)


//lblControl.Items.Insert(1, new RadComboBoxItem("P", "P"));            
//lblControl.Items.Insert(2, new RadComboBoxItem("A", "A"));            
//lblControl.Items.Insert(3, new RadComboBoxItem("L", "L"));           
//lblControl.Items.Insert(4, new RadComboBoxItem("W", "W"));           
//lblControl.Items.Insert(5, new RadComboBoxItem("T", "T"));            
//lblControl.Items.Insert(6, new RadComboBoxItem("C", "C"));           
//lblControl.Items.Insert(7, new RadComboBoxItem("H", "H"));            
//lblControl.Items.Insert(8, new RadComboBoxItem("HD", "HD"));         
}

protected void RadComboBox_OnSelectedIndexChanged(object sender, System.EventArgs e)
{
// do something here... 

// A good idea would be to to create your OWN delegate event in this class, and raise it here.. you can then handle the event in the code-behind by assigning an event handler  method to the delegate in your loadGrid method.


}

}
0
saheste
Top achievements
Rank 1
answered on 26 May 2015, 09:32 PM

hi

i have the same problem 

but i dont resolve i did all of them in your answers but dont fix

thanks

Tags
General Discussions
Asked by
anirud
Top achievements
Rank 1
Answers by
Iana Tsolova
Telerik team
anirud
Top achievements
Rank 1
Namrata
Top achievements
Rank 1
Brett
Top achievements
Rank 1
saheste
Top achievements
Rank 1
Share this question
or