jQGrid celledit in JSON data shows URL Not set alert

前端 未结 1 1097
既然无缘
既然无缘 2021-01-27 06:06

I need to load a JSON from server and i want to enable a user to click and edit the value.

But when they edit, it should not call server. i mean i am not

1条回答
  •  有刺的猬
    2021-01-27 06:56

    I don't understand the problem with cell editing which you describe. Moreover you wrote "i need the edited value when the user click + icon in a row". Where is the "+" icon? Do you mean "trash.gif" icon? If you want to use cell editing, how you imagine it in case of clicking on the icon on the row? Which cell should start be editing on clicking "trash.gif" icon? You can start editing some other cell as the cell with "trash.gif" icon ising editCell method, but I don't think that it would be comfortable for the user because for the users point of view he will start editing of one cell on clicking of another cell. It seems me uncomfortable. Probably you want implement inline editing?

    One clear error in your code is usage of showSummaryGrid inside of RemoveFromSummary. The function RemoveFromSummary create jqGrid and not just fill it. So one should call it only once. To refresh the body of the grid you should call $("#persons-summary-grid").trigger("refreshGrid"); instead. Instead of usage postData: { deptSK: deptSk } you should use

    postData: { deptSK: function () { return $('#hdn-deptsk').val(); } }
    

    In the case triggering of refreshGrid would be enough and it will send to the server the current value from the '#hdn-deptsk'. See the answer for more information.

    UPDATED: I couldn't reproduce the problem which you described, but I prepared the demo which do what you need (if I understand your requirements correctly). The most important part of the code which you probably need you will find below

    $("#AddSelectedItems").click(function () {
        var savedRow = summaryGrid.jqGrid("getGridParam", "savedRow"),
            $editedRows,
            modifications = [];
        if (savedRow && savedRow.length > 0) {
            // save currently editing row if any exist
            summaryGrid.jqGrid("saveCell", savedRow[0].id, savedRow[0].ic);
        }
        // now we find all rows where cells are edited
        summaryGrid.find("tr.jqgrow:has(td.dirty-cell)").each(function () {
            var id = this.id;
            modifications.push({
                PersonSK: id,
                Comment: $(summaryGrid[0].rows[id].cells[2]).text() // 2 - column name of the column "Comment"
            });
        });
        // here you can send modifications per ajax to the server and call
        // reloadGrid inside of success callback of the ajax call
        // we simulate it by usage alert
        alert(JSON.stringify(modifications));
        summaryGrid.jqGrid("setGridParam", {datatype: "json"}).trigger("reloadGrid");
    });
    

    0 讨论(0)
提交回复
热议问题