protected void RadTreeView1_NodeEdit(object sender, RadTreeNodeEditEventArgs e)
        {
            //string nivelPrefijo = "";
            CN_CatCNac_Estructura cm_Estr = new CN_CatCNac_Estructura(model);
            var estr = new CatCNac_Estructura();

            if (e.Node.Value.Contains("Nuevo"))
            {
                estr.Id_Matriz  = Int32.Parse(Request.QueryString["Id"]);
                estr.Nivel      = e.Node.Level;
                estr.NombreNodo = e.Text;
                estr.NodoPadre  = Int32.Parse(e.Node.ParentNode.Value);

                int id = cm_Estr.Alta(estr);
                e.Node.Value = id.ToString();

                listEstructura.Add(estr);
            }
            else
            {
                estr.Id_Matriz  = Int32.Parse(Request.QueryString["Id"]);
                estr.Nivel      = e.Node.Level;
                estr.NombreNodo = e.Text;
                estr.NodoPadre  = Int32.Parse(e.Node.ParentNode.Value);
                estr.Id         = Int32.Parse(e.Node.Value);

                int id = cm_Estr.Editar(estr);
                e.Node.Value = id.ToString();
            }

            //if (e.Node.Level == 1) nivelPrefijo = "[" + matriz.Desc_Nivel_1 + "] - ";
            //if (e.Node.Level == 2) nivelPrefijo = "[" + matriz.Desc_Nivel_2 + "] - ";
            //if (e.Node.Level == 3) nivelPrefijo = "[" + matriz.Desc_Nivel_3 + "] - ";
            //if (e.Node.Level == 4) nivelPrefijo = "[" + matriz.Desc_Nivel_4 + "] - ";

            //Label etiq2 = new Label();
            //e.Node.Controls.Add(etiq2);

            e.Node.Text = e.Text;

            var nodoA           = treeEstructura.Nodes[0];
            var hijosPrimerNodo = listEstructura.Where(x => x.Nivel == 1).ToList();

            AgregarControles(ref nodoA, hijosPrimerNodo, null);
        }
        protected void btnCargaExcel_Click(object sender, EventArgs e)
        {
            HttpPostedFile filePosted = Request.Files[0];

            string pathArchivo = "c:\\KeyWeb_Log\\excelTempCC.xlsx";

            filePosted.SaveAs(pathArchivo);

            var excelFile = new ExcelQueryFactory(pathArchivo);
            var miHoja    = excelFile.Worksheet(0).Select(x => x).ToList();
            CN_CatCNac_Estructura cm_Estr = new CN_CatCNac_Estructura(model);



            using (TransactionScope scope = new TransactionScope())
            {
                try
                {
                    cm_Estr.Borrar(Int32.Parse(Request.QueryString["Id"]));
                    listEstructura.Clear();


                    int padre1 = 0;
                    int padre2 = 0;
                    int padre3 = 0;
                    int padre4 = 0;



                    foreach (var item in miHoja)
                    {
                        CatCNac_Estructura est = new CatCNac_Estructura();
                        est.Id_Matriz = Int32.Parse(Request.QueryString["Id"]);

                        //Nivel 1


                        if (item["Nivel ACYS"] == null)
                        {
                            throw new Exception("Falta la columna Nivel ACYS");
                        }
                        if (item["ACYS"] == null)
                        {
                            throw new Exception("Falta la columna ACYS");
                        }
                        if (item["Sucursal"] == null)
                        {
                            throw new Exception("Falta la columna Sucursal");
                        }



                        if (nivelMax >= 1)
                        {
                            est.NombreNodo = item[0].Value.ToString();
                            if (!this.listEstructura.Exists(x => x.NombreNodo == est.NombreNodo && x.Id_Matriz == est.Id_Matriz && x.Nivel == 1))
                            {
                                est.Nivel     = 1;
                                est.NodoPadre = 0;

                                if (nivelMax == 1)
                                {
                                    est.Nivel_ACYS = item["Nivel ACYS"].Cast <int>();

                                    var acysC = listaACYS.Where(x => x.Nombre == item["ACYS"]).FirstOrDefault();

                                    if (acysC == null)
                                    {
                                        throw new Exception("El acys no existe: " + item["ACYS"]);
                                    }

                                    int idAcys = acysC.Id;
                                    est.id_Acys = idAcys;

                                    est.Sucursal = item["Sucursal"].Cast <int>();
                                    var suc = listaSucursales.Where(x => x.Id_Cd == est.Sucursal).FirstOrDefault();

                                    if (suc == null)
                                    {
                                        throw new Exception("La Sucursal no existe: " + item["Sucursal"]);
                                    }


                                    est.NombreSucursal = item["Sucursal"] + " - " + suc.Cd_Nombre;
                                }


                                int resId = cm_Estr.Alta(est);
                                est.Id = resId;
                                padre1 = resId;
                                listEstructura.Add(est);
                            }
                        }



                        if (nivelMax >= 2)
                        {
                            //Nivel 2
                            est            = new CatCNac_Estructura();
                            est.NombreNodo = item[1].Value.ToString();
                            est.Id_Matriz  = Int32.Parse(Request.QueryString["Id"]);
                            if (!this.listEstructura.Exists(x => x.NombreNodo == est.NombreNodo && x.Id_Matriz == est.Id_Matriz && x.Nivel == 2 && x.NodoPadre == padre1))
                            {
                                est.Id_Matriz = Int32.Parse(Request.QueryString["Id"]);
                                est.Nivel     = 2;
                                est.NodoPadre = padre1;

                                if (nivelMax == 2)
                                {
                                    est.Nivel_ACYS = item["Nivel ACYS"].Cast <int>();

                                    var acysC = listaACYS.Where(x => x.Nombre == item["ACYS"]).FirstOrDefault();

                                    if (acysC == null)
                                    {
                                        throw new Exception("El acys no existe: " + item["ACYS"]);
                                    }

                                    int idAcys = acysC.Id;
                                    est.id_Acys = idAcys;

                                    est.Sucursal = item["Sucursal"].Cast <int>();
                                    var suc = listaSucursales.Where(x => x.Id_Cd == est.Sucursal).FirstOrDefault();

                                    if (suc == null)
                                    {
                                        throw new Exception("La Sucursal no existe: " + item["Sucursal"]);
                                    }


                                    est.NombreSucursal = item["Sucursal"] + " - " + suc.Cd_Nombre;
                                }

                                int resId = cm_Estr.Alta(est);
                                est.Id = resId;
                                padre2 = resId;
                                listEstructura.Add(est);
                            }
                        }

                        if (nivelMax >= 3)
                        {
                            //Nivel 3
                            est            = new CatCNac_Estructura();
                            est.NombreNodo = item[2].Value.ToString();
                            est.Id_Matriz  = Int32.Parse(Request.QueryString["Id"]);
                            if (!this.listEstructura.Exists(x => x.NombreNodo == est.NombreNodo && x.Id_Matriz == est.Id_Matriz && x.Nivel == 3 && x.NodoPadre == padre2))
                            {
                                est.Id_Matriz = Int32.Parse(Request.QueryString["Id"]);
                                est.Nivel     = 3;
                                est.NodoPadre = padre2;


                                if (nivelMax == 3)
                                {
                                    est.Nivel_ACYS = item["Nivel ACYS"].Cast <int>();

                                    var acysC = listaACYS.Where(x => x.Nombre == item["ACYS"]).FirstOrDefault();

                                    if (acysC == null)
                                    {
                                        throw new Exception("El acys no existe: " + item["ACYS"]);
                                    }

                                    int idAcys = acysC.Id;
                                    est.id_Acys = idAcys;


                                    est.Sucursal = item["Sucursal"].Cast <int>();
                                    var suc = listaSucursales.Where(x => x.Id_Cd == est.Sucursal).FirstOrDefault();

                                    if (suc == null)
                                    {
                                        throw new Exception("La Sucursal no existe: " + item["Sucursal"]);
                                    }


                                    est.NombreSucursal = item["Sucursal"] + " - " + suc.Cd_Nombre;
                                }

                                int resId = cm_Estr.Alta(est);
                                est.Id = resId;
                                padre3 = resId;
                                listEstructura.Add(est);
                            }
                        }


                        if (nivelMax >= 4)
                        {
                            //Nivel 4
                            est            = new CatCNac_Estructura();
                            est.NombreNodo = item[3].Value.ToString();
                            est.Id_Matriz  = Int32.Parse(Request.QueryString["Id"]);
                            if (!this.listEstructura.Exists(x => x.NombreNodo == est.NombreNodo && x.Id_Matriz == est.Id_Matriz && x.Nivel == 4 && x.NodoPadre == padre3))
                            {
                                est.Id_Matriz = Int32.Parse(Request.QueryString["Id"]);
                                est.Nivel     = 4;
                                est.NodoPadre = padre3;

                                est.Nivel_ACYS = item["Nivel ACYS"].Cast <int>();

                                var acysC = listaACYS.Where(x => x.Nombre == item["ACYS"]).FirstOrDefault();

                                if (acysC == null)
                                {
                                    throw new Exception("El acys no existe: " + item["ACYS"]);
                                }

                                int idAcys = acysC.Id;
                                est.id_Acys = idAcys;

                                est.Sucursal = item["Sucursal"].Cast <int>();
                                var suc = listaSucursales.Where(x => x.Id_Cd == est.Sucursal).FirstOrDefault();

                                if (suc == null)
                                {
                                    throw new Exception("La Sucursal no existe: " + item["Sucursal"]);
                                }


                                est.NombreSucursal = item["Sucursal"] + " - " + suc.Cd_Nombre;

                                int resId = cm_Estr.Alta(est);
                                est.Id = resId;
                                padre4 = resId;
                                listEstructura.Add(est);
                            }
                        }
                    }

                    model.SaveChanges();
                    scope.Complete();
                }
                catch (Exception ex)
                {
                    scope.Dispose();

                    listEstructura.Clear();
                    listEstructura = cm_Estr.ConsultarTodos(Int32.Parse(Request.QueryString["Id"]));
                    RAM1.ResponseScripts.Add("CloseAlert('" + ex.Message + "')");
                }
                finally
                {
                    var nodoA           = treeEstructura.Nodes[0];
                    var hijosPrimerNodo = listEstructura.Where(x => x.Nivel == 1).ToList();
                    nodoA.Nodes.Clear();
                    ConstruirEstructura(ref nodoA, hijosPrimerNodo);
                    AgregarControles(ref nodoA, hijosPrimerNodo, null);
                    treeEstructura.ExpandAllNodes();
                }
            }
        }