1

Webグリッドのネストに問題があります。

1つのWebグリッドを別のWebグリッド内に配置するだけでよいのであれば問題ありませんが、既にネストされているWebグリッドにWebグリッドをネストしようとすると、失敗します。

これは私が持っているコードです:

@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ではエラーは発生しませんが、アプリケーションを実行しようとすると、エラーとして返されます。

「コンパイラエラーメッセージ:CS1502:「System.Web.Helpers.WebGrid.Column(string、string、System.Func、string、bool)」に最もよく一致するオーバーロードされたメソッドにいくつかの無効な引数があります」

このスポットへのポインタ付き:

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

再帰的にネストされたWebグリッドを使用することはできませんか、それとも何か間違ったことをしていますか?

4

1 に答える 1

0

item変数を2回繰り返すのは問題です。名前を変更してみてください:

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
    );
})
于 2012-08-14T16:08:15.410 に答える