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

RadGrid ItemCommands do not fire...

3 Answers 94 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Venu Daroju
Top achievements
Rank 1
Venu Daroju asked on 10 Nov 2010, 12:55 AM
Hi,

I have a aspx page, and in that page i have a gridview with place holder as a item. i am binding some user controls which contains radgrid, and are being add to place holder dynamically.

the problem is: the radcontrols item events are not firing.
but when i use them in saperate aspx page, everything works fine.

Could you please take a look at following code and help us...

Thank you
v.

aspx page
<asp:GridView ID="EvalGridView" runat="server" AutoGenerateColumns="False" DataKeyNames="ID"
        >
       <Columns>
           <asp:TemplateField HeaderText="EVALUATION FOR THE " SortExpression="Requirements">
               <ItemTemplate>
                     
                   <asp:Label ID="ControlNameLabel" runat="server" Text='<%# Bind("ControlName") %>' Visible="false" /> 
                   <asp:Label ID="ShowDropDown" runat="server" Text='<%# Bind("Qualified") %>' Visible="false" />
                   <asp:Label ID="ShowCheckBox" runat="server" Text='<%# Bind("ChoiceBox") %>' Visible="false" />
                   <asp:Label ID="lblEducatorEvaluationsID" runat="server" Text='<%# Bind("ID") %>' Visible="false" />
                   <asp:UpdatePanel ID="updpnlEval" runat="server">
                       <ContentTemplate>
                           <asp:Table id="tblEvalTable" runat="server">
                               <asp:TableRow VerticalAlign="Top">
                                   <asp:TableCell width="60px" ID="td1" runat="server">
                                       <asp:DropDownList ID="ddlYorN" Width="60px" runat="server" >
                                           <asp:ListItem Value="0" Text="Select" Selected="True" />
                                           <asp:ListItem Value="1" Text="Yes" />
                                           <asp:ListItem Value="2" Text="No"  />                                                                                   
                                       </asp:DropDownList>
                                   </asp:TableCell>
                                   <asp:TableCell width="20px" ID="td2" runat="server">
                                       <asp:CheckBox ID="chkReqConsidered" runat="server" />
                                   </asp:TableCell>
                                   <asp:TableCell>
                                   </asp:TableCell>
                                   <asp:TableCell>
                                       <asp:Label ID="RequirementsLabel" runat="server" Text='<%# Bind("Requirements") %>' CssClass="normal" />
                                       <br />
                                       <asp:PlaceHolder runat="server" ID="phUserControl"  />   
                                   </asp:TableCell>
                                   <asp:TableCell>
                                       <asp:LinkButton ID="lnkbtnAddOrUpdateCredentials" CssClass="bottomhyperlink" CommandArgument='<%# Bind("ID") %>' style="float:right;" runat="server">
                                       </asp:LinkButton>                                    
                                   </asp:TableCell>
                               </asp:TableRow>
                           </asp:Table>
                       </ContentTemplate>
                   </asp:UpdatePanel>
                   <asp:UpdateProgress DynamicLayout="false" ID="updpnlprgTechEval" runat="server">
                       <ProgressTemplate>
                           <div style="position: fixed; top: 0%; right: 50%; background-color: #FFFFBC; padding: 2em 2em 2em 2em;
                               font-weight: bolder; border: solid .1em Brown">
                               <img alt="Processing your request, Please wait"  src="../Images/indicator.gif" />
                               Please wait...
                           </div>
                       </ProgressTemplate>
                   </asp:UpdateProgress>                    
               </ItemTemplate>
           </asp:TemplateField>
       </Columns>
   </asp:GridView>


