protected void RbtIdentity_CheckedChanged(object sender, EventArgs e)
        {
            DataTable dt         = new DataTable();
            DataTable dtColumnas = new DataTable();

            dtColumnas = Session["dtColumnas"] as DataTable;

            ConstruirPlantilla(dtColumnas);
            RgXls.DataSource = "";
            RgXls.DataBind();
            btnSubirDatos.Attributes.Add("disabled", "disabled");
            btnSubirDatos.Enabled = false;
        }
        private void LimpiarCampos()
        {
            ViewState[_xlsValido] = false;
            //ViewState[_carga] = TxtServidor.Text = TxtBaseDatos.Text = TxtUsuario.Text = TxtContrasenia.Text = TxtTabla.Text = string.Empty;

            RgXls.Dispose();
            RgXls.Rebind();

            //EnableControl(TxtServidor, true);
            //EnableControl(TxtBaseDatos, true);
            //EnableControl(TxtUsuario, true);
            //EnableControl(TxtContrasenia, true);
            //EnableControl(TxtTabla, true);
        }
        protected void btnVista_Click(object sender, EventArgs e)
        {
            DataTable dtPlatilla = new DataTable();
            DataTable dtXls      = new DataTable();
            bool      bandera    = false;

            //Limpiar
            RbtIdentity_CheckedChanged(null, null);
            dtPlatilla = Session["dtPlantilla"] as DataTable;
            int IdUsuario = Convert.ToInt32(Session["IdUsuario"]);

            //Carga el archivo xls en el grid para una vista previa (no lo carga al servidor, solo en temp, la lectura es desde memoria)
            //Una vez ejecutado este evento el RauXls limpia automaticamente los archivos subidos
            string mensaje = string.Empty;

            if (RauXls.UploadedFiles.Count > 0)
            {
                //Nombre del archivo
                string fileName = RauXls.UploadedFiles[0].FileName.ToString();

                //Lee el archivo en memoria y lo guarda en un datatable
                try
                {
                    using (Stream st = RauXls.UploadedFiles[0].InputStream)
                    {
                        using (IExcelDataReader excelReader = RauXls.UploadedFiles[0].GetExtension().Equals(".xls") ? ExcelReaderFactory.CreateBinaryReader(st) : ExcelReaderFactory.CreateOpenXmlReader(st))
                        {
                            excelReader.IsFirstRowAsColumnNames = true;
                            DataSet result = excelReader.AsDataSet(true);
                            dtXls = result.Tables[0];
                        }
                    }
                }
                catch (Exception ex)
                {
                    AlertError("Error al leer el archivo: " + fileName + ".</br>" + excepcion.SerializarExMessage(ex));
                    return;
                }

                foreach (DataColumn colReplace in dtXls.Columns)
                {
                    colReplace.ColumnName = RemplazarCaracter(colReplace.ColumnName);
                }

                if (dtXls.Rows.Count > 0)
                {
                    if (dtXls.Columns.Count <= dtPlatilla.Columns.Count)
                    {
                        try
                        {
                            foreach (DataRow row in dtXls.Rows)
                            {
                                DataRow newRow = dtPlatilla.NewRow();
                                bandera = true;

                                foreach (DataColumn col in dtXls.Columns)
                                {
                                    newRow[col.ColumnName.Trim()] = row[col.ColumnName.Trim()];

                                    if (dtPlatilla.Columns[col.ColumnName].MaxLength < 0 || dtPlatilla.Columns[col.ColumnName].MaxLength >= row[col.ColumnName].ToString().Length)
                                    {
                                        if (dtPlatilla.Columns[col.ColumnName].AllowDBNull ? true : row[col.ColumnName].ToString().Trim().Length > 0)
                                        {
                                            newRow[col.ColumnName] = row[col.ColumnName];
                                        }
                                        else
                                        {
                                            AlertError("La columna " + col.ColumnName + " no acepta campos vacíos.");
                                            dtPlatilla.Clear();
                                            bandera = false;
                                            break;
                                        }
                                    }
                                    else
                                    {
                                        AlertError("La columna " + col.ColumnName + " excede el tamaño permitido en la base de datos.");
                                        dtPlatilla.Clear();
                                        bandera = false;
                                        break;
                                    }
                                }
                                if (!bandera)
                                {
                                    break;
                                }
                                dtPlatilla.Rows.Add(newRow);
                            }
                            Session["dtXls"] = dtPlatilla;
                            RgXls.DataSource = dtPlatilla;
                            RgXls.Rebind();
                            AlertSuccess("Archivo Válido.");
                            btnSubirDatos.Attributes.Remove("disabled");
                            btnSubirDatos.Enabled = true;
                        }
                        catch (Exception ex)
                        {
                            string msg = "El archivo no cuenta con encabezado.";
                            AlertError("Favor de agregar el encabezado al archivo de carga.");
                            excepcion.RegistrarExcepcion(IdUsuario, "btnVista_Click", ex, ref msg);
                            dtPlatilla.Clear();
                        }
                    }
                    else
                    {
                        AlertError("El archivo seleccionado no conincide con la plantilla.");
                    }
                }
                else
                {
                    AlertError("El archivo " + fileName + " esta vacío.");
                }
            }
        }