簡體   English   中英

調用javascript函數並傳遞參數

[英]calling javascript function and passing parameter

我正在使用Kendo Grid,並且試圖創建一個自定義列模板命令來調用JavaScript函數,該JavaScript函數對傳遞兩個參數的mvc控制器進行ajax調用,以便在那里執行其他操作。

這是網格:

@(Html.Kendo().Grid<iPlan.Syspro.Beekman.Portal.Agents.Models.SalesOrderDetailViewModel>()
.Name("Details")
.HtmlAttributes(new {@style = "width:80vw"})
.Columns(columns => {
    columns.Bound(c => c.Agent).Width(100);
    columns.Bound(c => c.SalesOrder).Width(150);
    columns.Bound(c => c.Line).Width(60);
    columns.Bound(c => c.StockCode).Width(150);
    columns.Bound(c => c.SerialNumber).Width(150);
    columns.Bound(c => c.DerivativeDescription).Width(150);
    columns.Bound(c => c.StockCodeDescription).Width(150);
    columns.Bound(c => c.OrderQty).Width(150);
    columns.Bound(c => c.OnBackorder).Width(150);
    columns.Bound(c => c.QtyAvailable).Width(150);
    columns.Bound(c => c.ShippedQuantity).Width(150);
    columns.Bound(c => c.SalesPrice).Width(150);
    columns.Bound(c => c.AlternativeSerial).Width(150);
    columns.Bound(c => c.AlternativeSerialReason).Width(150);
    columns.Bound(c => c.VinNr).Width(150);
    columns.Bound(c => c.DealerOrderNr).Width(150);
    columns.Bound(c => c.WipNr).Width(150); 
    columns.Bound(c => c.GrnNr).Width(150);
    columns.Bound(c => c.AsnNr).Width(150);
    columns.Bound(c => c.DeliveryNoteNr).Width(150);  
    columns.Command(command => {command.Edit(); command.Destroy();}).Width(172);
    columns.Template(@<text></text>).Width(150).ClientTemplate("<a class='k-button k-button-       icontext k-grid-edit' href='javascript:' onclick='approve()'><span class='k-icon k-edit'>  </span>Approve</a>").Title("Action");      
})
.Editable(editable => editable.Mode(GridEditMode.InLine))
.Sortable()
.Scrollable()
.Groupable()
.Pageable(pageable => pageable
    .Refresh(true)
    .PageSizes(true)
    .ButtonCount(5))
.DataSource(dataSource => dataSource
    .Ajax()
    .Events(events => events.Error("error_handler"))
    .Read(read => read.Action("SalesOrdersDetail_Read", "Inbox").Data("getSalesOrder"))
    .Update(update => update.Action("SalesOrdersDetail_Update","InboxAgent"))
    .Destroy(destroy => destroy.Action("SalesOrdersDetail_Destroy","InboxAgent"))
    .Create(create => create.Action("SalesOrdersDetail_Create","InboxAgent"))
    .Model(model => {
        model.Id(p => p.SalesOrder);
        model.Field(p => p.StockCode).Editable(false);
        model.Field(p => p.SerialNumber).Editable(false);
        model.Field(p => p.DerivativeDescription).Editable(false);
        model.Field(p => p.StockCodeDescription).Editable(false);
        model.Field(p => p.SalesOrder).Editable(false);            
        model.Field(p => p.Agent).Editable(false);
        model.Field(p => p.Line).Editable(false);
        model.Field(p => p.OrderQty).Editable(false);
        model.Field(p => p.OnBackorder).Editable(false);
        model.Field(p => p.QtyAvailable).Editable(false);
        model.Field(p => p.ShippedQuantity).Editable(false);
    })        
))

這是我要調用的JavaScript函數:

  <script type="text/javascript">
  function approve(e) {
    debugger;        
    console.log("index function hit");
    //var data = $("#Details").data("kendoGrid").dataSource.data();
    //var dataRet = data.indexOf(dataItem);
    $.ajax({
        type: 'POST',
        url: href="/Inbox/SalesOrderDetailApprove" + "?SalesOrder=" + e.SalesOrder + "&Line=" + e.Line,
        dataType: 'json',
        data: {} ,
        success: function (response) { }
    });
}

現在,使用此代碼,它可以使用JavaScript方法,但不會傳遞我的數據。 這是控制器中需要將數據傳遞到的方法。 所以需要解決的問題是這樣的:

  1. 數據需要正確地傳遞給JavaScript方法。
  2. 單擊模板列中的按鈕后,kendo網格便進入編輯模式,我需要再次單擊該按鈕才能使其脫離編輯模式。
  3. 該事件不會觸發一次,它會在頁面加載時命中該方法。
  4. 另一個問題是我最近安裝了resharper(試用版)。 我卸載了resharper,從那以后,視圖(cshtml)中所有剃須刀部件的智能感知都壞了。 我該如何解決?
public ActionResult SalesOrderDetailApprove( string  SalesOrder, string Line) {
    try {
        return Json("", JsonRequestBehavior.AllowGet);
    } catch (Exception) {
        throw;
    }
}

試試下面的代碼來調用函數

function approve(e) {
  var postUrl = '@Url.Action("SalesOrderDetailApprove", "Inbox")';
  var EmployeeId = { SalesOrder: e.SalesOrder, Line:  e.Line};
    $.ajax({
            url: postUrl,
             data: EmployeeId,
             type: 'POST',
             dataType: 'json',
             success: function (response) { }
      });
 }

這將為您工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM