Can a new row be added to a datatable and that same edit and be sent to bd?


Good afternoon, I want to ask you a question, there is some way that a new row can be added to a DataTable by means of a button and that same row can be filled with information, all the datatable is filled with information from the BD, Basically it is to fill a main list (which is where all the information arrives), so that more or less to understand me I want to do something similar to this page:


I hope and you can give me your opinion and if there is a way I could please give me tips on how to do it, greetings and stay tuned.

asked by cratus666jose 27.12.2018 в 01:08

1 answer


What is promised is debt, I leave all the code that I did during all:

//Agrega nueva fila:
    public void onAddNew() {
        //Se crea una nueva instancia del objeto ControlVersionesDTO
        ControlVersionesDTO agregarFila = new ControlVersionesDTO();
        //Cuando se da en nuevo, se crea una fila y le seteamos el valor 1, que quiere decir que será un insert
        //Dicha fila se agrega a la lista filtrada por medio del objeto agregarfila
        RequestContext.getCurrentInstance().execute("ocultarEliminar(" + (listControlVersionesFiltradas.size() - 1) + ")");

  //Metodo para cancelar edición de un registro
    public void onRowCancel(RowEditEvent event) {
        ControlVersionesDTO cancelarEdit = ((ControlVersionesDTO) event.getObject());//Se habilita la fila que se seleccionó
        cancelarEdit.setStatusAccionInsertUpdate(0);//Regresamos el valor por defecto a cero para que en el sp de insertUpdate no lo pele XD

        System.out.println("Hola Cancelé");
        System.out.println("Status updateInsert..." + cancelarEdit.getStatusAccionInsertUpdate());


    //Metodo para editar registros del dataTable
    public void onRowEdit(RowEditEvent event) {

        //System.out.println("Entre editar...");
        ControlVersionesDTO editFila = ((ControlVersionesDTO) event.getObject());

        if (editFila.getStatusAccionInsertUpdate() == 0) {

        System.out.println("Hola Edite fila");
        System.out.println("Status updateInsert..." + editFila.getStatusAccionInsertUpdate());


        RequestContext.getCurrentInstance().execute("ocultarEliminar(" + (listControlVersionesFiltradas.size() - 1) + ")");

The method where I keep and previously valid:

 public void SaveRegistros() throws SQLException {
        for (int i = 0; i < listControlVersionesFiltradas.size(); i++) {

            System.out.println("json888..." + listControlVersionesFiltradas.get(i).getFw_to_update());
            if (listControlVersionesFiltradas.get(i).getFw_to_update() == null || listControlVersionesFiltradas.get(i).getFw_to_update() == "" || listControlVersionesFiltradas.get(i).getActual_fw() == "" || listControlVersionesFiltradas.get(i).getDevice_version() == "" || listControlVersionesFiltradas.get(i).getVersion_id() == "") {

                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Error: ", "Favor de completar las columnas faltante."));
                RequestContext.getCurrentInstance().execute("ocultarEliminar(" + (listControlVersionesFiltradas.size() - 1) + ")");


        //RequestContext.getCurrentInstance().execute("ocultarEliminar(" + (listControlVersionesFiltradas.size() - 1) + ")");
        int cve_device;

        cve_device = controlVersion.getCve_device();//Obtengo el valor del objeto lleno y se lo asigno a la variable cve_device
        //cve_version = controlVersion.getCve_version();
        System.out.println("cve..." + cve_device);
        //System.out.println("cveversion..." + cve_version);

        for (ControlVersionesDTO item : listControlVersionesFiltradas) {
            System.out.println("yyyyyy..." + item.getCve_version());

            if (item.getCve_device() == 0) {


        Gson gsonBuilder = new GsonBuilder().create();
        String jsonFromJavaArrayList = gsonBuilder.toJson(listControlVersionesFiltradas);

        //"NO MOVER" Valida que el usuario le dé en guardar sin ingresar registros y que esté vacio por completo (0 registros).
        if (listControlVersionesFiltradas.size() <= 0) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Error: ", "No hay registros que guardar."));

        } //En este else tiene que entrar cuando se hayan hecho todas las validaciones posibles.
        else {
            System.out.println("json from111..." + jsonFromJavaArrayList);
            ResultSet resultado = dao.saveDevice(jsonFromJavaArrayList);//Se obtiene el resultado del Sp y se asigna a la variable

            if ( && resultado.getBoolean(2)) {
                System.out.println("Traigo la clave de la versión que voy a insertar..." + resultado.getString(3));
                System.out.println("Traigo true..." + resultado.getString(2));
                System.out.println("Traigo el mensaje de la BD si soy true..." + resultado.getString(1));
                //Se recorre para revisar lista filtrada los estatus de 1 que vienen siendo insert
                for (int i = 0; i < listControlVersionesFiltradas.size(); i++) {
                    if (listControlVersionesFiltradas.get(i).getStatusAccionInsertUpdate() == 1) {

                        //Se retorna la cve_version por medio de la variable del resultado del parametro 3 que trae la cve

                    //Se setean el StatusAccionInsertUpdate a 0 para que cuando vuelva insertar otro registro, los ceros nos pele
                System.out.println("Resultado despues del for..." + resultado);
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Exito: ", "Registro Ingresado Satisfactoriamente."));

            } else {
                System.out.println("No traigo nada de clave versión" + resultado.getString(3));
                System.out.println("Voy a venir falso..." + resultado.getString(2));//
                System.out.println("Voy a venir null..." + resultado.getString(1));
                FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "No se pudo insertar registro: ", "La Versión ya existe."));
                RequestContext.getCurrentInstance().execute("ocultarEliminar(" + (listControlVersionesFiltradas.size() - 1) + ")");



I hope and someone serves, greetings and good vibes.

answered by 14.01.2019 в 19:02