【问题标题】:How to change a specific RowData value in a jqGrid?如何更改 jqGrid 中的特定 RowData 值?
【发布时间】:2011-01-04 17:55:37
【问题描述】:


而使用的脚本是

<script type="text/javascript">

        var lastSelection;
        var idCategoria;
        var nomeCategoria;

        function editRow(id) {
            if (id && id !== lastSelection) {
                var grid = jQuery("#<%= JQGrid1.ClientID %>");

                if (document.getElementById(lastSelection + "_NomeCategoria") != null) {
                    if ( document.getElementById(lastSelection + "_NomeCategoria").value != undefined ) {
                        var objeto = document.getElementById(lastSelection + "_NomeCategoria");
                        idCategoria = objeto.value;
                        nomeCategoria = objeto[objeto.selectedIndex].text;
                    }
                }

                if (lastSelection != undefined) {
                    grid.updateGridRows("{IdCategoria:" + idCategoria + "}", lastSelection);
                    grid.saveRow(lastSelection, false);
                    //grid.setCell(lastSelection, "IdCategoria", idCategoria);
                    //grid.setRowData(lastSelection, "{IdCategoria:" + idCategoria + "}");
                }

                try
                {
                    grid.restoreRow(lastSelection, defineCategoria);
                }
                catch(err)
                {
                    alert(err.description);
                }
                grid.editRow(id, true, selecionaCategoria);
                lastSelection = id;
            }
        }

        function selecionaCategoria(id) {

            var grid = jQuery("#<%= JQGrid1.ClientID %>");
            var linha = grid.getRowData(id);
            var idCategoria = linha.IdCategoria;
            var comboCategorias = document.getElementById(id + "_NomeCategoria");
            if (idCategoria != "" && idCategoria != undefined) {
                try {
                    for (var i = 0; i < comboCategorias.childNodes.length; i++) {
                        if (comboCategorias.childNodes[i].value == idCategoria) {
                            comboCategorias.childNodes[i].selected = true;
                            break;
                        }
                    }
                }
                catch (err) {
                    alert(err.description);
                }
            }
        }

        function defineCategoria(id) {
            var grid = jQuery("#<%= JQGrid1.ClientID %>");
            grid.setCell(id, "NomeCategoria", DefineUrlCategoria(idCategoria, nomeCategoria));
        }

        // The FormatFunction for CustomFormatter gets three parameters
        // cellValue - the original value of the cell
        // options - as set of options, e.g
        //   options.rowId - the primary key of the row
        //   options.colModel - colModel of the column
        // rowData - array of cell data for the row, so you can access other cells in the row if needed

        function DefineUrl(cellValue, options, rowObject) {
            var caminho = "";
            if (isArray(rowObject)) {
                if (rowObject[1] != "" && rowObject[1] != undefined) {
                    //var caminho = "<a href='/Ferramenta/Graficos/GraficoCategoria.aspx?idCategoria=" + rowObject[1] + "'>" + cellValue + "</a>";
                    caminho = DefineUrlCategoria(rowObject[1], cellValue);
                }
                else {
                    caminho = cellValue;
                }
            }
            else {
                if (idCategoria != "0") {
                    caminho = DefineUrlCategoria(idCategoria, nomeCategoria);
                }
                else {
                    caminho = nomeCategoria;
                }
            }
            return caminho;
        }

        function isArray(o) {
            return (typeof (o.length) == "undefined") ? false : true;
        }


        function DefineUrlCategoria(idCategoria, nomeCategoria) {
            var caminho = "<a href='/Ferramenta/Graficos/GraficoCategoria.aspx?idCategoria=" + idCategoria + "'>" + nomeCategoria + "</a>";

            return caminho;
        }
    </script>

当行不处于编辑模式时,第五列会显示一个链接,而在编辑时会显示一个下拉菜单。要在下拉列表中选择正确的项目,我使用具有来自数据库的 ID 的第二列。

问题是在更改项目并将其保存到数据库后,此列值不会更改。在 grid.saveRow(lastSelection, false); 之后我该怎么做? ?

谢谢。

【问题讨论】:

    标签: c# asp.net jqgrid


    【解决方案1】:

    我找到了解决办法!

    我改了下面的代码

    if (lastSelection != undefined) {
        grid.updateGridRows("{IdCategoria:" + idCategoria + "}", lastSelection);
        grid.saveRow(lastSelection, false);
        //grid.setCell(lastSelection, "IdCategoria", idCategoria);
        //grid.setRowData(lastSelection, "{IdCategoria:" + idCategoria + "}");
    

    }

    到这里

    if (lastSelection != undefined) {
        grid.setRowData(lastSelection, {IdCategoria:idCategoria});
        grid.saveRow(lastSelection, false);}
    

    问题是我将第二个参数作为字符串传递。

    【讨论】:

      猜你喜欢
      • 2012-09-22
      • 1970-01-01
      • 2016-08-01
      • 2013-03-14
      • 1970-01-01
      • 2021-09-29
      • 2012-08-01
      • 2013-11-07
      • 1970-01-01
      相关资源
      最近更新 更多