Saludos !
Estoy un poco confundido, mas que ayuda les pido su consejo y su opinion, construi una clase llamada DataTable que se encarga de hacer una tabla dinamica en HTML (con un metodo que se llama toHtmlString() ) y existe dentro de esta clase un metodo llamado toExcel() que lo que hace es poner headers de excel y llamar al metodo toHtmlString() para la construccion de la tabla.
Herede de ella e hice una clase que se llama AjaxDataTable, en el cual se construye un grid basado en la libreria extjs y aqui es donde entra la confusion...
El grid que se construye con la clase AjaxDataTable quiero que tenga una opcion de exportar los datos a excel con la funcion de la clase base toExcel(), el problema esque todo el grid que se muestra en pantalla(no como en aplicaciones desktop que puedes llamar un metodo desde un evento y cosas por el estilo) evidentemente es codigo javascript, html y tengo que llamar a otro script que reciba por sesion el objeto y mande a llamar el metodo toExcel(), (esa fue la opcion que se me ocurrio).
como ustedes podran ver... aqui se rompe la responsabilidad que cada objeto debe tener y se mezcla por ejemplo teniendo que dejar un script que tenga lo siguiente ...
Código PHP:
if ($_GET['action'] == "exportarExcel") {
$myGrid = $_SESSION['myGrid'];
$myGrid->toExcel();
}
y en el metodo donde se construye el grid en la parte del menu tengo que poner algo como lo siguiente (que es el que atrapa el click del grid en javascript):
Código PHP:
$menu .= "function actual(item, e) {";
$menu .= " var pagina = 'vista.module.php?action=exportarExcel';";
$menu .= " document.location.href=pagina;";
$menu .= "}";
Como ustedes podran notar.. $menu .= " var pagina = 'vista.module.php?action=exportarExcel';"; . aqui forzosamente tengo que dejar esta linea casada con la locacion del script y me parece poco util casar este detalle a la clase...
la pregunta del millon y Ustedes Como lo resolverian ??
Gracias
ATTE
Sergio Lopez