jqGrid - 编辑数据

时间:2010-11-26 13:16:57

标签: jqgrid

我对jquery和jqgrid很新。我使用ASP.NET WebForms。我能够获得一些数据舞会服务器并在网格中显示它。我使用PageMethods从服务器获取数据。通常我的代码是

function CreateGrid(){
    $("#sestGrid").jqGrid({
        datatype: GetData,
        //toolbar: [true, "top"],
        colNames: ['Name', 'Age'],
        colModel: [
            { name: 'Name', index: 'Name', width: 170, align: 'left',
              sortable: false, key: true },
            { name: 'Age', index: 'Age', width: 40, align: 'center',
              sortable: false, editable: true },
        ],
        ondblClickRow: function () {
            var row_id = $("#sestGrid").getGridParam('selrow');
            $('#sestGrid').editRow(row_id, true);
        }
    });
}

function GetData() {
    PageMethods.GetSestevalniStevecData(GotData);
}

function GotData (data) {
    $("#sestGrid").clearGridData(false);
    for (var j = 0; j <= data.length; j++)
        $("#sestGrid").jqGrid('addRowData', j + 1, data[j]);
}

所以,现在我想编辑一些数据并将其发布到服务器。如何使用PageMethods执行此操作?我应该使用任何其他方法吗?

还有一件事。我检查了演示http://trirand.com/blog/jqgrid/jqgrid.html,在所有编辑示例中,您只能编辑一行,然后您必须保存更改...是否可以编辑多行并一步保存所有更改?

谢谢大家。

2 个答案:

答案 0 :(得分:1)

jqGrid旨在与ajax服务一起使用。因此,如果用户更改某行的数据,则更改将发送到服务器:发送到您通过jqGrid参数editurl配置的URL。因此,实现行编辑的最简单方法是在您的网站中包含ASMX Web服务或WCF服务。无论是使用ASP.NET WebForms,ASP.NET MVC还是仅使用纯HTML作为页面,这一点都不重要。因此,只需选择您喜欢的技术,并将相应的页面添加到您的网站。

ASMX或WCF应该有一个带有签名的方法,如

public string MyDataEdit (string Age, string oper, string id)

(有关详细信息,请参阅this旧答案)。在添加操作的情况下,该方法应返回新添加项的ID(在您的情况下为Name)。

还有一个小小的评论。您可以将ondblClickRow函数的定义从function()更改为function(row_id),并删除使用的行getGridParam('selrow')

答案 1 :(得分:0)

我用了你的例子并改了一下:

ondblClickRow: function (rowid) {
if (rowid && rowid != lastsel) {
    changedRows.push(rowid); //keep row id
    jQuery('#jqgrid').editRow(rowid, true);
}
}

在保存按钮点击事件下:

$.each(changedRows, function () {
    var row = $("#jqgrid").getRowData(this);
    var Id = row['ID'];
    var price = $(row['Price']).val(); //this is an input type
});

HTH某人:)