2012-02-20 2 views
2

내 응용 프로그램은 C# .Net으로 코딩 된 Razor View Engine이있는 Asp.Net MVC3에 있습니다. 내 Asp.Net MVC3보기에서 WebGrid를 채우고 싶습니다.Json 반환시 WebGrid를 채우는 방법 Asp.Net MVC3 결과

그러나 제 요구 사항은 일부 dropDowns를 선택했을 때 WebGrid를 표시하려고합니다. 다음은 내 JSON

[AcceptVerbs(HttpVerbs.Get)] 
     public JsonResult getPendingInvoices(Int64 candID, DateTime InDate) 
     { 
      Int64 timeId; 
      var getTimeSheetId= from k in db.TimeSheetInfoes 
          where k.PersonalInformationID == candID && k.TimeSheetDate == InDate && k.InvoicedFlag == false 
          select k.TimeSheetID; 

      timeId = getTimeSheetId.Single(); 

      var getInvoice = (from K in db.TimeSheetTasks 
           where K.TimeSheetID == timeId 
           select new TimeSheetsTaskClass { TaskInfoId =(Int64)K.TimeSheetID, Task = K.Task, TaskDateDay = (DateTime)K.TaskDate, ProjectNameDay = K.ProjectName, Day=K.Day, TaskHours = (decimal)K.TaskHours, ApprovingManager = K.ApprovingManager, OTHours = (decimal)K.OTHours }).ToList(); 

      return Json(getInvoice, JsonRequestBehavior.AllowGet); 
     } 

날짜와 이드 선택 나의 값으로부터 전달되는 후보입니다. 다음은 내 Jquery입니다.

$("#MyDropdown").live("change", function() { 

      $.getJSON("/../Invoice/getPendingInvoices", { candID: $("#ddlCandidateDispName").attr("value"), InDate: $("#dtpInvoiceDate").val() }, function (data) { 
       $.each(data, function (i, TimeSheetsTaskClass) { 

       }); 
       grid = new WebGrid(Model); 
      }); 
     } 
    }); 

이것은 내가 시도한 것입니다. TimeSheetsTaskClass의 데이터로 WebGrid를 채 웁니다. 다음은

다음
public class TimeSheetsTaskClass 
     { 
      public Int64 TaskInfoId { get; set; } 
      public string Task { get; set; } 
      public DateTime TaskDateDay { get; set; } 
      public string ProjectNameDay { get; set; } 
      public string Day { get; set; } 
      public Decimal TaskHours { get; set; } 
      public decimal OTHours { get; set; } 
      public string ApprovingManager { get; set; } 
     } 

메신저는 WebGrid 변수를 선언하는 방법을 내 클래스 아래

@model IEnumerable<RecruitmentPortal.Controllers.InvoiceController.TimeSheetsTaskClass> 

를 사용하여 메신저가 얼마나 내 컨트롤러 내 TimeSheetsTaskClass입니다.

var grid = new WebGrid(Model); 

다음은 어떻게 내 cshtml에서 내 webGrid를 보여 주는지입니다.

<div id="grids"> 
@grid.GetHtml() 
</div> 

어떻게하면 WebGrid에 데이터를 표시 할 수 있습니까?

답변

3

WebGrid에서는이 작업을 수행 할 수 없습니다. 그것은 모델을 기대합니다. 다음

return PartialView("_Grid", getInvoice); 

그리고 :

:

$(document).delegate('#MyDropdown', 'change', function() { 
    var url = '@Url.Action("getPendingInvoices", "Invoice")'; 
    var data = { 
     candID: $('#ddlCandidateDispName').val(), 
     inDate: $('#dtpInvoiceDate').val() 
    }; 
    $('#gridContainer').load(url, data); 
}); 

하는 gridContainer 그리드를 포함하는 사업부가 될 수 그래서 대신 컨트롤러 액션에서 JSON을 반환하는 당신은 그리드 코드를 포함하는 부분 뷰를 반환 할 수

<div id="gridContainer"> 
    @Html.Partial("_Grid") 
</div> 

.live().delegate()으로 바꿨을 수도 있습니다. jQuery 1.7 이상을 사용하는 경우 .on()을 사용해야합니다.