2016-11-22 97 views
1

我在ASP.NET MVC4中使用了展開/摺疊的嵌套WebGrid,但它給了我一個錯誤未找到方法:'System.Collections.Generic。 IDictionary`2 System.Web.WebPages.Html.HtmlHelper.ObjectToDictionary(System.Object)'。,我真的不知道如何解決這個錯誤。請幫忙。@ grid.GetHtml方法在asp.net MVC視圖中找不到

我的視圖模型

public class PackagesVM 
{ 
    public Packages package { get; set; } 
    public List<Lot> packLots { get; set; } 
} 

我的控制器

public ActionResult GetPackagesLot() 
    { 
     List<PackagesVM> packagesLots = new List<PackagesVM>(); 

     // here MyDatabaseEntities is our data context 
     using (Entities db = new Entities()) 
     { 
      var pack = db.Packages1.OrderByDescending(a => a.id); 
      foreach (var i in pack) 
      { 
       var lot = db.Lots.Where(a => a.pack_id==i.id).ToList(); 
       packagesLots.Add(new PackagesVM { package = i, packLots = lot }); 
      } 
     } 
     return View(packagesLots); 
    } 

我查看

<div id="main" style="padding:25px; background-color:white;"> 
@grid.GetHtml(
htmlAttributes: new {id="gridT", width="700px" }, 
columns:grid.Columns(
     grid.Column("package.Id","Pack ID"), 
     grid.Column("package.Name","Package Name"), 
     grid.Column("package.Province_id","Province"), 
     grid.Column(header:"Create at",format:(item)=> string.Format("{0:dd-MM-yyyy}",item.package.created_at)), 

     grid.Column(format:(item)=>{ 
      WebGrid subGrid = new WebGrid(source: item.packLots); 
      return subGrid.GetHtml(
       htmlAttributes: new { id="subT" }, 
       columns:subGrid.Columns(
         subGrid.Column("id","Id"), 
         subGrid.Column("lot_number", "Lot Number"), 
         subGrid.Column("pack_id", "Package ID"), 
         subGrid.Column("contracted_amount", "Amount") 
        )      
       ); 
     }) 
    ) 
) 

我的腳本

@section Scripts{ 
<script> 
    $(document).ready(function() { 
     var size = $("#main #gridT > thead > tr >th").size(); // get total column 
     $("#main #gridT > thead > tr >th").last().remove(); // remove last column 
     $("#main #gridT > thead > tr").prepend("<th></th>"); // add one column at first for collapsible column 
     $("#main #gridT > tbody > tr").each(function (i, el) { 
      $(this).prepend(
        $("<td></td>") 
        .addClass("expand") 
        .addClass("hoverEff") 
        .attr('title',"click for show/hide") 
       ); 

      //Now get sub table from last column and add this to the next new added row 
      var table = $("table", this).parent().html(); 
      //add new row with this subtable 
      $(this).after("<tr><td></td><td style='padding:5px; margin:0px;' colspan='" + (size - 1) + "'>" + table + "</td></tr>"); 
      $("table", this).parent().remove(); 
      // ADD CLICK EVENT FOR MAKE COLLAPSIBLE 
      $(".hoverEff", this).live("click", function() { 
       $(this).parent().closest("tr").next().slideToggle(100); 
       $(this).toggleClass("expand collapse"); 
      }); 
     }); 

     //by default make all subgrid in collapse mode 
     $("#main #gridT > tbody > tr td.expand").each(function (i, el) { 
      $(this).toggleClass("expand collapse"); 
      $(this).parent().closest("tr").next().slideToggle(100); 
     }); 

    }); 
</script> 

錯誤 } enter image description here

+0

請去這個示例:http://www.dotnetfunda.com/articles/show/3139/webgrid-in -aspnet-mvc –

回答

0

您需要定義喜歡你的視圖文件之後在BeginForm塊代碼行的網格。

var grid = new WebGrid(Model.PackagesVM, canSort: false); 
0

也請加入這個NuGet包AD.System.Web.Helpers.dll

+1

你應該真的添加一些解釋,爲什麼這應該工作 - 你也可以添加帶有註釋的示例代碼 - 它的當前形式,它沒有提供任何解釋,可以幫助其他社區瞭解你解決/回答問題。 – ishmaelMakitla

相關問題