la idea seria que al llegarte las filas seleccionadas al servidor, guardes dichos ids en un arreglo y luego filtres los datos a enviarle al cuadro en base a dichos ids. De todas maneras, esto lo vas a tener que hacer en un proceso de dos pasos… ya que los links que disparan la vista excel o vista pdf… no hacen un POST y por ende nunca le llegarian las filas seleccionadas al cuadro.
entiendo la idea. Sería agregar un evento al cuadro, como “Filtrar Selección”, que reciba los ids y recargue el cuadro de la vista en base a estos; luego, con la vista filtrada, disparar la vista excel o vista pdf.
No estoy pudiendo atrapar estos ids. No estoy seguro si se haría extendiendo el objeto_js, o si se podría hacer en el evento php filtrar_seleccion directamente.
Cualquier ayuda es bienvenida. Desde ya muchas gracias por la respuesta anterior, y perdón por la insistencia en la ayuda.
si, la idea es esa… pero el evento se lo vas a tener que incorporar al CI, ya que necesita ser un evento que ‘maneje datos’, si vos le pones el evento al cuadro… vas a disparar otra cosa y no te va a tomar el multiple ya que va a identificar el que presionas vos.
Agregandole el evento al CI, no deberias tener inconvenientes… tene en cuenta que el evt del cuadro te va a traer un recordset.
Buenas, llegué hasta el evt__filtrar_seleccion($args) con los ids seleccionados pero no se como filtrar el cuadro usando estos ids. Probé con ::listar($where) armando el where con los ids y me sigue manteniendo el filtro original y probé poniendo esto $this->evt__filtro__cancelar(); antes y me muestra el cuadro entero sin filtro. Que me falta? Muchas gracias
los ids que recibiste, deberias pasarselos al metodo conf__cuadro para que los aplique en la consulta que recupera los datos para el mismo, ya que en definitiva son restricciones extra sobre el filtro que ya tenes aplicado.
Hasta ahora lo que tengo es la siguiente funcion en el reporte:
function evt__filtrar_seleccion($arg){
$cuadro = new tablerocontrol_ei_cuadro();
$where = array();
if($arg != "")
$where['id_convenio'] = "id_convenio in (".$arg.")";
$this->conf__cuadro_seleccion($cuadro,$where);
}
En el ci_filtro_cuadro cree la función “conf__cuadro_seleccion” que es igual a “conf__cuadro” pero le mando el “where”:
function conf__cuadro_seleccion(toba_ei_cuadro $cuadro,$where)
{
$datos = $this->get_datos_cuadro($where);
$cuadro->set_datos($datos);
}
En la variable “$datos” están efectivamente los datos que corresponden con los ids seleccionados, pero me sigue mostrando todos los registros. Donde carga los otros datos? o porque no muestra los datos que está recibiendo?
Calculo que está mal la llamada que estoy haciendo desde el reporte, “$this->conf__cuadro_seleccion($cuadro,$where);”
Que tendría que mandar en “$cuadro”?
el metodo conf__cuadro se va a ejecutar en cada pedido de pagina donde el componente ese este cargado, con lo cual lo que vos hagas en conf__cuadro_seleccion, va a ser pisado cuando se ejecute el metodo anterior.
Vos ahi estas haciendo un push de los cambios, cuando recibis los ids a filtrar se los metes de prepo al cuadro. Quizas te convendria hacer un pull de esos ids y filtrar en el metodo conf__cuadro los datos, de forma que solamente sea ese el lugar donde se le seteen datos al cuadro.