Hide Rows in Grid Edit Form

2 posts, 0 answers
  1. diego
    diego avatar
    13 posts
    Member since:
    Jul 2011

    Posted 26 May Link to this post

    hello 
    i have the following problem
    i have a radgrid which is totally builded in code behind because it must be bound to different data types
    you can see a preview in this page
    the user may update a record or insert a new one
    when entering in edit mode, some rows in the edit form should be hidden based on the selection of the main item (the INST_MODEL value that cannot be changed in edit mode)
    following is the codebehind of the ascx (i omit fo simplicity the part of code that builds customedittemplate)

    so, when selecting an item with INST_MODEL = GA_CP-LI-COR LI-7200, for example, the rows with INST_SA[...] labels should be hidden

    how can i do it?!

    thanks a lot

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using Telerik.Web.UI;
    using System.Data.Sql;
    using System.Data.SqlClient;
    using System.Collections;
    using System.Data;
    using System.Collections.Specialized;
    using System.Web.UI.HtmlControls;
     
    namespace SitefinityWebApp.EcoControls
    {
        public partial class BADMView : System.Web.UI.UserControl
        {
            string conn = System.Configuration.ConfigurationManager.ConnectionStrings["connMulti"].ConnectionString;
            BadmVar bv = null;
            int idVar = 1000;
            int idSite = 0;
            int insertUserId = 0;
            public string I_MODEL="";
            protected void Page_Load(object sender, EventArgs e)
            {
                Session["idutente"] = 127;
                Session["usname"] = "database";
                if (Session["idutente"] != null && Session["idutente"].ToString()!="")
                {
                    insertUserId = int.Parse(Session["idutente"].ToString());
                }
            }
     
            protected void Page_Init(object sender, EventArgs e)
            {
                /***********************/
                //if (Request["idvar"] != null && Request["idvar"].ToString() != "0")
                if (Request["idsite"] != null && Request["idsite"].ToString() != "")
                {
                    //Response.Write("idvar:: " + Request["idvar"].ToString());
                    //idVar = int.Parse(Request["idvar"].ToString());
                    //pickUpVars.SelectedValue = Request["idvar"].ToString();
                    idSite = int.Parse(Request["idsite"].ToString());
                    sitesDDL.SelectedValue = Request["idsite"].ToString();
                }
                else
                {
                    return;
                }
                //1. Get theBadm Variable Infos
                SqlConnection cn = new SqlConnection();
                cn.ConnectionString = conn;
                cn.Open();
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = cn;
                cmd.CommandText = "...";
                 
     
                //2. Build the grid
                RadGrid grid = new RadGrid();
                grid.ID = "instGrid";
                grid.DataSourceID = "sqlInst";
                grid.PageSize = 15;
                grid.AllowPaging = true;
                grid.PagerStyle.Mode = GridPagerMode.NextPrevAndNumeric;
                grid.AutoGenerateColumns = false;
                grid.AllowAutomaticUpdates = false;
                grid.AllowAutomaticInserts = false;
                grid.AllowAutomaticDeletes = false;
                grid.AllowMultiRowEdit = true;
                //grid.AllowMultiRowSelection = true;
                grid.Skin = "Bootstrap";
                grid.ItemCommand += new GridCommandEventHandler(instGrid_ItemCommand);
                grid.ItemDataBound += new GridItemEventHandler(instGrid_ItemDataBound);
     
                //2.1 Add Customers table 
                grid.MasterTableView.DataKeyNames = new string[] { "id_badmstorage", "value" };
                if (bv.ID != 1)
                {
                    grid.MasterTableView.EditMode = GridEditMode.EditForms;
                    grid.MasterTableView.CommandItemDisplay = GridCommandItemDisplay.Top;
                }
                GridBoundColumn boundColumn = new GridBoundColumn();
                boundColumn.DataField = "id_badmstorage";
                boundColumn.HeaderText = "ID";
                boundColumn.ReadOnly = true;
                grid.MasterTableView.Columns.Add(boundColumn);
     
                //2.2 SET SQL DATA SOURCE...
                 
                sqlInst.SelectCommand = "...";
                //3. Add grid columns...
                GridTemplateColumn tempC = null;
                tempC = new GridTemplateColumn();
                tempC.DataField = "value";
                tempC.HeaderText = bv.Name;
                tempC.UniqueName = "value";
                tempC.ItemTemplate = new MyTemplate("value", bv.CvIndex, true);
                tempC.EditItemTemplate = new CustomEditTemplate("value", true, bv.Unit, bv.CvIndex, bv.ID);
                 
                grid.MasterTableView.Columns.Add(tempC);
                 
                if (bv.QualifierList != null)
                {
                    for (int i = 0; i < bv.QualifierList.Count; i++)
                    {
                        string temp = (bv.QualifierList[i].QualIndex != "") ? bv.QualifierList[i].QualIndex : bv.QualifierList[i].RealQualName;
                        tempC = new GridTemplateColumn();
                        tempC.DataField = temp;
                        tempC.HeaderText = bv.QualifierList[i].QualName;
                        tempC.UniqueName = bv.QualifierList[i].QualName;
                        tempC.ItemTemplate = new MyTemplate(temp, bv.QualifierList[i].CvIndex, bv.QualifierList[i].Required);
                        tempC.EditItemTemplate = new CustomEditTemplate(temp, bv.QualifierList[i].Required, bv.QualifierList[i].Type, bv.QualifierList[i].CvIndex, bv.ID);
                        tempC.Visible = (i <= 5);
                        grid.MasterTableView.Columns.Add(tempC);
                    }
                }
     
                //4. Edit commands
                if (bv.ID != 1)
                {
                    GridEditCommandColumn eCol = new GridEditCommandColumn();
                    eCol.UniqueName = "EditCommandColumn";
                    grid.MasterTableView.Columns.Add(eCol);/**/
                }
     
                //5. delete command
                if (bv.ID != 1)
                {
                    /*tempC = new GridTemplateColumn();
                    tempC.UniqueName = "DeleteColumn";
                    // tempC.HeaderText = "Delete";
                    tempC.ItemTemplate = new DeleteTemplate("delete");
                    grid.MasterTableView.Columns.Add(tempC);*/
                }
               // grid.ClientSettings.ClientEvents = new GridClientEvents(
                //6. Add the grid to the placeholder
                 
                this.PlaceHolder1.Controls.Add(grid);
     
                //AJAX SETTINGS...
                AjaxSetting ajax = new AjaxSetting(grid.ID);
                AjaxUpdatedControl up = new AjaxUpdatedControl();
                up.ControlID = grid.ID;
                ajax.UpdatedControls.Add(up);
                up = new AjaxUpdatedControl();
                ajax.UpdatedControls.Add(up);
                RadAjaxManager1.AjaxSettings.Add(ajax);
            }
     
            private bool compareHTable(Hashtable tnew, Hashtable told)
            {
                foreach (string key in tnew.Keys)
                {
                    if (tnew[key] != told[key])
                    {
                        return false;
                    }
                }
                return true;
            }
     
            public int IdVar
            {
                get { return idVar; }
            }
     
             
     
            protected void instGrid_ItemCommand(object sender, GridCommandEventArgs e)
            {
                string body = "";
                SqlConnection cn = new SqlConnection(conn);
                cn.Open();
                SqlCommand cmd = new SqlCommand();
                cmd.Connection = cn;
     
                if (e.CommandName == "Update")
                {
                    //Perform updates
                }
                else if (e.CommandName == "InitInsert")
                {
     
                }
                else if (e.CommandName == "Edit")
                {
                    //Edit code
     
                }
                else if (e.CommandName == "PerformInsert")
                {
                    //Insert code
                }
                else if (e.CommandName == "Delete")
                {
                    
                    GridEditableItem editedItem = e.Item as GridEditableItem;
                    string idbm = editedItem.GetDataKeyValue("id_badmstorage").ToString();
                    cmd.CommandText = "UPDATE BADMStorage16 SET dataStatus=404, deleteUserId="+insertUserId+", deletedDate='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm") + "' WHERE id_badmstorage=" + idbm;
                    cmd.ExecuteNonQuery();
                    body += "\nDeleted item for variable "+bv.Name+", record ID="+idbm+" by " + Session["usname"].ToString();
                }
                cn.Close();
                 
            }
             
        }

  2. Konstantin Dikov
    Admin
    Konstantin Dikov avatar
    1793 posts

    Posted 31 May Link to this post

    Hello Diego,

    For such conditional requirement for the edit form you will have to handle the OnItemDataBound event, get reference to the edit item and depending on the model value, change the Visible property of the editors you need to hide:
    Hope this helps.


    Regards,
    Konstantin Dikov
    Telerik
    Do you need help with upgrading your ASP.NET AJAX, WPF or WinForms projects? Check the Telerik API Analyzer and share your thoughts.
  3. UI for ASP.NET Ajax is Ready for VS 2017
Back to Top