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

问题描述 投票:0回答:2

我将发布我的代码,我很好奇是否有人能看到我在这里做错了什么。我已经测试了存储过程并且工作正常,因此中断必须位于控制器或模型中的某个位置。请参阅下面的代码:

查看:

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

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

kendo-grid kendo-asp.net-mvc
2个回答
0
投票
 url: '/Items/ItemsReport_Update2',

在ajax URL 中错过了“/”


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

© www.soinside.com 2019 - 2024. All rights reserved.