11

以下のコードは、アクションリンクを Web グリッドの列の 1 つに挿入します。

    @{
    View.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";

    var usersGrid = new WebGrid(source: Model,
        rowsPerPage: 40);
}
@usersGrid.GetHtml(
        tableStyle: "grid",
        headerStyle: "head",
        alternatingRowStyle: "alt",
                columns: usersGrid.Columns(
                    usersGrid.Column(format: (item) => 
                         Html.ActionLink("Edit", "Edit", new { id = item.Id})),
                    usersGrid.Column("Surname")
        )
    )

しかし、その行をこれと交換すると:

                usersGrid.Column(format: (item) => Html.CheckBox(item.Id)),

次のエラーが表示されます。

エラー 4 'System.Web.Helpers.WebGrid.Column(string, string, System.Func, string, bool)' に一致する最適なオーバーロード メソッドには、無効な引数が含まれています。

2つの違いがよくわかりません..なぜ一方が機能し、もう一方がエラーになるのですか?

最終的な目標は、多数のチェック ボックスにチェックを入れて、それらの情報を送信して印刷できるようにすることです。

4

9 に答える 9

24

これが最終的に私のために働いたものです。

usersGrid.Column(header: "Print?", format: @<text><input name="Prints" 
      type="checkbox" value="@item.ID" /></text>),

ニック・ハリスに感謝しなければなりません。答えは彼のブログのコメントにあります: http://www.nickharris.net/2010/10/a-first-look-at-the-asp-net-mvc-3-ウェブグリッド/

于 2010-12-01T11:45:30.013 に答える
5

これは私のために働いています:

grid.Column("SiparisNo", "Seç", format: (item) => Html.CheckBox(String.Format("Secili_{0}", (int)item.SiparisNo), false, new { @style = "width:60px;" }))
于 2011-10-11T13:48:16.780 に答える
4

ダイナミクス (アイテム) で拡張メソッド (Html.*) を使用することに注意する必要があります... csharp ではうまく機能しません。新しい {} プロジェクションを実行するか、ToString を呼び出すと、動的ではなくなります。または、(object)item.Id をキャストすることもできます。

于 2010-11-30T23:22:37.257 に答える
2

usersGrid.Column(format: (item) => Html.CheckBox((string)item.Id)),

これはうまくいくはずです

于 2011-09-30T09:56:23.233 に答える
0

精力的な検索の結果、最適な解決策が見つかりました。HTML ヘルパーの使用が難しい場合は、代わりにこのロジックを使用できます。

grid.Column(header: "", format: @<text><input name="chkBox" type="checkbox" value="@item.Id" @(item.Id == false ? null : "checked") /></text>)
于 2017-09-11T13:06:19.090 に答える
0

このエラーは、CheckBox 呼び出しが ActionLink が返すデータ型と同じデータ型を返さないために発生しています。

これはあなたがすることです。アクションリンク呼び出しとチェックボックス呼び出しでメッセージボックス呼び出しを同じ引数で実行し、関数呼び出し TypeName() 内でそれぞれラップし、結果をメッセージボックスに表示して確認します。また、両方で .ToString を実行してください。結果を見てください。返されたデータ型の間に不一致があるかどうかがわかります。可能であれば、結果を投稿してください。詳細をお伝えできます。お知らせ下さい。

于 2010-11-30T10:09:08.100 に答える
-3

これを試して

new HtmlString(usersGrid.Column(format: (item) => Html.CheckBox(item.Id)).ToString()),

それ以外の

usersGrid.Column(format: (item) => Html.CheckBox(item.Id)),
于 2010-11-29T19:18:14.973 に答える