2013-11-21 180 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

相關問題