2012-02-20 55 views
2

我的應用程序位於Asp.Net MVC3中,使用C#.Net編碼的Razor View Engine。我想在我的Asp.Net MVC3視圖中填充WebGrid。如何在Asp.Net中返回Json結果時填寫WebGrid 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。 下面是我在我的控制器TimeSheetsTaskClass

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

下面是一個使用我的課

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

下面IM如何IM如何聲明的WebGrid變量。

var grid = new WebGrid(Model); 

下面是如何在我的cshtml中顯示我的webGrid。

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

請指導我如何顯示我的WebGrid中的數據。

回答

3

你不能用WebGrid做到這一點。它期望一個模型。因此,而不是從你的控制器動作返回JSON,你可以返回一個包含網格代碼的局部視圖:

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可能含有格一個div:

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

您可能還注意到,我用.delegate()代替了.live()。如果你使用jQuery 1.7+,你應該使用.on()