private static string ObtenerIntegrantes(int iCodCR)
    {// Devuelve el código HTML del catalogo de personas que son integrantes de la Oficina Técnica del CR que se pasa como parametro
        StringBuilder sb = new StringBuilder();

        try
        {
            SqlDataReader dr = OfiTec.CatalogoIntegrantes(iCodCR);

            sb.Append("<table id='tblOpciones2' class='texto MM' style='width: 390px;' mantenimiento='1'>");
            sb.Append("<colgroup><col style='width:10px;' /><col style='width:20px;' /><col style='width:360px;' /></colgroup>");
            sb.Append("<tbody id='tbodyDestino'>");
            while (dr.Read())
            {
                sb.Append("<tr id='" + dr["t314_idusuario"].ToString());
                sb.Append("' bd='' onclick='mm(event)' style='height:20px' onmousedown='DD(event)' ");
                sb.Append("sexo='" + dr["t001_sexo"].ToString() + "' ");
                sb.Append("baja='" + dr["baja"].ToString() + "' ");
                //sb.Append("tipo='" + dr["tipo"].ToString() + "' ");
                if (dr["t303_idnodo"].ToString() == "")
                {
                    sb.Append("tipo='E' ");
                }
                else if (dr["t303_idnodo"].ToString() == iCodCR.ToString())
                {
                    sb.Append("tipo='P' ");
                }
                else
                {
                    sb.Append("tipo='N' ");
                }

                sb.Append("><td></td><td></td>");
                //sb.Append("<td onmouseover='TTip()'><NOBR class='NBR W350' title=\"cssbody=[dvbdy] cssheader=[dvhdr] header=[<img src='../../../../../images/info.gif' style='vertical-align:middle' /> Información] body=[<label style='width:70px;'>Profesional:</label>" + int.Parse(dr["t314_idusuario"].ToString()).ToString("#,###") + " - " + dr["profesional"].ToString().Replace((char)34, (char)39) + "<br><label style='width:70px;'>" + Estructura.getDefCorta(Estructura.sTipoElem.NODO) + ":</label>" + dr["t303_denominacion"].ToString().Replace((char)34, (char)39) + "<br><label style='width:70px;'>Empresa:</label>" + dr["EMPRESA"].ToString().Replace((char)34, (char)39) + "] hideselects=[off]\">" + dr["profesional"].ToString() + "</nobr></td>");
                sb.Append("<td onmouseover='TTip(event)'><span class='NBR W350' title=\"cssbody=[dvbdy] cssheader=[dvhdr] header=[<img src='../../../../../images/info.gif' style='vertical-align:middle' /> Información] body=[<label style='width:70px;'>Profesional:</label>" + int.Parse(dr["t314_idusuario"].ToString()).ToString("#,###") + " - " + dr["profesional"].ToString().Replace((char)34, (char)39) + "<br><label style='width:70px;'>" + Estructura.getDefCorta(Estructura.sTipoElem.NODO) + ":</label>" + dr["t303_denominacion"].ToString().Replace((char)34, (char)39) + "] hideselects=[off]\">" + dr["profesional"].ToString() + "</span></td>");
                sb.Append("</tr>");
            }
            dr.Close();
            dr.Dispose();
            sb.Append("</tbody></table>");

            return(sb.ToString());
        }
        catch (Exception ex)
        {
            return("error@#@" + Errores.mostrarError("Error al obtener los integrantes", ex));
        }
    }
    private string Grabar(string sCR, string sCadena)
    {//En el parametro de entrada tenemos una lista de codigos de personas separados por comas
        string         sResul = "";
        int            iCodCR;
        SqlConnection  oConn = null;
        SqlTransaction tr    = null;

        try
        {
            iCodCR = int.Parse(sCR);
            oConn  = Conexion.Abrir();
            tr     = Conexion.AbrirTransaccion(oConn);
            if (sCadena != "")
            {//Con la cadena generamos una lista y la recorremos para grabar cada elemento
                string[] aFun = Regex.Split(sCadena, "///");
                foreach (string oFun in aFun)
                {
                    string[] aValores = Regex.Split(oFun, "##");
                    switch (aValores[0])
                    {
                    case "I":
                        OfiTec.InsertarIntegrante(tr, iCodCR, int.Parse(aValores[1]));
                        break;

                    case "D":
                        OfiTec.BorrarIntegrante(tr, iCodCR, int.Parse(aValores[1]));
                        break;
                    }
                }
            }
            Conexion.CommitTransaccion(tr);
            sResul = "OK@#@";
        }
        catch (Exception ex)
        {
            Conexion.CerrarTransaccion(tr);
            sResul = "Error@#@" + Errores.mostrarError("Error al grabar la lista de integrantes", ex);
        }
        finally
        {
            Conexion.Cerrar(oConn);
        }
        return(sResul);
    }