0

Webgridについて簡単な質問があります。

  1. 現在の番号を列に入れるにはどうすればよいですか?(私はEFを使用しています)

  2. 整数の代わりに文字列を表示するにはどうすればよいですか?(私がintフィールドの高さを持っていて、それが1.50〜1.60の場合、ウェブグリッドで見たいとしましょう。小さい、1.60-1.70-通常、 1.7-1.8-大きい、> 2-大きい

Crt。いいえ。| 古い高さ| 新しい高さ

1 | 1.55 | 小さい

2 | 1.78 | 正常

3 | 2.40 | 巨大

@grid.GetHtml(tableStyle: "table",
          alternatingRowStyle: "alternate",
          headerStyle: "header",
          columns: grid.Columns(
          grid.Column(columnName: "?",header: "Crt. No.", canSort: true),
          grid.Column(columnName: "height", header: "height old", canSort: true),
          grid.Column(columnName: "height?", header: "height new", canSort: true)))
4

1 に答える 1

2

1)。現在の番号を列に入れるにはどうすればよいですか?(私はEFを使用しています)

ビューモデルを使用して、WebGridをにModelバインドする代わりに、にバインドするModel.Select((item, index) => new { Index = index, Element = item })か、匿名オブジェクトを使用する代わりに、これら2つのプロパティを持つ実際のビューモデルを使用することをお勧めします。

2)。整数の代わりに文字列を表示するにはどうすればよいですか?(私がintフィールドの高さを持っていて、それが1.50〜1.60の場合、ウェブグリッドで見たいとしましょう。小さい、1.60-1.70-通常、1.7-1.8-大きい、> 2-大きい)

列にカスタムformatを使用できます。

次に例を示します。

@model IEnumerable<SomeModel>

@{
    var grid = new WebGrid(Model.Select((item, index) => new { Index = index, Element = item }));
}

@grid.GetHtml(
    tableStyle: "table",
    alternatingRowStyle: "alternate",
    headerStyle: "header",
    columns: grid.Columns(
        grid.Column(columnName: "Index", header: "Crt. No.", canSort: true),
        grid.Column(
            header: "height old", 
            canSort: true, 
            format: 
                @<text>
                    @item.Element.height
                </text>
        ),
        grid.Column(
            header: "height new", 
            canSort: true, 
            format: 
                @<text>
                    @Html.FormatHeight((double)item.Element.height)
                </text>
        )
    )
)

ご覧のHtml.FormatHeightとおり、次のようなカスタム拡張メソッドを使用しました。

public static class HtmlExtensions
{
    public static IHtmlString FormatHeight(this HtmlHelper htmlHelper, double height)
    {
        if (height < 1.5)
        {
            return new HtmlString("tiny");
        }
        if (height > 1.5 && height < 1.6)
        {
            return new HtmlString("small");
        }
        else if (height > 1.6 && height < 1.7)
        {
            return new HtmlString("normal");
        }
        else if (height > 1.7 && height < 1.8)
        {
            return new HtmlString("big");
        }

        return new HtmlString("huge");
    }
}
于 2012-05-15T11:50:15.130 に答える