protected void leerDatos()
    {
        foreach (Control control in PlantillaHolder.Controls)
        {
            string        tipo = control.GetType().ToString();
            int           id   = int.Parse(control.ID);
            DatosRevision dr   = (from d in revision.DatosRevisions
                                  where d.DatosId == id
                                  select d).FirstOrDefault <DatosRevision>();
            if (dr != null)
            {
                switch (tipo)
                {
                case "ASP.camposn_ascx":
                    CampoSN csn = (CampoSN)control;
                    dr.Valor = csn.GetValor();
                    break;

                case "ASP.campotext_ascx":
                    CampoText ctxt = (CampoText)control;
                    dr.Valor = ctxt.GetValor();
                    break;

                case "ASP.camponum_ascx":
                    CampoNum cnum = (CampoNum)control;
                    dr.Valor = cnum.GetValor();
                    break;

                case "ASP.campodate_ascx":
                    CampoDate cdt = (CampoDate)control;
                    dr.Valor = cdt.GetValor();
                    break;

                case "ASP.campotetra_ascx":
                    CampoTetra ctetra = (CampoTetra)control;
                    dr.Valor = ctetra.GetValor();
                    break;
                }
                dr.Revision = revision;
            }
        }
        ctx.SaveChanges();
    }
    protected void DescargarControl(DatosRevision dr)
    {
        Control control = PlantillaHolder.Controls[0];
        string  tipo    = control.GetType().ToString();

        if (dr != null)
        {
            switch (tipo)
            {
            case "ASP.camposn_ascx":
                CampoSN csn = (CampoSN)control;
                dr.Valor = csn.GetValor();
                break;

            case "ASP.campotext_ascx":
                CampoText ctxt = (CampoText)control;
                dr.Valor = ctxt.GetValor();
                break;

            case "ASP.camponum_ascx":
                CampoNum cnum = (CampoNum)control;
                dr.Valor = cnum.GetValor();
                break;

            case "ASP.campodate_ascx":
                CampoDate cdt = (CampoDate)control;
                dr.Valor = cdt.GetValor();
                break;

            case "ASP.campotetra_ascx":
                CampoTetra ctetra = (CampoTetra)control;
                dr.Valor = ctetra.GetValor();
                break;
            }
            dr.Revision = r;
        }
        // si descargamos grabamos
        ctx.SaveChanges();
    }