ascx control
<telerik:RadGrid ID="radGridCourseInfo" runat="server" Width="100%" AllowSorting="true"
        AutoGenerateColumns="False" GridLines="None" Skin="Simple" ShowStatusBar="True"
        ShowFooter="true" OnItemCommand="radGridCourseInfo_ItemCommand" OnItemCreated="radGridCourseInfo_ItemCreated"
        OnNeedDataSource="radGridCourseInfo_NeedDataSource" OnItemDataBound="radGridCourseInfo_ItemDataBind">
        <ClientSettings EnableRowHoverStyle="true">
            <Selecting AllowRowSelect="true" />
            <Scrolling UseStaticHeaders="true" />
        </ClientSettings>
        <MasterTableView DataKeyNames="EducatorCoursesID" Width="100%" ShowHeadersWhenNoRecords="true"
            TableLayout="Auto" EditMode="EditForms" CommandItemSettings-AddNewRecordText="Add New Course">
            <NoRecordsTemplate>
                No Records Available.
            </NoRecordsTemplate>
            <Columns>
                <telerik:GridButtonColumn ButtonType="ImageButton" CommandName="Delete" Text="Delete"
                    ConfirmText="Are you sure you want to delete this Course.?" ConfirmDialogType="RadWindow"
                    UniqueName="DeleteColumn" ImageUrl="~/Images/delete.gif" ItemStyle-Width="2%"
                    ItemStyle-HorizontalAlign="Center" HeaderText="Delete">
                </telerik:GridButtonColumn>
                <telerik:GridBoundColumn DataField="EducatorEvaluationID" UniqueName="SelectedEducatorEvaluationID"
                    Visible="false">
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="CourseNumber" HeaderText="COURSE" ItemStyle-Width="45%"
                    UniqueName="Course" SortExpression="CourseNumber">
                    <HeaderStyle Width="45%" />
                    <ItemStyle Width="45%" />
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="CreditHourInput" HeaderText="HOURS" ItemStyle-Width="45%"
                    UniqueName="CreditHourInput" SortExpression="CreditHourInput">
                    <HeaderStyle Width="45%" />
                    <ItemStyle Width="45%" />
                </telerik:GridBoundColumn>
            </Columns>
            <EditFormSettings CaptionFormatString="Edit ID: {0}" CaptionDataField="EducatorCoursesID"
                EditFormType="Template" PopUpSettings-Modal="true">
                <FormTemplate>
                    <br />
                    <asp:Panel ID="pnlCourses" runat="server" GroupingText="Add Course Information">
                        <br />
                        <table>
                            <tr valign="top">
                                <td>
                                    <asp:Label ID="lblCourses" runat="server" Text="Course" CssClass="label" Style="margin: 0 0 0 0" />
                                </td>
                                <td>
                                    <img src="../Images/required.png" alt="Required Field" />
                                </td>
                                <td>
                                    <asp:TextBox ID="txtCourseNumber" EnableViewState="true" runat="server" CssClass="input" />
                                </td>
                                <td>
                                </td>
                            </tr>
                            <tr valign="top">
                                <td>
                                    <asp:Label ID="lblHours" runat="server" Text="Hours" CssClass="label" Style="margin: 0 0 0 0" />
                                </td>
                                <td>
                                    <img src="../Images/required.png" alt="Required Field" />
                                </td>
                                <td>
                                    <asp:TextBox ID="txtCourseHours" EnableViewState="true" runat="server" CssClass="input integerOnly" />
                                </td>
                                <td>
                                    <telerik:RadComboBox ID="radCboHoursType" runat="server" Skin="Simple" Width="100px"
                                        Height="100px">
                                    </telerik:RadComboBox>
                                </td>
                            </tr>
                        </table>
                        <br />
                        <asp:Label ID="lblAddErrorMsg" runat="server"></asp:Label>
                        <br />
                        <asp:Button ID="btnSave" CssClass="buttonGreen" Text="ADD" runat="server" CommandName="PerformInsert" />
                        <asp:Button ID="btnCancel" CssClass="buttonRed" Text="Cancel" runat="server" CausesValidation="False"
                            CommandName="Cancel"></asp:Button>
                    </asp:Panel>
                </FormTemplate>
            </EditFormSettings>
        </MasterTableView>
        <PagerStyle Mode="NextPrevAndNumeric" />
    </telerik:RadGrid>


code behind for ascx:
protected void radGridCourseInfo_ItemCommand(object source, GridCommandEventArgs e)
{
    if (e.CommandName == RadGrid.InitInsertCommandName)
    {
    }
    else if (e.CommandName == RadGrid.PerformInsertCommandName)
    {
        TextBox otxtCourseNumber = (TextBox)(e.Item.FindControl("txtCourseNumber"));
        TextBox otxtCourseHours = (TextBox)(e.Item.FindControl("txtCourseHours"));
        RadComboBox oradCboHoursType = (RadComboBox)(e.Item.FindControl("radCboHoursType"));
        CheckBox chkSelect = (CheckBox)(e.Item.FindControl("chkSelect"));
        if (otxtCourseNumber != null && otxtCourseHours != null && oradCboHoursType != null)
        {
            if ((Utility.IsEmpty(otxtCourseHours.Text.ToString()) && !Utility.IsDecimal(otxtCourseHours.Text.ToString()))
                || Utility.IsEmpty(otxtCourseNumber.Text.ToString()))
            {
                mMessage = "'Course' and 'Hours' are Required.";
            }
            else if (oradCboHoursType.SelectedValue == "0")
            {
                mMessage = "Select Hours Type";
            }
            else
            {
                EducatorCourseEntity oECE = new EducatorCourseEntity();
                oECE.EducatorID = m_lEducatorID;
                oECE.CourseNumber = Utility.ReturnString(otxtCourseNumber.Text);
                oECE.HourTypeID = Utility.ReturnInteger(oradCboHoursType.SelectedValue);
                oECE.CreditHourInput = Utility.ReturnDecimal(otxtCourseHours.Text);
                oECE.CompletionDt = null;
                oECE.MaintainedBy = App.GetCurrentUserName;
                int CredentialID = InsertCourses(oECE);
                    if (CredentialID > 0)
                    {
                        mMessage = "Educator Course Inserted.";
                        radGridCourseInfo.EditIndexes.Add(-1);
                        radGridCourseInfo.Rebind();
                        if (this.EnableEvalSettings == true)
                        
                            EducatorEvaluationEntity oEEE = new EducatorEvaluationEntity();
                            oEEE.EducatorID = m_lEducatorID;
                            oEEE.EducatorCredentialID = CredentialID;
                            oEEE.CredentialTypeID = (int)Enumerations.CredentialTypeIDFor.Course;
                            oEEE.ApplicationID = this.ApplicationID;
                            oEEE.EvaluationID = this.EvaluationID;
                            oEEE.EducatorServiceID = this.EducatorServiceID;
                            oEEE.MaintainedBy = App.GetCurrentUserName;
                            //make checkbox selected upon sucessfull insertion.
                            UpdateEducatorEvaluationSelections(oEEE, Utility.ReturnDecimal(otxtCourseHours.Text));
                            this.Refresh();
                        }
                    }
                    else
                    {
                        mMessage = "Educator Course Insert Failed.";
                    }
            }
        }
        else
        {
            mMessage = "Error..";
        }
        ShowErrorMsg(mMessage);
    }
    else if (e.CommandName == RadGrid.DeleteCommandName)
    {
        EducatorCourseEntity oECE = new EducatorCourseEntity();
        oECE.EducatorCoursesID = Utility.ReturnInteger(((GridDataItem)(e.Item)).GetDataKeyValue("EducatorCoursesID"));
        oECE.EducatorID = this.EducatorID;
        mMessage = DeleteEducatorCourse(oECE) ? string.Empty : "Error: Unable to Delete Course";
    }
    else if (e.CommandName == "Cancel")
    {
        radGridCourseInfo.EditIndexes.Add(-1);
    }
}

