我创建了一个AJAX调用来将数据发送到存储过程。为什么不起作用?

时间:2019-06-18 17:30:25

标签: kendo-grid kendo-asp.net-mvc

我将发布我的代码,我很好奇是否有人在这里看到我做错了什么。我已经测试了存储过程,并且可以正常工作,因此中断必须在Controller或Model中。参见下面的代码:

查看:

function saveCalc() {
                        var TotCost = $("#totCost").val();
                        var GPM = $("#CalcAmt").val();
                        var SP = parseFloat(TotCost / (1 - GPM));
                        var ID = parseInt($("#ID").val());
                        debugger;
                        $.ajax({
                            url: 'Items/ItemsReport_Update2',
                            type: "Get",
                            data: { ID: ID, SP: SP },
                            success: function () {

                                CalcDialog.close();
                                CalcDestroy();


              $('#ItemsReportgrid').data('kendoGrid').dataSource.read();

              $('#ItemsReportgrid').data('kendoGrid').refresh();
                            }
                        });
                    }

控制器:

        public void ItemsReport_Update2( int ID, double SP)
    {
        ItemsModel oItemsModel = new ItemsModel();
        oItemsModel.UpdateItemsReport2(ID, SP);
    }

型号:

        public void UpdateItemsReport2(int ID, double SP)
    {
        using (SqlConnection con = new SqlConnection(connectionString))
        {
            SqlCommand cmd = new SqlCommand("sp_UpdateInvItem2", con)
            {
                CommandType = CommandType.StoredProcedure
            };
            if (con.State == ConnectionState.Closed)
                con.Open();
            cmd.Parameters.AddWithValue("@ID", ID);
            cmd.Parameters.AddWithValue("@SP", SP);

            try
            {
                cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

    }

在此先感谢您的帮助。我已经用调试器运行了脚本,它正确地传递了数据。

2 个答案:

答案 0 :(得分:0)

 url: '/Items/ItemsReport_Update2',

您在Ajax URL中缺少了'/'

答案 1 :(得分:0)

我认为您的问题是网格没有填充结果数据

如果要加载剑道网格数据,请像这样更改控制器

  public void ItemsReport_Update2( [DataSourceRequest]DataSourceRequest request,int ID, double SP)
    {
    //Create a list with your model type 
      List<> lst = new List<>();
        ItemsModel oItemsModel = new ItemsModel();
        oItemsModel.UpdateItemsReport2(ID, SP);
        
        DataSourceResult result = lst.ToDataSourceResult(request);
         var jsonResult = Json(result,JsonRequestBehavior.AllowGet);
    }

然后您需要像这样更改javascript

function saveCalc() {
                        var TotCost = $("#totCost").val();
                        var GPM = $("#CalcAmt").val();
                        var SP = parseFloat(TotCost / (1 - GPM));
                        var ID = parseInt($("#ID").val());
                         var grid = $("#ItemsReportgrid").data('kendoGrid');
                        debugger;
                        $.ajax({
                            url: '/Items/ItemsReport_Update2',
                            type: "Get",
                            data: { ID: ID, SP: SP },
                            success: function (result) {
                     grid.dataSource.data(result.Data);
                                CalcDialog.close();
                                CalcDestroy();


              
                            }
                        });
                    }