如何将jqgrid的值保存在列表数组中

本文关键字:存在 列表 数组 保存 jqgrid | 更新日期: 2023-09-27 18:28:12

我已经成功实现了jqgrid,我对将所选数据发布到控制器有一些问题

  1. 如何保持对所选行的跟踪意味着如何将数据保存在列表数组中
  2. 如何返回数据表以再次显示结果,如所选行数和所选行值的总和等。请提供帮助。我正在发布我的jquery代码以及控制器代码。提前谢谢。

    视图:

    onSelectRow: function (id, status)
        {
            alert('polo');
            var rowData = jQuery(this).getRowData(id);
            FirstName = rowData['FirstName'];
            LastName = rowData['LastName'];
            Salary = rowData['Salary'];
            Gender = rowData['Gender'];
            $.ajax({
                url: '/TodoList/notCk_Pk',
                data:{'FirstName':FirstName,'LastName':LastName,'Salary':Salary,'Gender':Gender},
            type: "post"
            })
            $('#example').dataTable({
                "bProcessing": true,
                "bServerSide": true,
                "sAjaxSource": "/TodoList/notCk_Pk",
                "sAjaxDataProp": "",                
                "columns": [
                           { "data": "FirstName" },
                           { "data": "LastName" },
                           { "data": "Salary" },
                           { "data": "Gender" },
                ]
            });
    }
    

    控制器代码:

    public ActionResult notCk_Pk(String FirstName,String LastName,int Salary,String Gender)
        {                            
            l.Add(FirstName);
            l1.Add(LastName);
            i = Salary + i;
            l2.Add(Gender);
            string ConnectionString = ConfigurationManager.ConnectionStrings["EmployeeContext"].ConnectionString;
            using (SqlConnection connection = new SqlConnection("data source=.; database=Srivatsava; integrated security=SSPI"))
            {
                connection.Open();
                SqlCommand com = new SqlCommand("insertinto", connection);
                com.CommandType = CommandType.StoredProcedure;
                com.Parameters.AddWithValue("@FirstName", FirstName);
                com.Parameters.AddWithValue("@LastName",LastName);
                com.Parameters.AddWithValue("@Salary", Salary);
                com.Parameters.AddWithValue("@Gender", Gender);
                com.ExecuteNonQuery();
                connection.Close();
            }
            var todoListsResults = l.Count();
            var t1=l1.Count();
            var t3=l2.Count();
            var aaData=new{
                           todoListsResults,
                           t1,
                           i,
                           t3
                       };
            return Json(aaData, JsonRequestBehavior.AllowGet);
            //Console.WriteLine(FirstName + "" + LastName + "" + Salary + "" + Gender);
            //return Content("<script language='javascript' type='text/javascript'>alert("+FirstName+");</script>");
        }
    

每次我选择一行时,它都会将I变量初始化为"0",即使我将其设置为全局变量。

如何将jqgrid的值保存在列表数组中

您不需要使用列表数组。您可以使用$("#ListGrid").jqGrid('getGridParam', 'selarrrow')获取所有选定的行。下面的代码片段可能会对您有所帮助。

onSelectRow: function(id, status) {
     var currentRow = $(this).getRowData(id);
     FirstName = currentRow['FirstName'];
     LastName = currentRow['LastName'];
     Salary = currentRow['Salary'];
     Gender = currentRow['Gender'];
    $.ajax({
        url: '/TodoList/notCk_Pk',
        data:{'FirstName':FirstName,'LastName':LastName,'Salary':Salary,'Gender':Gender},
        type: "post"
    })
    var rows = $("#ListGrid").jqGrid('getGridParam', 'selarrrow');
    var totalRow = rows.length;
    var totalAmount = 0;
    $.each(rows, function() {
      var rowData = $("#ListGrid").getRowData(this);
      totalAmount += rowData["Salary"] * 1;
    });
    dataTable.row($('#example').find('tbody tr')).remove().draw();
    dataTable.row.add([totalRow, totalAmount]).draw();
}

演示