protected void st_grilla_OnReadData(object sender, StoreReadDataEventArgs e)
    {
      
      int start = e.Start;
      int limit = NumInt.Init(e.Parameters.GetParameter("limit").Value);
      limit = limit == 0 ? e.Limit : limit;
      int page = (start / limit) + 1;

      co_tg_personas_no Nomina = new co_tg_personas_no();

      Nomina.Pagina = page;
      Nomina.RegistrosPorPaginas = limit;
      Nomina.ColumnaOrden = e.Sort[0].Property;
      Nomina.OrdenColumna = (FwpServerControls.FwpDataGridDataBound.Orden)Enum.Parse(typeof(FwpServerControls.FwpDataGridDataBound.Orden), e.Sort[0].Direction.ToString(), true);
      IList<object> lista = new List<object>();

      AgregarFiltros_st_grilla(ref Nomina);

      Nomina<co_tg_personas_no> data = new bf_tg_personas().GetNomina(Nomina);

      foreach (co_tg_personas_no n in data.DataSource)
      {
        lista.Add(
            new
            {
              id_persona = n.id_persona,
              pe_nombrecompleto = n.pe_nombrecompleto,
              pe_nombres = n.pe_nombres,
              pe_appaterno = n.pe_appaterno,
              pe_apmaterno = n.pe_apmaterno,
              id_tiporut = n.id_tiporut,
              pe_rut = n.pe_rut,
              pe_fechaingreso = n.pe_fechaingreso.Fecha,
              pe_nacionalidad = n.pe_nacionalidad,
              pe_giro = n.pe_giro,
              pe_flgsinrut = n.pe_flgsinrut,
              pe_numctacte = n.pe_numctacte,
              id_estadocivil = n.id_estadocivil,
              pe_telefono = n.pe_telefono,
              pe_celular = n.pe_celular,
              id_banco = n.id_banco,
              pe_comuna = n.pe_comuna,
              pe_ciudad = n.pe_ciudad,
              pe_pais = n.pe_pais,
              pe_email = n.pe_email,
              pe_direccion = n.pe_direccion,
              id_pais = n.id_pais,
              id_comuna = n.id_comuna,
              id_ciudad = n.id_ciudad,

            });
      }

      st_grilla.DataSource = lista;
      st_grilla.PageSize = limit;
      PageProxy pageProxy = st_grilla.Proxy[0] as PageProxy;
      if (pageProxy != null) pageProxy.Total = data.Registros;
      st_grilla.DataBind();
    }
    private void AgregarFiltros_st_grilla(ref co_tg_personas_no nomina)
    {
      nomina.pe_nombres = FiltrosNomina.ValidarFiltros<string>(nomina.pe_nombres, filtertxt_pe_nombres.Text);
      nomina.pe_appaterno = FiltrosNomina.ValidarFiltros<string>(nomina.pe_appaterno, filtertxt_pe_appaterno.Text);
      nomina.pe_apmaterno = FiltrosNomina.ValidarFiltros<string>(nomina.pe_apmaterno, filtertxt_pe_apmaterno.Text);
      nomina.pe_rut = FiltrosNomina.ValidarFiltros<string>(nomina.pe_rut, filtertxt_pe_rut.Text);
      nomina.pe_telefono = FiltrosNomina.ValidarFiltros<string>(nomina.pe_telefono, filtertxt_pe_telefono.Text);
      nomina.pe_celular = FiltrosNomina.ValidarFiltros<string>(nomina.pe_celular, filtertxt_pe_celular.Text);
      nomina.pe_fechaingreso.Fecha = FiltrosNomina.ValidarFiltros<DateTime>(nomina.pe_fechaingreso.Fecha, filter_datei_fechacreacion.Value);
      nomina.pe_fechaingreso.FechaHasta = FiltrosNomina.ValidarFiltros<DateTime>(nomina.pe_fechaingreso.FechaHasta, filter_datef_fechacreacion.Value);

    }
    protected void strCmbIdPersona_OnReadData(object sender, StoreReadDataEventArgs e)
    {
      try
      {
        int start = e.Start;
        int limit = e.Limit;
        int page = (start / limit) + 1;

        co_tg_personas_no Nomina = new co_tg_personas_no();
        Nomina.Pagina = page;
        Nomina.RegistrosPorPaginas = limit;
        Nomina.ColumnaOrden = e.Parameters.GetParameter("sort").Value;
        Nomina.OrdenColumna =
          (FwpServerControls.FwpDataGridDataBound.Orden)
          Enum.Parse(typeof(FwpServerControls.FwpDataGridDataBound.Orden), e.Parameters.GetParameter("dir").Value, true);

        if (!string.IsNullOrEmpty(strCmbFilterIdPersona.Text))
        {
          Nomina.pe_nombrecompleto = strCmbFilterIdPersona.Text;
        }

        IList<object> lista = new List<object>();
        Nomina<co_tg_personas_no> data = new bf_tg_personas().GetNomina(Nomina);

        foreach (co_tg_personas_no n in data.DataSource)
        {
          lista.Add(
              new
              {
                id_persona = n.id_persona,
                pe_nombrecompleto = n.pe_nombrecompleto,
              });
        }

        strCmbIdPersona.DataSource = lista;
        PageProxy pageProxy = strCmbIdPersona.Proxy[0] as PageProxy;
        if (pageProxy != null)
          pageProxy.Total = data.Registros;
        strCmbIdPersona.DataBind();

        strCmbFilterIdPersona.Text = "";
      }
      catch (Exception)
      {
        Mensajes.Error(ErrorText.USUARIOS_NO_PERSONAS);
      }
    }
    public void OnReadData_st_cmb_id_persona(object sender, StoreReadDataEventArgs e)
    {
      try
      {



        int page = (e.Start / e.Limit) + 1;

        co_tg_personas_no Nomina = new co_tg_personas_no();

        Nomina.Pagina = page;
        Nomina.RegistrosPorPaginas = e.Limit;
        Nomina.ColumnaOrden = e.Sort[0].Property;
        Nomina.OrdenColumna =
          (FwpServerControls.FwpDataGridDataBound.Orden)
          Enum.Parse(typeof(FwpServerControls.FwpDataGridDataBound.Orden), e.Sort[0].Direction.ToString(), true);

        if (!string.IsNullOrEmpty(filtercbx_id_persona.SelectedItem.Text))
        {
          Nomina.pe_nombrecompleto = filtercbx_id_persona.SelectedItem.Text;
        }

        IList<object> lista = new List<object>();

        Nomina<co_tg_personas_no> data = new bf_tg_personas().GetNomina(Nomina);

        foreach (co_tg_personas_no n in data.DataSource)
        {
          lista.Add(
          new
          {
            id_persona = n.id_persona,
            pe_nombrecompleto = n.pe_nombrecompleto,
          });
        }

        st_cmb_id_persona.DataSource = lista;
        (st_cmb_id_persona.Proxy[0] as PageProxy).Total = data.Registros;
        st_cmb_id_persona.DataBind();
      }
      catch (Exception ex)
      {
        Mensajes.Error(ex.Message);
      }
    }
    protected void StrUsuarios_OnReadData(object sender, StoreReadDataEventArgs e)
    {
      try
      {
        int _id_remate = hidId_Remate.Text.ValidaEntero("id_remate");

        co_tg_personas_no Nomina = new co_tg_personas_no();

        if (e != null)
        {
          int start = e.Start;
          int limit = NumInt.Init(e.Parameters.GetParameter("limit").Value);
          limit = limit == 0 ? e.Limit : limit;
          int page = (start / limit) + 1;

          Nomina.Pagina = page;
          Nomina.RegistrosPorPaginas = limit;
          Nomina.ColumnaOrden = "pe_nombres";
          Nomina.OrdenColumna =
            (FwpDataGridDataBound.Orden)
            Enum.Parse(typeof(FwpDataGridDataBound.Orden), e.Sort[0].Direction.ToString(), true);
          Nomina.id_remate = _id_remate;
        }
        else
        {
          Nomina.Pagina = 1;
          Nomina.RegistrosPorPaginas = 20;
          Nomina.ColumnaOrden = "pe_nombres";
          Nomina.OrdenColumna = FwpDataGridDataBound.Orden.ASC;
          Nomina.id_remate = _id_remate;
        }

        var conn = new ConexionPlgOnline(this.ObtenerConexion());
        var persona = conn.ListaPersonasPorRemates(Nomina);
        bool validado = false, monto = false;
        var customers = new List<PersonasGarantias>();

        foreach (var p in persona.DataSource)
        {

          IList<dynamic> persona1 = new ConexionPlgOnline(this.ObtenerConexion()).ListaPersonasPorRematePorIdPersona(_id_remate, p.id_persona);

          if (persona1.Any())
          {
            monto = Convert.ToInt32(persona1.First().ga_monto) > 0;
            validado = persona1.First().ga_habilitado;
          }

          customers.Add(new PersonasGarantias
          {
            id = p.id_persona,
            nombre = p.pe_nombres + " " + p.pe_appaterno,
            usuario = persona1.First().us_consuser,
            validado = validado,
            monto = monto,
            lotesValidado = ObtenerLotesValidado(p.id_persona, _id_remate)
        });
          AgregarFiltros(ref customers);
          AgregarOrdenamiento(ref customers, e);
        }

        strUsuarios.DataSource = customers;
        strUsuarios.DataBind();
      }
      catch (Exception ex)
      {
        Mensajes.Error(ErrorText.ERROR_CARGAR_USUARIOS_GARANTIAS + ex.Message);
      }
    }
    private void CrearExcel(ref IList<object> lista, DirectEventArgs e, bool tienelimite)
    {
      if (lista == null) throw new ArgumentNullException("lista");
      JObject sortinfo = (JObject)JsonConvert.DeserializeObject(e.ExtraParams["SortInfo"]);

      //si falta informacion adicional o agregar nuevas caracteristicas (opcional)
      //JArray columnInfo = (JArray)JsonConvert.DeserializeObject(e.ExtraParams["ColumnInfo"]);


      co_tg_personas_no Nomina = new co_tg_personas_no();
      lista = new List<object>();


      Nomina.Pagina = 1;
      Nomina.RegistrosPorPaginas = 1;
      Nomina.ColumnaOrden = sortinfo["field"].ToString();

      //cuando estan en distintos modales se marea y no encuentra nada
      //Nomina.OrdenColumna = (FwpServerControls.FwpDataGridDataBound.Orden)Enum.Parse(typeof(FwpServerControls.FwpDataGridDataBound.Orden), sortinfo["direction"].ToString(), true);

      Nomina.OrdenColumna = FwpServerControls.FwpDataGridDataBound.Orden.ASC;


      AgregarFiltros_st_grilla(ref Nomina);

      //recupera solo 1 fila
      //para obtener datos como cantidad de registros
      Nomina<co_tg_personas_no> data = new bf_tg_personas().GetNomina(Nomina);

      Nomina.Pagina = 1;
      if (tienelimite)
      {
        Nomina.RegistrosPorPaginas = data.Registros < 65000 ? data.Registros : (int)(65000);
      }
      else
      {
        //idea principal de esto es enviar la todos los registros, pero por temas de rendimiento se limito.
        Nomina.RegistrosPorPaginas = data.Registros < 100000 ? data.Registros : (int)(100000);
      }

      //recuepra la totalidad de datos permitidos
      data = new bf_tg_personas().GetNomina(Nomina);

      foreach (co_tg_personas_no n in data.DataSource)
      {
        lista.Add(
            new
            {
              pe_nombres = n.pe_nombres,
              pe_appaterno = n.pe_appaterno,
              pe_apmaterno = n.pe_apmaterno,
              pe_rut = n.pe_rut,
              pe_telefono = n.pe_telefono,
              pe_celular = n.pe_celular,
              pe_email = n.pe_email,

            });
      }

      //return lista;
    }