private void UpdateItemHojaRuta(long IdItemHoja, long IdPlantilla)
    {
        #region Recupero los  Datos Ingresado por el usuario


        string   AuditadoPor             = (Session["usuario"] as Entidades.SegUsuario).Login;
        DateTime HojaFechaControlado     = DateTime.Now;
        string   ComentarioGralIngresado = txtComentarioGral.Text;
        string   ComentarioItemHoja      = txtComentarioItem.Text;
        DateTime?FechaAprobacionItemHoja = txtFechaAprobacion.SelectedDate;


        #endregion


        Entidades.HojasDeRuta CurrentItem = (from i in Contexto.HojasDeRuta
                                             where i.IdHojaDeRuta == IdItemHoja
                                             select i).FirstOrDefault();



        TempComentarioGrales CurrentComentario = (from C in ComentariosGrales
                                                  where C.IdPlantilla == IdPlantilla
                                                  select C).FirstOrDefault <TempComentarioGrales>();


        if (!CurrentItem.PlantillaReference.IsLoaded)
        {
            CurrentItem.PlantillaReference.Load();
        }
        if (CurrentComentario == null)
        {
            ComentariosGral coment = new ComentariosGral();
            coment.Comentario       = ComentarioGralIngresado;
            coment.ContratoEmpresas = CurrentTempCabecera.ContratoEmpresas;
            coment.Plantilla        = CurrentItem.Plantilla;
            Contexto.AddObject("ComentariosGral", coment);
        }
        else
        {
            Entidades.ComentariosGral CurrentComentarioGral = (from c in Contexto.ComentariosGral
                                                               where c.Plantilla.IdPlantilla == IdPlantilla &&
                                                               c.ContratoEmpresas.IdContratoEmpresas == CurrentTempCabecera.ContratoEmpresas.IdContratoEmpresas
                                                               select c).FirstOrDefault();

            CurrentComentarioGral.Comentario = ComentarioGralIngresado;
        }



        CurrentItem.AuditadoPor         = AuditadoPor;
        CurrentItem.HojaFechaControlado = HojaFechaControlado;
        CurrentItem.HojaComentario      = ComentarioItemHoja;
        CurrentItem.HojaFechaAprobacion = FechaAprobacionItemHoja;

        if (FechaAprobacionItemHoja != null)
        {
            CurrentItem.HojaAprobado       = true;
            CurrentItem.AuditoriaTerminada = true;
        }
        else
        {
            CurrentItem.HojaAprobado       = false;
            CurrentItem.AuditoriaTerminada = false;
        }


        Contexto.SaveChanges();
        CargarDatosSession();
        gvItemHoja.Rebind();
        upGrilla.Update();
    }
    private void UpdateItemHojaRuta(GridEditableItem editedItem, long IdItemHoja, long IdPlantilla)
    {
        #region Recupero los  Datos Ingresado por el usuario

        GridEditManager editMan = editedItem.EditManager;

        string   AuditadoPor             = (Session["usuario"] as Entidades.SegUsuario).Login;
        DateTime HojaFechaControlado     = DateTime.Now;
        string   ComentarioGralIngresado = ((TextBox)editedItem.FindControl("txtComentarioGralEdit")).Text;
        string   ComentarioItemHoja      = ((TextBox)editedItem.FindControl("txtComentarioItemHoja")).Text;
        DateTime?FechaAprobacionItemHoja = null;

        if ((editMan.GetColumnEditor("HojaFechaAprobacioncolumn") as GridDateTimeColumnEditor).Text != "")
        {
            FechaAprobacionItemHoja = DateTime.Parse((editMan.GetColumnEditor("HojaFechaAprobacioncolumn") as GridDateTimeColumnEditor).Text);
        }


        #endregion


        Entidades.HojasDeRuta CurrentItem = (from i in Contexto.HojasDeRuta
                                             where i.IdHojaDeRuta == IdItemHoja
                                             select i).FirstOrDefault();



        TempComentarioGrales CurrentComentario = (from C in ComentariosGrales
                                                  where C.IdPlantilla == IdPlantilla
                                                  select C).FirstOrDefault <TempComentarioGrales>();


        if (!CurrentItem.PlantillaReference.IsLoaded)
        {
            CurrentItem.PlantillaReference.Load();
        }
        if (CurrentComentario == null)
        {
            ComentariosGral coment = new ComentariosGral();
            coment.Comentario       = ComentarioGralIngresado;
            coment.ContratoEmpresas = CurrentTempCabecera.ContratoEmpresas;
            coment.Plantilla        = CurrentItem.Plantilla;
            Contexto.AddObject("ComentariosGral", coment);
        }
        else
        {
            Entidades.ComentariosGral CurrentComentarioGral = (from c in Contexto.ComentariosGral
                                                               where c.Plantilla.IdPlantilla == IdPlantilla &&
                                                               c.ContratoEmpresas.IdContratoEmpresas == CurrentTempCabecera.ContratoEmpresas.IdContratoEmpresas
                                                               select c).FirstOrDefault();

            CurrentComentarioGral.Comentario = ComentarioGralIngresado;
        }



        CurrentItem.AuditadoPor         = AuditadoPor;
        CurrentItem.HojaFechaControlado = HojaFechaControlado;
        CurrentItem.HojaComentario      = ComentarioItemHoja;
        CurrentItem.HojaFechaAprobacion = FechaAprobacionItemHoja;
        if (FechaAprobacionItemHoja != null)
        {
            CurrentItem.HojaAprobado = true;
        }
        else
        {
            CurrentItem.HojaAprobado = false;
        }


        Contexto.SaveChanges();
        CargarDatosSession();
        gvItemHoja.Rebind();
    }
    protected void gvItemHoja_ItemDataBound(object sender, GridItemEventArgs e)
    {
        if (e.Item.ItemType == GridItemType.AlternatingItem || e.Item.ItemType == GridItemType.Item)
        {
            TempItemsHoja hoja = (TempItemsHoja)e.Item.DataItem;

            long IdPlantillla = hoja.IdPlantilla;


            long[] rolesAsignados = (from R in Contexto.RolesPlanilla
                                     where R.Plantilla.IdPlantilla == IdPlantillla
                                     select R.SegRol.IdSegRol).Distinct <long>().ToArray <long>();


            Entidades.SegUsuario usuario = (Entidades.SegUsuario) this.Session["usuario"];

            if (!usuario.SegUsuarioRol.IsLoaded)
            {
                usuario.SegUsuarioRol.Load();
            }
            foreach (Entidades.SegUsuarioRol item in usuario.SegUsuarioRol)
            {
                if (!item.SegRolReference.IsLoaded)
                {
                    item.SegRolReference.Load();
                }
            }

            int PoseeRol = (from R in usuario.SegUsuarioRol
                            where rolesAsignados.Contains(R.SegRol.IdSegRol)
                            select R).Count();



            if (PoseeRol == 0)
            {
                (e.Item.FindControl("chkAprobo") as CheckBox).Enabled           = false;
                (e.Item.FindControl("imgEdit") as ImageButton).Visible          = false;
                (e.Item.FindControl("chkTerminoAuditoria") as CheckBox).Enabled = false;
            }

            if (hoja.AuditadoPor != null && hoja.AuditadoPor.Trim() != "" && hoja.AuditadoPor != usuario.Login)
            {
                (e.Item.FindControl("chkAprobo") as CheckBox).Visible           = false;
                (e.Item.FindControl("imagenAuditadoPor") as Image).Visible      = true;
                (e.Item.FindControl("chkTerminoAuditoria") as CheckBox).Enabled = false;
            }

            if (hoja.AuditadoPor != null && hoja.AuditadoPor.Trim() != "" && hoja.AuditadoPor == usuario.Login &&
                hoja.HojaFechaAprobacion != null)
            {
                (e.Item.FindControl("chkAprobo") as CheckBox).Visible           = false;
                (e.Item.FindControl("chkTerminoAuditoria") as CheckBox).Enabled = false;
            }

            if (hoja.AuditoriaTerminada.HasValue && hoja.AuditoriaTerminada.Value)
            {
                (e.Item.FindControl("chkTerminoAuditoria") as CheckBox).Checked = true;

                if (hoja.HojaFechaAprobacion.HasValue)
                {
                    (e.Item.FindControl("chkTerminoAuditoria") as CheckBox).Enabled = false;
                }
                else
                {
                    (e.Item.FindControl("chkTerminoAuditoria") as CheckBox).Enabled = true;
                }
            }



            if (hoja.HojaComentario == null || hoja.HojaComentario.Trim() == "")
            {
                (e.Item.FindControl("imgcomentarioitem") as Image).Visible = false;
            }

            if (hoja.DocFechaEntrega != null)
            {
                (e.Item.FindControl("imgcomentariodoc") as Image).Visible = true;
            }
            else
            {
                (e.Item.FindControl("imgcomentariodoc") as Image).Visible = false;
            }



            TempComentarioGrales CurrentComentario = (from C in ComentariosGrales
                                                      where C.IdPlantilla == hoja.IdPlantilla
                                                      select C).FirstOrDefault <TempComentarioGrales>();


            if (CurrentComentario != null && CurrentComentario.Comentario != "")
            {
                (e.Item.FindControl("imgcomentariogral") as Image).Attributes.Add("coment", CurrentComentario.Comentario);
            }
            else
            {
                (e.Item.FindControl("imgcomentariogral") as Image).Visible = false;
            }


            /// Si el usuario es de una empresa, entonces oculto los comentarios generales
            if (!usuario.EmpresaReference.IsLoaded)
            {
                usuario.EmpresaReference.Load();
            }
            if (usuario.Empresa != null)
            {
                gvItemHoja.Columns.FindByUniqueName("imgComentarioGral").Visible = false;
                gvItemHoja.Columns.FindByUniqueName("chkAproboColumn").Visible   = false;
            }
        }

        if ((e.Item is GridEditableItem) && (e.Item.IsInEditMode))
        {
            TempItemsHoja    hoja     = (TempItemsHoja)e.Item.DataItem;
            GridEditableItem edititem = (GridEditableItem)e.Item;
            TextBox          txtbx    = (TextBox)edititem.FindControl("txtComentarioGralEdit");

            TempComentarioGrales CurrentComentario = (from C in ComentariosGrales
                                                      where C.IdPlantilla == hoja.IdPlantilla
                                                      select C).FirstOrDefault <TempComentarioGrales>();

            if (CurrentComentario != null)
            {
                txtbx.Text = CurrentComentario.Comentario;
            }
            else
            {
                txtbx.Text = "";
            }



            ((System.Web.UI.WebControls.Table)(((Telerik.Web.UI.GridEditFormItem)(edititem)).FormColumns[0])).Rows[0].Visible       = false;
            ((System.Web.UI.WebControls.Table)(((Telerik.Web.UI.GridEditFormItem)(edititem)).FormColumns[0])).Rows[1].Cells[0].Text = "Comentario Item";
            ((System.Web.UI.WebControls.Table)(((Telerik.Web.UI.GridEditFormItem)(edititem)).FormColumns[0])).Rows[2].Cells[0].Text = "Comentario Gral";
        }
    }