2012-08-14 128 views
1

我遇到了一些麻烦筑巢webgrids。MVC3递归嵌套的WebGrid

只要我只有里面有另一个1座的WebGrid,这很好,但一旦我尝试嵌套的WebGrid在已嵌套的WebGrid,它失败。

这是我的代码:

@grid.GetHtml(columns: 
grid.Columns(
    grid.Column("Name"), 
    grid.Column("Variants", format: (item) => 
    { 
     WebGrid varGrid = varGrid = new WebGrid(item.Variant); 
     return varGrid.GetHtml(
       columns: varGrid.Columns(
        varGrid.Column("Name") 

       ), 
       displayHeader : false 
     ); 
    }), 
    grid.Column("Resource", format: (item) => 
    { 
     WebGrid resGrid = new WebGrid(item.Resource); 
     return resGrid.GetHtml(
      columns: resGrid.Columns(
       resGrid.Column("Name"), 
       resGrid.Column("Parameters", format: (item) => 
       { 
        WebGrid resParamGrid = new WebGrid(item.Resource.Parameter); 
        return resParamGrid.GetHtml(
        columns: resParamGrid.Columns(
          resParamGrid.Column("Name") 
          ), 
          displayHeader: false 
         ); 
       }) 
      ), 
      displayHeader: false 
     ); 
    }), 
    grid.Column("Parameter", format: (item) => 
    { 
     WebGrid parGrid = new WebGrid(item.Parameter); 
     return parGrid.GetHtml(
      columns: parGrid.Columns(
        parGrid.Column("Name") 
      ), 
      displayHeader: false 
     ); 
    }) 
) 
) 

所以网格具有另一电网,Resources。每个Resources网格都有一个包含参数的网格。

在VS没有错误,但是当我尝试运行应用程序时,返回的错误:用指针

"Compiler Error Message: CS1502: The best overloaded method match for 'System.Web.Helpers.WebGrid.Column(string, string, System.Func, string, bool)' has some invalid arguments"

这个地方:

grid.Column("Resource", format: (item) =>

是它不可能有递归嵌套webgrids,或者我做错了什么?

回答

0

这是你重复item变量两次问题。尝试重命名它:

grid.Column("Resource", format: (item) => 
{ 
    WebGrid resGrid = new WebGrid(item.Resource); 
    return resGrid.GetHtml(
     columns: resGrid.Columns(
      resGrid.Column("Name"), 
      resGrid.Column("Parameters", format: (resource) => 
      { 
       WebGrid resParamGrid = new WebGrid(resource.Parameter); 
       return resParamGrid.GetHtml(
        columns: resParamGrid.Columns(
         resParamGrid.Column("Name") 
        ), 
        displayHeader: false 
       ); 
      }) 
     ), 
     displayHeader: false 
    ); 
}) 
+0

非常感谢。不能相信我自己没有明白 – 2012-08-14 16:22:42