Rad dataform to open in Insert when added in EditformControl of RadGrid

6 posts, 0 answers
  1. jyotsna
    jyotsna avatar
    9 posts
    Member since:
    Mar 2016

    Posted 18 Mar Link to this post

    I am trying to open the Raddataform which is in Editform control of Rad Grid in the insert mode ,and as there are no items in the grid it goes to exception  as above users,I tried the solution from Ole  like inserting an empty template but dint work out. when I have data in the grid it works fine for the new grid to add a record using the dataform it fails.pls suggest.Here is sample.

    I also Tried All options mentioned in the other Threads

     //   gridDataform.DataForm.IsItemInserted = true;
                      //  gridDataform.DataForm.Rebind();
                        // gridDataform.DataForm.Items[0].FireCommandEvent("InitInsert", "");
                        gridDataform.DataForm.ShowInsertItem();
     

    gridDataform is the instance of the usercontrol which has Raddataform and this code is beign used in the grid itemcommand.

     

                        if (gridDataform == null)
                        { throw new Exception("No Grid Found"); }

                        log.logDebug(logMessage: "Fire Insert Mode for DataForm");


                       gridDataform.DataForm.Items[0].FireCommandEvent("InitInsert", "");
    Also my add buttons are on the mastertableview of the grid

     

     <MasterTableView Width="100%" CommandItemDisplay="Top" ShowGroupFooter="true" AllowFilteringByColumn="true">
                <EditFormSettings EditFormType="Template">
                    <EditColumn UniqueName="EditCommandColumn1" />
                    <FormTemplate>
                        <uc1:PageUIControl IsBoundToGrid="true" runat="server" ID="EditFormControl"  />
                    </FormTemplate>
                    <PopUpSettings ScrollBars="None" />
                </EditFormSettings>

                <CommandItemTemplate>


                    <div style="color:black!important;" >

                        <asp:LinkButton ID="btnEditSelected" runat="server" CommandName="EditSelected" Visible='<%# RadGridUI.EditIndexes.Count == 0 %>'><i class="fa fa-pencil fa-lg"></i></asp:LinkButton>
                            <asp:LinkButton ID="btnUpdateEdited" runat="server" CommandName="UpdateEdited" Visible='<%# RadGridUI.EditIndexes.Count > 0 %>'><i class="fa fa-pencil fa-lg"></i></asp:LinkButton>
                            <asp:LinkButton ID="btnCancel" runat="server" CommandName="CancelAll" Visible='<%# RadGridUI.EditIndexes.Count > 0 || RadGridUI.MasterTableView.IsItemInserted %>'><i class="fa fa-ban fa-lg"></i></asp:LinkButton>&nbsp;&nbsp;
                           <asp:LinkButton ID="btnNew" runat="server" CommandName="InitInsert" Visible='<%# !RadGridUI.MasterTableView.IsItemInserted %>'><i class="fa fa-plus-square fa-lg"></i></asp:LinkButton>
                            <asp:LinkButton ID="btnInsert" runat="server" CommandName="PerformInsert" Visible='<%# RadGridUI.MasterTableView.IsItemInserted %>'><i class="fa fa-plus-square fa-lg"></i></asp:LinkButton>&nbsp;&nbsp;
                            <asp:LinkButton ID="btnDelete" OnClientClick="javascript:return confirm('Delete all selected customers?')" runat="server" CommandName="DeleteSelected"><i class="fa fa-trash fa-lg"></i></asp:LinkButton>&nbsp;&nbsp;

                    </div>

                </CommandItemTemplate>
            </MasterTableView>

  2. Maria Ilieva
    Admin
    Maria Ilieva avatar
    4017 posts

    Posted 23 Mar Link to this post

    Hello,

    I would suggest you to review the online demo below that demonstrates how the RadDataForm can be used as external edit form for RadGrid.
    http://demos.telerik.com/aspnet-ajax/dataform/application-scenarios/integration-with-radgrid/defaultcs.aspx
    Try to implement this approach on you end and see if it works for you.

    Regards,
    Maria Ilieva
    Telerik
  3. UI for ASP.NET Ajax is Ready for VS 2017
  4. jyotsna
    jyotsna avatar
    9 posts
    Member since:
    Mar 2016

    Posted 23 Mar in reply to Maria Ilieva Link to this post

    My scenario is different here,I have all my code written dynamically,binding data to Grid ,and binding data to raddataform,So inorder to acheive tht I have to trigger the raddataform insert/edit from the grid item databound.So Please suggest how can I initiate  the Insert mode from the Grids itemdatabound if there are no records,I.e inserting for the first time.

    And As i said this approach totally works fine for insert/Edit if there is data.The issue is only with inserting the first record.

    Thanks

  5. Maria Ilieva
    Admin
    Maria Ilieva avatar
    4017 posts

    Posted 28 Mar Link to this post

    Hello,

    Can you please share your full page markup and related code behind so that we can further revise the exact scenario you have and advise you further?

    Regards,
    Maria Ilieva
    Telerik
  6. jyotsna
    jyotsna avatar
    9 posts
    Member since:
    Mar 2016

    Posted 28 Mar in reply to Maria Ilieva Link to this post

    Here is  the usercontrol with the dataform:
    <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="PageUIControl.ascx.cs" Inherits="BMA.Core_User_Controls.PageUIControl" %>
    <%@ Register TagPrefix="telerik" Namespace="Telerik.Web.UI" Assembly="Telerik.Web.UI" %>
    <telerik:RadAjaxManagerProxy ID="RadAjaxManager1" runat="server" ClientIDMode="AutoID">
        <AjaxSettings>
            <telerik:AjaxSetting AjaxControlID="Raddataform1">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="Raddataform1" LoadingPanelID="PageUIPnlLoad"></telerik:AjaxUpdatedControl>
                    <telerik:AjaxUpdatedControl ControlID="PageUIErrorNotification" LoadingPanelID="PageUIPnlLoad"> </telerik:AjaxUpdatedControl>  <telerik:AjaxUpdatedControl ControlID="ValidationSummary1" LoadingPanelID="PageUIPnlLoad">
                    </telerik:AjaxUpdatedControl>
                </UpdatedControls>
            </telerik:AjaxSetting>
        </AjaxSettings>
    </telerik:RadAjaxManagerProxy>
    <link href="../Content/styles.css" rel="stylesheet" />


    <div id="divPageUIControlMain">


        <asp:Panel ID="Panel1" runat="server" Width="100%" BorderStyle="None" CssClass="PageUIBackground">
            <telerik:RadAjaxLoadingPanel runat="server" ID="PageUIPnlLoad" Skin="Metro" Transparency="35">
                         <div style="background-color:#ffffff; width:100%; height:100%"></div>
                        </telerik:RadAjaxLoadingPanel>  
            <telerik:RadNotification ID="PageUIErrorNotification" runat="server" EnableRoundedCorners="true"
            EnableShadow="true" Text="" Title="" Animation="Slide" AnimationDuration="800" Position="TopCenter" ContentScrolling="Auto">
                    <ContentTemplate>
                        <b>Please copy the Log below and send to Support Team for Issue Resolution </b>
                        <br>
                        <asp:TextBox TextMode="MultiLine" ID="txtpageui" Enabled="false" Height="130" Width="580" runat="server"></asp:TextBox>
                    </ContentTemplate> 
                   </telerik:RadNotification>
                   <telerik:RadDataForm Visible="true" runat="server" ID="Raddataform1" AllowPaging="True" EnableViewState="true"  OnNeedDataSource="Raddataform1_NeedDataSource" BorderStyle="None" 
                       OnItemUpdating="RadDataForm1_ItemUpdating" OnItemCanceling="Raddataform1_ItemCanceling"  OnItemInserting="RadDataForm1_ItemInserting" >
                        </telerik:RadDataForm>

     
        <asp:ValidationSummary ID="ValidationSummary1" runat="server"  ShowMessageBox="false"  ShowSummary="true" ShowValidationErrors="true"    />
        </asp:Panel>
    </div>
    Code behind:
    using BMA.Helper;
    using System;
    using System.Collections.Generic;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using Telerik.Web;
    using Telerik.Web.UI;



    namespace BMA.Core_User_Controls
    {
        public partial class PageUIControl : System.Web.UI.UserControl
        {
            public string UserID
            {
                get
                {

                    return Session["UserID"].ToString();
                }
                set
                {
                    Session["UserID"] = value;
                }
            }
        

            public UserContextHelper UserContext
            {
                get
                {
                    return (UserContextHelper)Session["UserContext"];
                }
                set
                {
                    Session["UserContext"] = value;
                }
            }
            public RadDataForm DataForm
            {
                get
                {
                    return Raddataform1;
                }
            }
            public string KeyNameValue
            {
                get
                {
                    return ViewState["PageUIKeyName"].ToString();
                }
                set
                {
                    ViewState["PageUIKeyName"] = value;
                }
            }

            

            public string EntityObject
            {
                get
                {
                    if (ViewState["PageUIEntityObject"] == null)
                    { ViewState["PageUIEntityObject"] = ""; }
                    return ViewState["PageUIEntityObject"].ToString();
                }
                set
                {
                    ViewState["PageUIEntityObject"] = value;
                }
            }

            public Mode UpdateMode
            {
                get
                {
                    if (ViewState["PageUIUpdateMode"] == null)
                    { ViewState["PageUIUpdateMode"] = Mode.Item; }
                    return (Mode)ViewState["PageUIUpdateMode"];
                }
                set
                {
                    ViewState["PageUIUpdateMode"] = value;
                }
            }
            public enum Mode
            {
                Update,
                Insert,
                Item
            }

            public string Entity
            {
                get
                {
                    if (ViewState["PageUIEntity"] == null)
                    { ViewState["PageUIEntity"] = ""; }
                    return ViewState["PageUIEntity"].ToString();
                }
                set
                {
                    ViewState["PageUIEntity"] = value;
                }
            }
            private string _primaryKeyValue;
            public event EventHandler ItemCommand;

          
            public int GridItemIndex
            {
                set
                {
                    ViewState["PageUIGridItemIndex"] = value;

                }
                get
                {
                    if (ViewState["PageUIGridItemIndex"] == null)
                    { ViewState["PageUIGridItemIndex"] = -1; }

                    return (int)ViewState["PageUIGridItemIndex"];
                }
            }

            public bool IsBoundToGrid
            {
                set
                {
                    ViewState["PageUIIsBoundToGrid"] = value;

                }
                get
                {
                    if (ViewState["PageUIIsBoundToGrid"] == null)
                    { ViewState["PageUIIsBoundToGrid"] = false; }

                    return (bool)ViewState["PageUIIsBoundToGrid"];
                }
            }
            public int TaskOrderID
            {
                get
                {
                    if (ViewState["PageUITaskOrderID"] == null)
                    {
                        if (ViewState["PageUITaskOrderID"] == null)
                            ViewState["PageUITaskOrderID"] = 0;
                    }
                    return (int)ViewState["PageUITaskOrderID"];
                }
                set
                {
                    ViewState["TableUITaskOrderID"] = value;
                }
            }
            public string PrimaryKeyValue
            {
                get
                {

                    return (string)ViewState["PageUIprimaryKeyValue"];
                }
                set
                {
                   ViewState["PageUIprimaryKeyValue"] = value;
                }
            }
            public string PrimaryKeyValueData
            {
                get
                {

                    return (string)ViewState["PageUIPrimaryKeyValueData"];
                }
                set
                {
                    ViewState["PageUIPrimaryKeyValueData"] = value;
                }
            }
            
            public int columnsno
            {
                get
                {
                    if (ViewState["PageUIcolumnsno"] == null)
                    { ViewState["PageUIcolumnsno"] = 5; }

                    return (int)ViewState["PageUIcolumnsno"];
                }
                set
                {
                    ViewState["PageUIcolumnsno"] = value;
                }
            }

            public string Validationgroup
            {
                get
                {
                    return (String)ViewState["Validationgroup"];
                }
                set
                {
                    ViewState["Validationgroup"] = value;
                }
            }

            protected void Page_Init(object sender, EventArgs e)
            {

                logHelper log = null;
                try
                {

                    log = logHelper.getlogger(ref log, Logger: "PageUI.Page_Init", userid: UserID, userContext: UserContext);
                    UserContext = log.vUserObj;
                    log.logDebug(logMessage: "Page_Init Start");

                    if (!Page.IsPostBack)
                    {

                        CurrentSkin = "Metro";
                    }
                    
                    if (IsBoundToGrid)
                    {
                        GridEditFormItem item = (GridEditFormItem)this.NamingContainer;
                        EntityTableUIControl TableCtl = (EntityTableUIControl)item.OwnerTableView.Parent.Parent.Parent;
                         // EntityTableUIControl TableCtl = (EntityTableUIControl)item.OwnerTableView.Parent;
                       // EntityTableUIControl TableCtl = (EntityTableUIControl)item.FindControl("EntityTableUIControl");
                        EntityObject = TableCtl.EntityObject;
                        Entity = TableCtl.Entity;

                            PrimaryKeyValue = TableCtl.PrimaryKeyValue;
                     
                        PrimaryKeyValueData = TableCtl.PrimaryKeyValueData;
                        if (PrimaryKeyValueData == "")
                            PrimaryKeyValueData = null;
                        
                            ValidationSummary1.ValidationGroup = TableCtl.Validationgroup;
                        Raddataform1.ValidationSettings.ValidationGroup = TableCtl.Validationgroup;
                        columnsno = TableCtl.columnsno;
                       
                    }
                    else
                    {
                        string keydata = Request.QueryString["PrimaryKeyData"];
                        PrimaryKeyValueData = keydata;//"5539";

                       Entity = Request.QueryString["Entity"];
                        EntityObject = Request.QueryString["EntityObject"];
                        UserID = this.UserID;//Request.QueryString["UserID"];
                        
                    }
                    Raddataform1.Attributes["Updating"] = "false";
                    
                  //  Raddataform1.Attributes["Inserting"] = "false";
                    log.logDebug(logMessage: "PageUI.Page_Init Executing RenderTableUITemplates Start");

                    RenderTableUITemplates(uiEntity: Entity, log: ref log);

                   // Notification.Title = Entity + " Table UI Notifications";
                    //}

                }
                catch (Exception ex)
                {

                    log.logError(logMessage: "PageUI.Page_Init Error: " + ex.Message);
                    //throw ex;
                    ((TextBox)PageUIErrorNotification.ContentContainer.FindControl("txtpageui")).Text = log.logstr;
                    PageUIErrorNotification.Show();
                }
                finally
                {
                    log.logDebug(logMessage: "Page_Init Exit ");
                    log.Flush(logger: "PageUI.Page_Init");
                }

            }

            private void LayOutprerender_event(object sender, EventArgs e)
            {

            }
            public string CurrentSkin
            {
                get
                {

                    return Session["CurrentSkin"].ToString();
                }
                set
                {

                    Session["CurrentSkin"] = value;
                }
            }

            //public RadNotification Notification
            //{
            //    get
            //    {

            //        return (RadNotification)Session["Notification"];
            //    }
            //    set
            //    {

            //        Session["Notification"] = value;
            //    }
            //}


            public void RenderTableUITemplates(string uiEntity, ref logHelper log)
            {

                try
                {

                    DataSet entityMetaData = null;
                    // int columnsno = 4;

                    log = logHelper.getlogger(ref log, Logger: "RenderPageUITemplates", userid: UserID, userContext: UserContext);
                    UserContext = log.vUserObj;
                    log.logDebug(logMessage: "RenderPageUITemplates Start uiEntity: " + "Entityttribute");

                    entityMetaData = DynamicUILayoutHelper.FetchEntityMetaData(uiEntity, ref log);
                    foreach (DataRow rowitem in entityMetaData.Tables[1].Rows)
                    {
                        if (rowitem["Access"].ToString().IndexOf("R") > -1)
                        {
                            Raddataform1.Visible = true;
                            break;
                        }
                        else
                            Raddataform1.Visible = false;

                    }
                    log.logDebug(logMessage: "RenderPageUITemplates Creating Templates");

                    KeyNameValue = DynamicUILayoutHelper.DataformKey(ref log, Entity, ref Raddataform1);
                    ////Locate the changed row in the DataSource

                    Raddataform1.DataKeyNames = new string[] { KeyNameValue };
                    Raddataform1.LayoutTemplate = null;
                 Raddataform1.EmptyDataTemplate = new PageUIEmptyDataTemplate(entityMetaData, log, CurrentSkin, new System.EventHandler(LayOutprerender_event));
                    Raddataform1.EditItemTemplate = new PageUIEditItemTemplate(entityMetaData, log, columnsno);
                    Raddataform1.ItemTemplate = new PageUIItemTemplate(entityMetaData, log, columnsno);
                    Raddataform1.InsertItemTemplate = new PageUIInsertItemTemplate(entityMetaData, log, columnsno);

                    log.logDebug(logMessage: "RenderPageUITemplates Templates Done");

                    PageUIErrorNotification.Title = "PageUI :" + Entity + "  Page UI Notifications";
                    
                }
                catch (Exception ex)
                {
                    log.logError(logMessage: "RenderPageUITemplates Error: " + ex.Message);
                    //Notification.Title = "PageUI" + "RenderPageUITemplates Error: " + ex.Message;
                    // throw ex;
                    ((TextBox)PageUIErrorNotification.ContentContainer.FindControl("txtpageui")).Text = log.logstr;
                    PageUIErrorNotification.Show();
                }
                finally
                {
                    log.logDebug(logMessage: "RenderPageUITemplates Exit ");
                    log.Flush(logger: "RenderPageUITemplates");
                }
                

            }
            protected void Raddataform1_NeedDataSource(object sender, RadDataFormNeedDataSourceEventArgs e)
            {
                logHelper log = null;
                try
                {
                    log = logHelper.getlogger(ref log, Logger: "Raddataform1_NeedDataSource", userid: UserID, userContext: UserContext);
                    UserContext = log.vUserObj;
                    log.logDebug(logMessage: "Raddataform1_NeedDataSource Start");
                    if (Entity != "")
                    {
                      DataSet entityData = DynamicUILayoutHelper.FetchEntityData(EntityObject, selectedCommand: "[EIS_SP_GetGenericEntityData]", log: ref log, primaryVal: PrimaryKeyValueData,taskOrder:TaskOrderID);
                       
                        log.logDebug(logMessage: "Raddataform1_NeedDataSource Fetched Data Done");

                        Raddataform1.DataSource = entityData;
                        if (entityData.Tables[0].Rows.Count > 0)
                            Raddataform1.Visible = true;
                        else
                            Raddataform1.Visible = false;

                        log.logDebug(logMessage: "Raddataform1_NeedDataSource RadDataform DataSource Setdate Done");
                    }

                }
                catch (Exception ex)
                {
                    log.logError(logMessage: "Raddataform1_NeedDataSource Error: " + ex.Message);
                    //throw ex;
                    ((TextBox)PageUIErrorNotification.ContentContainer.FindControl("txtpageui")).Text = log.logstr;
                    PageUIErrorNotification.Show();
                }
                finally
                {
                    log.logDebug(logMessage: "Raddataform1_NeedDataSource Exit ");
                    log.Flush(logger: "Raddataform1_NeedDataSource");
                }

            }
            protected void RadDataForm1_ItemInserting(object sender, RadDataFormCommandEventArgs e)
            {
                logHelper log = null;
                try
                {
                    log = logHelper.getlogger(ref log, Logger: "RadDataForm1_ItemInserting", userid: UserID, userContext: UserContext);
                    UserContext = log.vUserObj;
                    log.logDebug(logMessage: "RadDataForm1_ItemInserting Start");

                    RadDataFormEditableItem editedItem = e.DataFormItem as RadDataFormEditableItem;


                    Hashtable newValues = new Hashtable();
                 //   Raddataform1.Attributes["Inserting"] = "True";
                    editedItem.ExtractValues(newValues);

                    string Rowkey = "";
                    newValues.Add("UserName", UserID);
                   // newValues.Add("TaskOrderID", TaskOrderID);
                    newValues.Add("InsertMode", "I");
                    
                    //  object dit = editedItem.GetDataKeyValue(KeyNameValue);
                    log = logHelper.getlogger(ref log, Logger: "RadDataForm1_ItemInserting" + "NewValues:" +newValues);
                    DynamicUILayoutHelper.InsertEntityData(Entity, ref log, Rowkey, newValues);
                    //Raddataform1.Attributes["Inserting"] = "false";
                    if (IsBoundToGrid)
                    {

                        GridEditFormItem item = (GridEditFormItem)this.NamingContainer;
                        EntityTableUIControl parentgrid = (EntityTableUIControl)item.OwnerTableView.Parent.Parent.Parent;
                        // EntityTableUIControl parentgrid = (EntityTableUIControl)editedItem.Page.FindControl("RadGridUI");
                        if (parentgrid != null)
                        {
                            parentgrid.Grid.MasterTableView.GetInsertItem().FireCommandEvent("Cancel", "");
                        }
                    }


                }
                catch (Exception ex)
                {
                    log.logError(logMessage: "RadDataForm1_ItemInserting Error: " + ex.Message);
                    // throw ex;
                    ((TextBox)PageUIErrorNotification.ContentContainer.FindControl("txtpageui")).Text = log.logstr;
                    PageUIErrorNotification.Show();
                }
                finally
                {
                    log.logDebug(logMessage: "RadDataForm1_ItemInserting Exit ");
                    log.Flush(logger: "RadDataForm1_ItemInserting");
                }
            }
            protected void RadDataForm1_ItemUpdating(object sender, RadDataFormCommandEventArgs e)

            {
                logHelper log = null;
                try
                {
                    log = logHelper.getlogger(ref log, Logger: "RadDataForm1_ItemUpdating", userid: UserID, userContext: UserContext);
                    UserContext = log.vUserObj;
                    log.logDebug(logMessage: "RadDataForm1_ItemUpdating Start");

                    RadDataFormEditableItem editedItem = e.DataFormItem as RadDataFormEditableItem;

                    Hashtable newValues = new Hashtable();
                    Raddataform1.Attributes["Updating"] = "true";
                    editedItem.ExtractValues(newValues);

                    newValues.Add("UserName", UserID);
                   // newValues.Add("TaskOrderID", TaskOrderID);
                    newValues.Add("UpdateMode", "U");

                    object dit = editedItem.GetDataKeyValue(KeyNameValue);
                    log = logHelper.getlogger(ref log, Logger: "RadDataForm1_GetValues");
                    log.logDebug(logMessage: "RadDataForm1_NewValues"+ "NewValues: " + newValues.Count);
                    DynamicUILayoutHelper.UpdateEntityData(Entity, ref log, dit.ToString(), newValues);
                    Raddataform1.Attributes["Updating"] = "false";
                    if (IsBoundToGrid)
                    {

                        GridEditFormItem item = (GridEditFormItem)this.NamingContainer;
                       // EntityTableUIControl parentgrid = (EntityTableUIControl)item.OwnerTableView.Parent.Parent.Parent;
                        EntityTableUIControl parentgrid = (EntityTableUIControl)item.OwnerTableView.Parent.Parent.Parent;
                        // EntityTableUIControl parentgrid = (EntityTableUIControl)editedItem.Page.FindControl("RadGridUI");
                        if (parentgrid == null)
                        { throw new Exception("Parent Grid Not Found!"); }

                        if (UpdateMode == Mode.Update)
                        {
                            if (GridItemIndex != -1)
                            {
                                if (parentgrid.Grid.Items[GridItemIndex] != null)
                                { parentgrid.Grid.Items[GridItemIndex].FireCommandEvent("Cancel", ""); }

                            }
                        }
                        else if (UpdateMode == Mode.Insert)
                        {

                            if (parentgrid.MasterTable.IsItemInserted)
                            {
                                parentgrid.Grid.MasterTableView.GetInsertItem().FireCommandEvent("Cancel", "");
                            }

                        }
                    }

                }
                catch (Exception ex)
                {
                    log.logError(logMessage: "RadDataForm1_ItemUpdating Error: " + ex.Message);
                    // throw ex;
                    ((TextBox)PageUIErrorNotification.ContentContainer.FindControl("txtpageui")).Text = log.logstr;
                    PageUIErrorNotification.Show();
                }
                finally
                {
                    log.logDebug(logMessage: "RadDataForm1_ItemUpdating Exit ");
                    log.Flush(logger: "RadDataForm1_ItemUpdating");
                }


            }

            protected void Raddataform1_ItemCanceling(object sender, RadDataFormCommandEventArgs e)
            {
                logHelper log = null;
                try
                {
                    log = logHelper.getlogger(ref log, Logger: "Raddataform1_ItemCanceling", userid: UserID, userContext: UserContext);
                    UserContext = log.vUserObj;
                    log.logDebug(logMessage: "Raddataform1_ItemCanceling Start");

                    RadDataFormEditableItem editedItem = e.DataFormItem as RadDataFormEditableItem;


                    if (IsBoundToGrid)
                    {
                        GridEditFormItem item = (GridEditFormItem)this.NamingContainer;
                        // EntityTableUIControl parentgrid = (EntityTableUIControl)editedItem.Page.FindControl("RadGridUI");
                        EntityTableUIControl parentgrid = (EntityTableUIControl)item.OwnerTableView.Parent.Parent.Parent;
                        if (parentgrid == null)
                        { throw new Exception("Parent Grid Not Found!"); }

                        if (UpdateMode == Mode.Update)
                        {
                            if (GridItemIndex != -1)
                            {
                                if (parentgrid.Grid.Items[GridItemIndex] != null)
                                { parentgrid.Grid.Items[GridItemIndex].FireCommandEvent("Cancel", ""); }

                            }
                        }
                        else if (UpdateMode == Mode.Insert)
                        {

                            if (parentgrid.MasterTable.IsItemInserted)
                            {
                                parentgrid.Grid.MasterTableView.GetInsertItem().FireCommandEvent("Cancel", "");
                            }

                        }
                    }

                }
                catch (Exception ex)
                {
                    log.logError(logMessage: "Raddataform1_ItemCanceling Error: " + ex.Message);
                    //throw ex;
                    ((TextBox)PageUIErrorNotification.ContentContainer.FindControl("txtpageui")).Text = log.logstr;
                    PageUIErrorNotification.Show();
                }
                finally
                {
                    log.logDebug(logMessage: "Raddataform1_ItemCanceling Exit ");
                    log.Flush(logger: "Raddataform1_ItemCanceling");
                }
            }
        }


    }
    Grids UI where Raddataform is used in EditformSettings.I am trying to click the Add icon from the Grid to open a RadDataform to edit/insert.
     <telerik:RadGrid ID="RadGridUI" AllowFilteringByColumn="true" MasterTableView-EditMode="EditForms"
            FilterType="Classic"
            EnableHeaderContextMenu="true"
            EnableHeaderContextFilterMenu="true"
            AllowMultiRowEdit="false"
            AllowMultiRowSelection="false"
            AllowAutomaticUpdates="false"
            AllowAutomaticDeletes="false"
            AllowAutomaticInserts="false"
            OnNeedDataSource="RadGridUI_NeedDataSource"
            OnDeleteCommand="RadGridUI_DeleteCommand"
            OnFilterCheckListItemsRequested="RadGridUI_FilterCheckListItemsRequested"
            OnItemCreated="RadGridUI_ItemCreated"
            OnItemCommand="RadGridUI_ItemCommand" OnItemDataBound="RadGridUI_ItemDataBound"
            EnableLinqExpressions="false"
            ClientSettings-AllowColumnsReorder ="true" 
            AllowSorting="true" runat="server" Width="100%" CssClass="GenericGrid">

            <MasterTableView Width="100%" CommandItemDisplay="Top" ShowGroupFooter="true" AllowFilteringByColumn="true">
                <EditFormSettings EditFormType="Template">
                    <EditColumn UniqueName="EditCommandColumn1" />
                    <FormTemplate>
                        <uc1:PageUIControl IsBoundToGrid="true" runat="server" ID="EditFormControl"  />
                    </FormTemplate>
                    <PopUpSettings ScrollBars="None" />
                </EditFormSettings>

                <CommandItemTemplate>


                    <div style="color:black!important;" >

                        <asp:LinkButton ID="btnEditSelected" runat="server" CommandName="EditSelected" Visible='<%# RadGridUI.EditIndexes.Count == 0 %>'><i class="fa fa-pencil fa-lg"></i></asp:LinkButton>
                            <asp:LinkButton ID="btnUpdateEdited" runat="server" CommandName="UpdateEdited" Visible='<%# RadGridUI.EditIndexes.Count > 0 %>'><i class="fa fa-pencil fa-lg"></i></asp:LinkButton>
                            <asp:LinkButton ID="btnCancel" runat="server" CommandName="CancelAll" Visible='<%# RadGridUI.EditIndexes.Count > 0 || RadGridUI.MasterTableView.IsItemInserted %>'><i class="fa fa-ban fa-lg"></i></asp:LinkButton>&nbsp;&nbsp;
                           <asp:LinkButton ID="btnNew" runat="server" CommandName="InitInsert" Visible='<%# !RadGridUI.MasterTableView.IsItemInserted %>'><i class="fa fa-plus-square fa-lg"></i></asp:LinkButton>
                            <asp:LinkButton ID="btnInsert" runat="server" CommandName="PerformInsert" Visible='<%# RadGridUI.MasterTableView.IsItemInserted %>'><i class="fa fa-plus-square fa-lg"></i></asp:LinkButton>&nbsp;&nbsp;
                            <asp:LinkButton ID="btnDelete" OnClientClick="javascript:return confirm('Delete all selected customers?')" runat="server" CommandName="DeleteSelected"><i class="fa fa-trash fa-lg"></i></asp:LinkButton>&nbsp;&nbsp;

                    </div>

                </CommandItemTemplate>
            </MasterTableView>

            <ClientSettings>
                <Selecting AllowRowSelect="true"></Selecting>
                <ClientEvents OnGridCreated="GenericGridCreated"   />
                
            </ClientSettings>
        </telerik:RadGrid>
    and the code where the raddataform is called in insert mode from grids itemcommand.:I tried all the ways in the below commented code:
     protected void RadGridUI_ItemCommand(object sender, GridCommandEventArgs e)
            {

                logHelper log = null;
                PageUIControl gridDataform;
                try
                {
                    log = logHelper.getlogger(ref log, Logger: "RadGridUI_ItemCommand", userid: UserID, userContext: UserContext);
                    UserContext = log.vUserObj;
                    log.logDebug(logMessage: "RadGridUI_ItemCommand Start");
                    log.TaskOrderID = TaskOrderID;


                if (e.CommandName == RadGrid.InitInsertCommandName)
                {
                    e.Canceled = true;
                            log.logDebug(logMessage: "Setup Dataform for Insert");
                    e.Item.OwnerTableView.InsertItem();
                        GridEditableItem insertedItem = e.Item.OwnerTableView.GetInsertItem();

                        if (insertedItem == null)
                        { throw new Exception("No Inserted Item Found"); }

                        gridDataform = (PageUIControl)insertedItem.FindControl("EditFormControl");
                        gridDataform.UpdateMode = PageUIControl.Mode.Insert;
                        gridDataform.UserContext = this.UserContext;
                        gridDataform.UserID = this.UserID;
                        //String MyUserControlId = GridEditFormItem.EditFormUserControlID;
                        //    gridDataform = insertedItem.FindControl(MyUserControlId) as PageUIControl;

                        if (gridDataform == null)
                        { throw new Exception("No Grid Found"); }

                        log.logDebug(logMessage: "Fire Insert Mode for DataForm");

                      // gridDataform.DataForm.IsItemInserted = true;
                        //  gridDataform.DataForm.Rebind();
                         gridDataform.DataForm.Items[0].FireCommandEvent("InitInsert", "");
                      //  gridDataform.DataForm.ShowInsertItem();
                        //gridDataform.DataForm.DataSource=RadDataFormEmptyItem
                      //  gridDataform.DataForm.Items.FireCommandEvent("InitInsert", "");
                       // gridDataform.DataForm.Items[0].FireCommandEvent("InitInsert", "");
                       // gridDataform.DataForm.Items.Add();
                    }
                    else if (e.CommandName == "RowClick")
                        if (ItemCommand !=null)
                        { ItemCommand(sender, e); }
                        

                }
                catch (Exception ex)
                {
                    log.logError(logMessage: "RadGridUI_ItemCommand Error: " + ex.Message );

                    ((TextBox)TableUIErrorNotification.ContentContainer.FindControl("txtnot")).Text = log.logstr;
                    TableUIErrorNotification.Show();
                }
                finally
                {
                    log.logDebug(logMessage: "RadGridUI_ItemCommand Exit ");
                    log.Flush(logger: "RadGridUI_ItemCommand");
                }

            }

    I am also attaching the screen shot for better understanding of how the ui looks with the raddataform  which opens with the above working code if there is data in grid.
  7. Maria Ilieva
    Admin
    Maria Ilieva avatar
    4017 posts

    Posted 31 Mar Link to this post

    Hello,

    The DataForm usage in your code is out of the designed usage of the control. DataForm itself is DataBound control and can be used stand-alone, or outside(but related) the grid

    The EditForm of the grid does not need databound control inside. So your user control can just have the inputs, without wrapping them in DataForm. For reference see this demo:
    http://demos.telerik.com/aspnet-ajax/grid/examples/data-editing/edit-form-types/defaultcs.aspx


    Regards,
    Maria Ilieva
    Telerik
Back to Top
UI for ASP.NET Ajax is Ready for VS 2017