2013-11-21 131 views
0

我有一个包含复选框的网格。我们设法使用GetCheckProduct()函数正确地获取所有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); 
     } 

回答

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() }    
}); 

但是,您的控制器动作还有第二个参数,所以根据您的配置,如果您的配置不在您发送的数据中,它可能不会被调用。

+0

谢谢你的作品 – Supermode

相关问题