2013-08-06 4 views
0

Syncfusion Datagrid를 사용하는 MVC4 응용 프로그램이 있습니다. 보기에 나는 JQuery와 기능을 실행하는 버튼 (xfrButton)가 :JQuery 함수가 Syncfusion Datagrid를 사용하여 새보기를 시작하지 못함

  $(document).ready(function() { 

      // Handle the clicking of the Request Transfer button 
      $('#xfrButton').click(function() { 

       // Initialize object to hold data grid 
       var GridObj = $find("AssetGrid") 

       // Initialize object to hold the filters the user selected in the grid 
       var gridData = Sys.Serialization.JavaScriptSerializer.serialize(GridObj._filters); 

       // Call controller action to process selected filters passing the filters variable (gridData) 
       $.post('<%: ResolveUrl("~/Step05_AssetsValidBUActiveCRS/RequestToTransfer/")%>', { select: gridData }, 
            function (data) { 

             // If successful, call the Transfer Request View 
             var targetModel = Sys.Serialization.JavaScriptSerializer.serialize(data); 
             var targetURL = '~/Step05_TransferRequest/Index/?transferVM=' + targetModel.toString(); 
//          var targetURL = '~/Step05_TransferRequest/Index/'; 

             //TODO: Figure out a way to launch a new view upon success return from above statement 
             //  Must pass the data returned from the above .post to the new controller action 
             //  Current process just stays on the existing screen. Neither of the following work: 

             $(this).load(targetModel); 
//          window.location.href(targetURL); 
            } 
        , "json") 

      }) 

     }) 

.post에서/Step05_AssetsValidBUActiveCRS/RequestToTransfer에 대한 호출이 마법처럼 작동하고 반환 된 데이터에 대한 데이터를 포함하는 뷰 모델입니다 내가 시작하고 싶은 다음보기. 유일한 문제는 다음 뷰/액션 (이 경우 targetURL의 URL)을 시작하려고 할 때 상관없이 현재보기 및 DataGrid가 브라우저에서 그대로 유지된다는 것입니다.

xfrButton 단추를 다시 클릭하면 .post 작업을 다시 수행하지만 targetURL 값을 실행하지 않는 위의 루틴이 실행됩니다. 왜 jquery가 새로운 관점을 시작하지 않을까요?

<p> 
     <input id="xfrButton" type="submit" value="Request Transfer To" /> 
    </p> 

<%=Html.Syncfusion().Grid<AMSUtilityMVC4.ViewModels.Step05ListAssetsValidBUActiveCRSViewModel>("AssetGrid") 
    .Datasource(Model) 
    .EnableFiltering()  /*Filtering Enabled*/ 
    .EnableSorting()  /*Sorting Enabled*/ 
    .EnablePaging()   /*Paging Enabled*/ 
    .AllowResizing(true) 
    .Scrolling(scroll => scroll.Height(300).Width(1050)) 
    .EnableScrolling() 
    .AllowSelection(true).RowsSelectionMode(RowsSelectionMode.Toggle) 
    .Column(cols => 
    { 
     cols.Add(c => c.REMS).HeaderText("REMS").Width(75); 
     cols.Add(c => c.companyName).HeaderText("Company").Width(150); 
     cols.Add(c => c.LVID).HeaderText("LVID").Width(75); 
     cols.Add(c => c.entity).HeaderText("BU").Width(75); 
     cols.Add(c => c.locationDescription).HeaderText("Location Description").Width(150);    
     cols.Add(c => c.assetNumber).HeaderText("Asset No").Width(100); 
     cols.Add(c => c.majorCategory).HeaderText("Major Cat").Width(150); 
     cols.Add(c => c.minorCategory).HeaderText("Minor Cat").Width(150); 
     cols.Add(c => c.FACode).HeaderText("FA Code").Width(75); 
     cols.Add(c => c.description).HeaderText("Title").Width(150); 
     cols.Add(c => c.cost).HeaderText("Cost").TextAlign(Syncfusion.Mvc.Grid.TextAlignment.Right).Format("{0:C}").Width(70); 
     cols.Add(c => c.nbv).HeaderText("NBV").Width(60); 
     cols.Add(c => c.GOC).HeaderText("GOC").Width(75); 
     cols.Add(c => c.FEIN).HeaderText("FEIN").Width(75); 
     cols.Add(c => c.datePlacedInService).HeaderText("In Service").Width(150); 
     cols.Add(c => c.vendorName).HeaderText("Vendor Name").Width(150); 
     cols.Add(c => c.accountingKey).HeaderText("Acct Key").Width(150);   
     cols.Add(c => c.locationKey).HeaderText("Location Key").Width(150); 
     cols.Add(c => c.state).HeaderText("State"); 
    }) 
    .ClientSideEvents(e => e.OnToolbarClickEvent("OnToolbarClickEvent")) 
    .ToolBar(tools => 
    { 
     // Adding the custom toolbar items. 
     // Add(customItemtitle, customItemcaption, customItemCssClass)     
     tools.Add(GridToolBarItems.ExcelExport, "Excel Export") 
      .Add(GridToolBarItems.PDFExport, "PDF Export") 
      .Add(GridToolBarItems.Custom, "Transfer Request To", "RequestTransfer"); 
    }) 
    .Mappers(map =>{map.ExportExcelAction("GridExportToExcel") 
         .ExportPdfAction("GridExportToPDF");}) 
%> 
대신 $ (이) .load (targetModel)``$를 사용해보십시오`사용
+0

("correctselector : 참고로

, 여기에 버튼과 함께보기에 Syncfusion 코드는 ") .load (targetURL)'. 그것은 전체 페이지의 경우 선택기로 $ (document.documentElement)를 사용합니다 – Bharath

답변

0
Your requirement can be solved by passing targetURL in load function. Please refer to the following code snippets: 

[JavaScript] 

function OnToolbarClickEvent(sender, args) { 
    var GridObj = sender; 
    if (args._currentItem.title == "RequestToTransfer") { 
     $.ajax({ 
      url: "/Home/RequestToTransfer", 
      data: 
        { 
         "select": Sys.Serialization.JavaScriptSerializer.serialize(GridObj._filters) 
        }, 
      dataType: 'json', 
      success: function (data) { 

       var targetModel = Sys.Serialization.`JavaScriptSerializer`.serialize(data); 
       var targetURL = '/Home/RequestToTransfer/?select=' + targetModel.toString(); 
       //          var targetURL = '~/Step05_TransferRequest/Index/'; 

       //TODO: Figure out a way to launch a new view upon success return from above statement 
       //  Must pass the data returned from the above .post to the new controller action 
       //  Current process just stays on the existing screen. Neither of the following work: 

       $(this).load(targetURL); // pass target URl to load 
      } 
     }); 
    } 
} 

[Controller] 

    public ActionResult RequestToTransfer(string select) 
     { 
      var data = OrderRepository.GetAllRecords();`enter code here` 
      ViewData["data"] = data.Take(10).ToList(); 
      return Json(data, JsonRequestBehavior.AllowGet);  // returns data in success`enter code here`enter code here` 
     } 
+0

내 질문에 바보 같은 실수를 수정 주셔서 감사합니다. .load 문을 사용하여 직렬화 된 모델 데이터를 컨트롤러에 전달하는 방법은 무엇입니까? – CitiDeveloper