如何将选定的网格复选框插入数据库

时间:2013-11-21 07:12:02

标签: asp.net-mvc-4 razor kendo-ui

我有一个包含复选框的网格。我们设法使用GetCheckProduct()函数正确获取All ChecksRecord,问题是如何在点击AddSelectedProduct时从GetCheckProduct()传递给控制器​​选定的产品。

到目前为止,这是代码。谢谢

<script>
      var getCheckProduct = function () {
        var grid = $('#Product').data().kendoGrid;
        var elem = grid.element;
        var data = $('#Product').data().kendoGrid.dataSource.data();
        var count = 0;
        var res = [];
        var checkbox = elem.find(".chkbx").each(function () {
            var t = $(this);
            if (t.is(":checked")) {
                res.push(data[count].TRN);
            }
            count += 1;
        });
        return res;
    };

      $("#AddSelectedProduct").on("click", function () {




        $.ajax({
            type: 'POST',
            url: '@(Url.Content("~/ProdDetails/AddSelectedProduct/"))',
            data: {

                "selectedProduct": getCheckProduct()



            }
        });
        return false;
    });


</script>

问题是selectedProduct没有传递给控制器​​。

Controller:
public ActionResult AddSelectedConsumer(string[] selectedProduct, Guid ReferralListID)
        {
            UpdateConsumer(selectedProduct);

            return Json(null);
        }

1 个答案:

答案 0 :(得分:0)

我认为您需要使用JSON.stringify([getCheckProduct())字符串化数据:

 $.ajax({ 
      type: "POST",
      url: '@(Url.Content("~/ProdDetails/AddSelectedProduct/"))',
      datatype: "json",
      contentType: 'application/json; charset=utf-8',
      data: JSON.stringify([getCheckProduct())              
 });

或将ajax请求的traditional选项设置为true:

 $.ajax({ 
      type: "POST",
      url: '@(Url.Content("~/ProdDetails/AddSelectedProduct/"))',
      datatype: "json",
      traditional: true,
      data: { 'selectedProduct': getCheckProduct() }              
 });

但是,您的控制器操作还有第二个参数,因此根据您的配置,如果不在您发送的数据中,则可能无法调用它。