3 Answers, 1 is accepted

Sort by
0
Vasil
Telerik team
answered on 11 Nov 2010, 01:09 PM
Hello Venu,

I made a simplified version of your code scenario. I have one WebUserControl with RadGrid in it and I added this control in a PlaceHolder inside an ASP:GridView. Here the events are firing for this grid, and code inside the radGridCourseInfo_ItemCommand is successfully executed.

Please see the attachment and let me know what differs in your case.

Greetings,
Vasil
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
Venu Daroju
Top achievements
Rank 1
answered on 16 Nov 2010, 03:22 AM
May be the way i am binding radgrid inside the webuser control. Please see the code for the user control i am using.
ascx

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="CourseInformation.ascx.cs" Inherits="CertificationWeb.CertControls.CourseInformation" %>
<%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
  
<script type="text/javascript">
  
    function ValidateDI(otxtCourseNumber, otxtCourseHours, oradCboHoursType) {
        var radCboHoursType = $find(oradCboHoursType);
        var txtCourseHours = document.getElementById(otxtCourseHours);
        var txtCourseNumber = document.getElementById(otxtCourseNumber);
          
        if (txtCourseNumber.value.length == 0) {
            jAlert('Please Enter <em>Course Number</em>.');
            txtCourseNumber.focus();
            return false;
        }
  
        if (txtCourseHours.value.length == 0) {
            jAlert('Please Enter <em>Number of Hours</em>.');
            txtCourseHours.focus();
            return false;
        }
  
        if (radCboHoursType != null) {
            if (radCboHoursType.get_value() == 0) {
                jAlert('Please select <em>Hour Type</em>.');
                radCboHoursType.get_inputDomElement().focus();
                return false;
            }
        }        
          
        return true;
    }
</script>
  
<asp:Panel ID="pnlCourseInfo" runat="server">
    <asp:HiddenField ID="hdnEducatorID" runat="server" />
    <asp:HiddenField ID="hdnServiceID" runat="server" />
    <asp:HiddenField ID="hdnServiceDescriptionID" runat="server" />
    <asp:HiddenField ID="hdnServiceActionID" runat="server" />
    <asp:HiddenField ID="hdnEvaluationID" runat="server" />
    <asp:HiddenField ID="hdnApplicationID" runat="server" />
    <asp:HiddenField ID="hdnEducatorServiceID" runat="server" />
    <asp:HiddenField ID="hdnViewOnly" runat="server" />
    <asp:HiddenField ID="hdnEnableEvalSettings" runat="server" />
  
    <asp:Label ID="lblSelectErrorMsg" runat="server"></asp:Label>
    <br />          
    <telerik:RadGrid ID="radGridCourseInfo" runat="server" Width="100%" AllowSorting="true"
        AutoGenerateColumns="False" GridLines="None" Skin="Simple"
        ShowStatusBar="True" ShowFooter="true" OnItemCommand="radGridCourseInfo_OnItemCommand"
        OnItemCreated="radGridCourseInfo_ItemCreated" OnNeedDataSource="radGridCourseInfo_NeedDataSource"
        OnItemDataBound="radGridCourseInfo_ItemDataBind" >
        <ClientSettings EnableRowHoverStyle="true">
            <Selecting AllowRowSelect="true" />
            <Scrolling UseStaticHeaders="true" />
        </ClientSettings>
        <MasterTableView DataKeyNames="EducatorCoursesID" Width="100%" 
            ShowHeadersWhenNoRecords="true" TableLayout="Auto" EditMode="EditForms"
             CommandItemSettings-AddNewRecordText="Add New Course"
            <NoRecordsTemplate>
                No Records Available.
            </NoRecordsTemplate>
            <Columns>
                <telerik:GridButtonColumn ButtonType="ImageButton" CommandName="Delete" Text="Delete"  ConfirmText="Are you sure you want to delete this Course.?" ConfirmDialogType="RadWindow"
                    UniqueName="DeleteColumn" ImageUrl="~/Images/delete.gif" ItemStyle-Width="2%"
                    ItemStyle-HorizontalAlign="Center" HeaderText="Delete">
                </telerik:GridButtonColumn>
                <telerik:GridTemplateColumn HeaderText="SELECT" DataField="SelectedForEval"
                    ItemStyle-HorizontalAlign="Center" ItemStyle-Width="5%" UniqueName="Select">
                    <ItemTemplate>
                        <asp:CheckBox ID="chkSelect" runat="server" CssClass="checkControl" Checked='<%# Eval("SelectedForEval").ToString() == "1" ? true : false  %>' />
                    </ItemTemplate>
                    <HeaderStyle Width="5%" />
                    <ItemStyle HorizontalAlign="Center" Width="5%" />
                </telerik:GridTemplateColumn>
                <telerik:GridBoundColumn DataField="EducatorEvaluationID" UniqueName="SelectedEducatorEvaluationID" Visible="false" ></telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="CourseNumber" HeaderText="COURSE" 
                    ItemStyle-Width="45%" UniqueName="Course" SortExpression="CourseNumber">
                    <HeaderStyle Width="45%" />
                    <ItemStyle Width="45%" />
                </telerik:GridBoundColumn>
                <telerik:GridBoundColumn DataField="CreditHourInput" HeaderText="HOURS"
                    ItemStyle-Width="45%" UniqueName="CreditHourInput" SortExpression="CreditHourInput">
                    <HeaderStyle Width="45%" />
                    <ItemStyle Width="45%" />
                </telerik:GridBoundColumn>
                  
            </Columns>
            <EditFormSettings CaptionFormatString="Edit ID: {0}" CaptionDataField="EducatorCoursesID"
                EditFormType="Template" PopUpSettings-Modal="true">
                <FormTemplate>
                    <br />
                    <asp:Panel ID="pnlCourses" runat="server" GroupingText="Add Course Information">
  
                   <br />
                   <table>
                    <tr valign="top">
                        <td >
                            <asp:Label ID="lblCourses" runat="server" Text="Course" CssClass="label" style="margin:0 0 0 0" />
                        </td>
                        <td>
                            <img src="../Images/required.png" alt="Required Field" />
                        </td>
                        <td>
                            <asp:TextBox ID="txtCourseNumber" EnableViewState="true" runat="server" CssClass="input" />
                        </td>
                        <td>
                          
                        </td>
                    </tr>
                    <tr valign="top">
                        <td >
                           <asp:Label ID="lblHours" runat="server" Text="Hours" CssClass="label" style="margin:0 0 0 0" />
                        </td>
                        <td>
                            <img src="../Images/required.png" alt="Required Field" />                                
                        </td>
                        <td>
                            <asp:TextBox ID="txtCourseHours" EnableViewState="true" runat="server"  CssClass="input" />
                        </td>
                        <td>
                            <telerik:RadComboBox ID="radCboHoursType" runat="server" Skin="Simple" Width="100px" Height="100px" >
                            </telerik:RadComboBox>
                        </td>
                    </tr>
                   </table>
                        <br />
                        <asp:Label ID="lblAddErrorMsg" runat="server" ></asp:Label>
                        <br />
                        <asp:Button ID="btnSave" CssClass="buttonGreen" Text="ADD"
                            runat="server" CommandName="PerformInsert" />
                          
                        <asp:Button ID="btnCancel" CssClass="buttonRed" Text="Cancel" runat="server" CausesValidation="False"
                            CommandName="Cancel"></asp:Button>
                    </asp:Panel>
                </FormTemplate>
            </EditFormSettings>
        </MasterTableView>
            <ClientSettings>
            </ClientSettings>
            <PagerStyle Mode="NextPrevAndNumeric" />
    </telerik:RadGrid>
  
</asp:Panel>
ascx.cs
public partial class CourseInformation : System.Web.UI.UserControl
    {
        #region Fields
  
        CertServSumFacade oCertServSumFacade = new CertServSumFacade();
        CertServSumEntity oCertServSumEntity = new CertServSumEntity();
  
        decimal total = 0;
  
        #endregion
  
        #region Properties
  
        /// <summary>
        /// Must provide, and then call 'refresh()'
        /// mothode.
        /// </summary>
        public long EducatorID
        {
            set
            {
                  
                this.hdnEducatorID.Value = Utility.ReturnString(value);
            }
            get
            {
                return Utility.ReturnLong(App.HiddenFieldValue(hdnEducatorID, Enumerations.RETURN_DEFAULT_AS.Zero));
            }
        }
  
        public int ApplicationID
        {
            set
            {
                //m_iApplicationID = value;
                hdnApplicationID.Value = value.ToString();
            }
            get
            {
                return Utility.ReturnInteger(App.HiddenFieldValue(hdnApplicationID, Enumerations.RETURN_DEFAULT_AS.Zero));
            }
        }
  
        public int EducatorServiceID
        {
            set
            {
                //m_iEducatorServicesID = value;
                hdnEducatorServiceID.Value = value.ToString();
            }
            get
            {
                return Utility.ReturnInteger(App.HiddenFieldValue(hdnEducatorServiceID, Enumerations.RETURN_DEFAULT_AS.Zero));
            }
        }
  
        #region marked to delete
        // Marked to Delete
        public int ServiceID
        {
            set
            {
                //m_iServiceID = value;
                this.hdnServiceID.Value = Utility.ReturnString(value);
            }
            get
            {
                return Utility.ReturnInteger(App.HiddenFieldValue(hdnServiceID, Enumerations.RETURN_DEFAULT_AS.Zero));
            }
        }
  
        // marked to delete
        public int ServiceDescriptionID
        {
            set
            {
                //m_iServiceDescriptionID = value;
                this.hdnServiceDescriptionID.Value = Utility.ReturnString(value);
            }
            get
            {
                return Utility.ReturnInteger(App.HiddenFieldValue(hdnServiceDescriptionID, Enumerations.RETURN_DEFAULT_AS.Zero));
            }
        }
        #endregion
  
        public int ServiceActionID
        {
            set
            {
                //m_iServiceActionID = value;
                this.hdnServiceActionID.Value = Utility.ReturnString(value);
            }
            get
            {
                return Utility.ReturnInteger(App.HiddenFieldValue(hdnServiceActionID, Enumerations.RETURN_DEFAULT_AS.Zero));
            }
        }
  
        public int EvaluationID
        {
            set
            {
                //m_iEvaluationID = value;
                this.hdnEvaluationID.Value = Utility.ReturnString(value);
  
            }
            get
            {
                return Utility.ReturnInteger(App.HiddenFieldValue(hdnEvaluationID, Enumerations.RETURN_DEFAULT_AS.Zero));
            }
        }
  
        /// <summary>
        /// This will enable Evaluations
        /// need.
        /// Default value is False
        /// <para>
        /// <em>
        /// EducatorID, ApplicationID, EducatorServiceID and EvaluationID
        /// are Reqiured
        /// </em>
        /// </para>
        /// </summary>
        public Nullable<bool> EnableEvalSettings
        {
            set
            {
                bool m_bEnableEvalSettings = value ?? false;
                hdnEnableEvalSettings.Value = m_bEnableEvalSettings ? "1" : "0";
                radGridCourseInfo.MasterTableView.ShowFooter = m_bEnableEvalSettings;
                this.ViewOnly = !m_bEnableEvalSettings;
  
                foreach (GridColumn column in radGridCourseInfo.Columns)
                {
                    if (column.UniqueName == "Select")
                        column.Visible = m_bEnableEvalSettings;
                }
  
            }
            get
            {
                return App.HiddenFieldValue(hdnEnableEvalSettings, Enumerations.RETURN_DEFAULT_AS.Zero) == "0" ? false : true;
            }
        }
  
        public bool ViewOnly
        {
            set
            {
                radGridCourseInfo.MasterTableView.CommandItemDisplay = value ? GridCommandItemDisplay.None : GridCommandItemDisplay.Top;
            }
        }
  
        #endregion
  
        #region Declares
  
        private string mMessage;
  
        #endregion
  
        #region Events
  
        #region Load/Unload
  
        protected void Page_Load(object sender, EventArgs e)
        {
            //Calulates running total of credit hours
            total = 0;
  
            if (!IsPostBack)
            {
                pnlCourseInfo.GroupingText = "COURSE INFORMATION";
                VerifyProperties();
  
                EnableEvalSettings = EnableEvalSettings ?? false;
            }
        }
          
        #endregion
  
        #region Button Events
  
        protected void btnAddCourseInfo_Click(object sender, EventArgs e)
        {
            //pnlCourses.Visible = true;
        }
  
        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            //pnlCourses.Visible = false;
        }
  
        #endregion
  
        #endregion
  
        #region RadGrid Events
  
        protected void radGridCourseInfo_OnItemCommand(object source, GridCommandEventArgs e)
        {
            if (e.CommandName == RadGrid.InitInsertCommandName)
            {
  
            }
            else if (e.CommandName == RadGrid.PerformInsertCommandName)
            {
                TextBox otxtCourseNumber = (TextBox)(e.Item.FindControl("txtCourseNumber"));
                TextBox otxtCourseHours = (TextBox)(e.Item.FindControl("txtCourseHours"));
                RadComboBox oradCboHoursType = (RadComboBox)(e.Item.FindControl("radCboHoursType"));
                CheckBox chkSelect = (CheckBox)(e.Item.FindControl("chkSelect"));
  
                if (otxtCourseNumber != null && otxtCourseHours != null && oradCboHoursType != null)
                {
                    if ((Utility.IsEmpty(otxtCourseHours.Text.ToString()) && !Utility.IsDecimal(otxtCourseHours.Text.ToString()))
                        || Utility.IsEmpty(otxtCourseNumber.Text.ToString()))
                    {
                        mMessage = "'Course' and 'Hours' are Required.";
                    }
                    else if (oradCboHoursType.SelectedValue == "0")
                    {
                        mMessage = "Select Hours Type";
                    }
                    else
                    {
  
                        EducatorCourseEntity oECE = new EducatorCourseEntity();
  
                        oECE.EducatorID = this.EducatorID;
                        oECE.CourseNumber = Utility.ReturnString(otxtCourseNumber.Text);
                        oECE.HourTypeID = Utility.ReturnInteger(oradCboHoursType.SelectedValue);
                        oECE.CreditHourInput = Utility.ReturnDecimal(otxtCourseHours.Text);
                        oECE.CompletionDt = null;
                        oECE.MaintainedBy = App.GetCurrentUserName;
  
                        int CredentialID = InsertCourses(oECE);
                            if (CredentialID > 0)
                            {
                                mMessage = "Educator Course Inserted.";
  
                                if (this.EnableEvalSettings == true)
                                
                                    EducatorEvaluationEntity oEEE = new EducatorEvaluationEntity();
                                    oEEE.EducatorCredentialID = CredentialID;
                                      
                                    //make checkbox selected upon sucessfull insertion.
                                    UpdateEducatorEvaluationSelections(oEEE);
                                }
                            }
                            else
                            {
                                mMessage = "Educator Course Insert Failed.";
                            }
                    }
  
                }
                else
                {
                    mMessage = "Error..";
                }
                ShowErrorMsg(mMessage);
            }
            else if (e.CommandName == RadGrid.DeleteCommandName)
            {
                EducatorCourseEntity oECE = new EducatorCourseEntity();
  
                oECE.EducatorCoursesID = Utility.ReturnInteger(((GridDataItem)(e.Item)).GetDataKeyValue("EducatorCoursesID"));
                oECE.EducatorID = this.EducatorID;
  
                mMessage = DeleteEducatorCourse(oECE) ? string.Empty : "Error: Unable to Delete Course";
            }
            else if (e.CommandName == "Cancel")
            {
                radGridCourseInfo.EditIndexes.Add(-1);
            }
        }
  
        protected void radGridCourseInfo_ItemDataBind(object sender, GridItemEventArgs e)
        {
            #region Assign delete message to DeleteColumn.
  
            if (e.Item is GridDataItem)
            {                
  
                GridDataItem oGridDataItem = e.Item as GridDataItem;
  
                string sDeleteMsg;
  
                ImageButton oDeleteColumn = oGridDataItem["DeleteColumn"].Controls[0] as ImageButton;
                CheckBox oCheckBox = oGridDataItem.FindControl("chkSelect") as CheckBox;
  
                if (oCheckBox != null && oCheckBox.Checked)
                    sDeleteMsg = "This course is selected for Evaluation, Are you sure you want to delete the Course.?";
                else
                    sDeleteMsg = "Are you sure you want to delete this Course.?";
  
                oDeleteColumn.Attributes.Add("OnClick", "if (!jConfirm( ' " + sDeleteMsg + "', 'Delete?', function( r ) { if ( r ) { " + Page.ClientScript.GetPostBackEventReference(oDeleteColumn, String.Empty) + " } else { return false; } } ) ) return false;");
  
            }
  
            #endregion
            if (e.Item is GridEditFormItem && e.Item.IsInEditMode)
            {
                RadComboBox radCboHoursType = (RadComboBox)e.Item.FindControl("radCboHoursType");
                TextBox txtCourseHours = (TextBox)e.Item.FindControl("txtCourseHours");
                 
                if (radCboHoursType != null)
                {
                    App.FillRadComboBox(radCboHoursType, StaticCache.GetHourTypes(), "HourTypesID", "HourTypes");
                    App.AddDefaultItemRadComboBox(radCboHoursType, "0", "Hour Type");
                }
  
                if (txtCourseHours != null)
                {
                    txtCourseHours.CssClass = "input integerOnly";
                }
            }
  
            if (e.Item is GridDataItem)
            {
                GridDataItem dataItem = e.Item as GridDataItem;
                decimal fieldValue = Utility.ReturnDecimal(dataItem["CreditHourInput"].Text); 
  
                string sEducatorEvalutionID = dataItem["SelectedEducatorEvaluationID"].Text;
                  
                long lEducatorEvaluationID = 0 ;
  
                long.TryParse(sEducatorEvalutionID, out lEducatorEvaluationID);
  
                if (lEducatorEvaluationID > 0) 
                total += fieldValue;
            }
            if (e.Item is GridFooterItem)
            {
                GridFooterItem footerItem = e.Item as GridFooterItem;
                footerItem["CreditHourInput"].Text = total == 0 ? "" : "Selected Hours: " + total.ToString();
                //lblTotalNumberOfHourse.Text = total == 0 ? "" : total.ToString();
            }
        }
  
        protected void radGridCourseInfo_ItemCreated(object sender, GridItemEventArgs e)
        {
            if (e.Item is GridDataItem)// && EnableEvalSettings)
            {
                CheckBox chkSelect = (CheckBox)((GridDataItem)e.Item).FindControl("chkSelect");
                chkSelect.CheckedChanged += new EventHandler(chkSelect_CheckedChanged);
                chkSelect.AutoPostBack = true;
            }
  
            if (e.Item is GridEditFormItem && e.Item.IsInEditMode)
            {
                TextBox txtCourseHours = (TextBox)((GridEditFormItem)e.Item).FindControl("txtCourseHours");
                TextBox txtCourseNumber = (TextBox)((GridEditFormItem)e.Item).FindControl("txtCourseNumber");
                RadComboBox radCboHoursType = (RadComboBox)((GridEditFormItem)e.Item).FindControl("radCboHoursType");
                Button btnSave = (Button)((GridEditFormItem)e.Item).FindControl("btnSave");
  
                string sCallFun = string.Empty;
  
                sCallFun += "'" + txtCourseNumber.ClientID + "'";
                sCallFun += ",'" + txtCourseHours.ClientID + "'";
                sCallFun += ",'" + radCboHoursType.ClientID + "'"; 
  
                btnSave.Attributes.Add("onclick", "if(!ValidateDI(" + sCallFun + ")) return false;");
            }
        }
  
        /// <summary>
        /// When user selects a course, add approriate ids to educatorevaluation table,
        /// and display total number of hours selected
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void chkSelect_CheckedChanged(object sender, EventArgs e)
        {
            CheckBox chkSelect = (CheckBox)sender;
            if (chkSelect != null)
            {
                GridTableCell oGTC = (GridTableCell)chkSelect.Parent;
                if(oGTC != null)
                {
                    GridDataItem oGDI = (GridDataItem)oGTC.Parent;
                    if (oGDI != null)
                    {
                        if (oGDI != null)
                        {
                            EducatorEvaluationEntity oEEE = new EducatorEvaluationEntity();
  
                            int iEducatorCoursesID = Utility.ReturnInteger(oGDI.GetDataKeyValue("EducatorCoursesID"));
  
                            string sEducatorEvaluationID = string.IsNullOrEmpty(oGDI["SelectedEducatorEvaluationID"].Text) ? "0" : oGDI["SelectedEducatorEvaluationID"].Text;
  
                            long lEducatorEvaluationID;
  
                            long.TryParse(sEducatorEvaluationID, out lEducatorEvaluationID);
                            decimal dHours = 0;
                            string sCreditHours = oGDI["CreditHourInput"].Text;
                                if (sCreditHours != null && Utility.IsDecimal(sCreditHours))
                                {
                                    dHours = Utility.ReturnDecimal(sCreditHours);
                                }
                                else
                                {
                                    mMessage = "Wrong Selection.";
                                    lblSelectErrorMsg.Text = mMessage;
                                    return;
                                }
                                  
                                oEEE.EducatorCredentialID = iEducatorCoursesID;
                                  
                            if (chkSelect.Checked)
                            {
                                //chkSelect.Checked = UpdateEducatorEvaluationSelections(oEEE);
                                UpdateEducatorEvaluationSelections(oEEE);
                            }
                            if (!chkSelect.Checked && lEducatorEvaluationID > 0)
                            {
                                //chkSelect.Checked = !DeleteEducatorEvaluation(lEducatorEvaluationID, dHours);
                                DeleteEducatorEvaluation(lEducatorEvaluationID, dHours);
                            }
  
                            //radGridCourseInfo.Rebind();
                        }
  
                    }
  
                }                
            }
            radGridCourseInfo.Rebind();
        }
  
        protected void radGridCourseInfo_NeedDataSource(object source, GridNeedDataSourceEventArgs e)
        {
            GetEducatorCourses();
        }
  
        #endregion
  
        #region Public Procedures
  
        public void Refresh()
        {
            try{
            GetEducatorCourses();
            radGridCourseInfo.DataBind();
            //bltlstCourseInfor.DataBind();
            }
            catch (Exception ex)
            {
                Utility.LogError(ex, Utility.GetClassAndMethodName(new StackFrame()));
                mMessage = "Could not get Educator Courses.";
                lblSelectErrorMsg.Text = mMessage;
            }
        }
  
        //Planning to Delete this method
        public void Onload(DataSet dsEducatorCredentials, long lEducatorID, Nullable<int> CertServiceID)
        {
            //hdnEducatorID.Value = lEducatorID.ToString();
            //try
            //{
            //    radGridCourseInfo.DataSource = dsEducatorCredentials.Tables[10];
            //    radGridCourseInfo.DataBind();
  
            //    TeachingExperience1.Onload(dsEducatorCredentials.Tables[7], lEducatorID);
  
            //    //Clock Hours
            //    DataView dv = new DataView(oCertServSumFacade.FetchCourses(CertServiceID));
            //    dv.RowFilter = "HourType = 'CH'";
            //    //App.FillRadComboBox(ddlClkCouseType, dv, "CourseID", "Course");
  
            //    dv.RowFilter = "HourType = 'SH'";
            //    //App.FillRadComboBox(ddlSemCourseType, dv, "CourseID", "Course");
  
            //}
            //catch (Exception ex)
            //{
            //    Utility.LogError(ex, Utility.GetClassAndMethodName(new StackFrame()));
            //    return;
            //}
        }
  
        #endregion
  
        #region Private procedures
  
        /// <summary>
        /// updates EducatorCourses record set iscurrent=0, and related Evaluation row.
        /// </summary>
        /// <param name="oECE"></param>
        /// <returns></returns>
        private bool DeleteEducatorCourse(EducatorCourseEntity oECE)
        {
            return new EducatorCoursesFacade().DeleteEducatorCourse(oECE) > 0 ? true : false;
        }
  
        /// <summary>
        /// Deletes EducatorCourse id from EducatorEvaluations table.
        /// </summary>
        /// <param name="lEducatorEvaluationID"></param>
        /// <param name="dHours"></param>
        /// <returns></returns>
        private bool DeleteEducatorEvaluation(long lEducatorEvaluationID, decimal dHours)
        {
            bool bTransactionSuccess;
  
            if (!(new EducatorEvaluationFacade().DeleteEducatorEvaluation(lEducatorEvaluationID) > 0))
            {
                mMessage = "Could not unselect Course.";
                App.ShowErrorMsg(lblSelectErrorMsg, mMessage);
                bTransactionSuccess = false;
            }
            else
            {
                bTransactionSuccess = true;
            }
  
            return bTransactionSuccess;
        }
  
        /// <summary>
        /// Adds selected Course details as Educator Evaluation.
        /// if oEEE.EducatorEvaluationID = 0 then it is an insert,
        /// else it is an update.
        /// <para>
        /// for insert
        /// <para>
        /// EducatorID, ApplicationID, EducatorServiceID, CredentialTypeID, EvaluationID
        /// , EducatorCredentialID are required.
        /// </para>
        /// </para>
        /// <para>
        /// for update
        /// <para>
        /// just EducatorEvaluationID is good enough.
        /// </para>
        /// </para>
        /// </summary>
        /// <param name="oEEE">
        /// EducatorEvaluationEntity
        /// </param>
        /// <param name="dHours">
        /// Number of Hours [Decimal Type]
        /// </param>
        /// <returns>
        /// bool: true if transaction is success, else false.
        /// </returns>
        private bool UpdateEducatorEvaluationSelections(EducatorEvaluationEntity oEEE)
        {
            bool bTransactionSuccess;
  
            oEEE.EducatorID = this.EducatorID;
            oEEE.EvaluationID = this.EvaluationID;
            oEEE.ApplicationID = this.ApplicationID;
            oEEE.EducatorServiceID = this.EducatorServiceID;
            oEEE.RequirementMet = true;
            oEEE.MaintainedBy = App.GetCurrentUserName;
            oEEE.IsCurrent = true;
  
            oEEE.CredentialTypeID = (int)Enumerations.CredentialTypeIDFor.Course;
            EducatorEvaluationFacade oEEF = new EducatorEvaluationFacade();
            if (!(oEEF.UpdateEducatorEvaluations(oEEE) > 0))
            {
                mMessage = "Error: Unable to add selected Test.";
                App.ShowErrorMsg(lblSelectErrorMsg, mMessage);
                bTransactionSuccess = false;
            }
            else
            {
                bTransactionSuccess = true;
            }
  
            return bTransactionSuccess;
        }
  
        /// <summary>
        /// Verifies all values supplied by
        /// parent page/control, to fullfill settings
        /// </summary>
        private void VerifyProperties()
        {
            //if enableevalsettings is egnored, make it false
            EnableEvalSettings = EnableEvalSettings ?? false;
  
            if (EnableEvalSettings == true)
            {
                if (!(this.EducatorID > 0 && this.ApplicationID > 0 && this.EducatorServiceID > 0 && this.EvaluationID > 0))
                {
                    pnlCourseInfo.Controls.Clear();
  
                    Label lblControlError = new Label();
                    lblControlError.CssClass = "errorBar";
  
                    lblControlError.Text = "If 'EnableEvalSettings' is true, you must provice 'EducatorID', 'ApplicationID', 'EducatorServiceID' and 'EvalationID'";
                    pnlCourseInfo.Controls.Add(lblControlError);
                }
            }
  
            if (this.EducatorID == 0)
            {
                pnlCourseInfo.Controls.Clear();
  
                Label lblControlError = new Label();
                lblControlError.CssClass = "errorBar";
  
                lblControlError.Text = "EducatorID is Required";
                pnlCourseInfo.Controls.Add(lblControlError);
            }
  
        }
  
        /// <summary>
        /// Shows error message
        /// TODO: message is showing twice, need to resolve
        /// </summary>
        /// <param name="mMessage"></param>
        private void ShowErrorMsg(string mMessage)
        {
            App.ShowErrorMsg(App.FindControlRecursive(Page, "lblMessage") as Label, mMessage);
        }
  
        /// <summary>
        /// gets two sets of data, one just educator courses including the
        /// one selected for Evaluation. Another
        /// is for courses selected for evalutions
        /// </summary>
        private void GetEducatorCourses()
        {
            try
            {
                DataTable dt = null;
                //DataTable dt2 = null;
  
                EducatorCourseEntity oECE = new EducatorCourseEntity();
                oECE.EducatorID = this.EducatorID;
                oECE.ApplicationID = this.ApplicationID;
                oECE.EducatorServiceID = this.EducatorServiceID;
                oECE.EvaluationID = this.EvaluationID;
                dt = new EducatorCoursesFacade().FetchEducatorCoursesForEvals(oECE);
  
                radGridCourseInfo.DataSource = dt;
  
                int test = dt.Rows.Count;
                  
                //dt2 = new EducatorCoursesFacade().EducatorCoursesSelectedForEvaluations(oECE);
                //bltlstCourseInfor.DataSource = dt2;
            }
            catch (Exception ex)
            {
                Utility.LogError(ex, Utility.GetClassAndMethodName(new StackFrame()));
                mMessage = "Could not get Educator Courses.";
                lblSelectErrorMsg.Text = mMessage;
            }
        }
  
        /// <summary>
        /// inserts educator Courses
        /// </summary>
        /// <param name="oECE"></param>
        /// <returns></returns>
        private int InsertCourses(EducatorCourseEntity oECE)
        {
            return new EducatorCoursesFacade().UpdateEducatorCourses(oECE);
        }
  
        #endregion
  
    }

i was reading some online form, and foud the advance data binding some times creates this kind of issues if we do not use it properly.

Thank you
Venu.
0
Vasil
Telerik team
answered on 17 Nov 2010, 10:43 AM
Hi Venu Daroju,

You user controls look fine, although I cannot test it without the additional classes used.
The problem may occur because of loading the control at runtime. Please read this help article for more information.

Sincerely yours,
Vasil
the Telerik team
Browse the vast support resources we have to jumpstart 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.
Tags
Grid
Asked by
Venu Daroju
Top achievements
Rank 1
Answers by
Vasil
Telerik team
Venu Daroju
Top achievements
Rank 1
Share this question
or