11

下面的代码将在其中一个 Web 网格列中插入一个操作链接。

    @{
    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)' 的最佳重载方法匹配有一些无效参数。

我不太明白两者之间的区别..为什么一个有效而另一个错误?

最终目标是能够勾选多个复选框,然后发送以打印他们的信息。

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 回答
1

最简单的方法:

usersGrid.Column(format: (item) => Html.CheckBox("Id"))
于 2014-02-06T14:27:50.663 回答
0

发生此错误是因为 CheckBox 调用未返回 ActionLink 返回的相同数据类型。

这是你做的。在操作链接调用和复选框调用上使用相同的参数执行消息框调用,在函数调用 TypeName() 中敲击每个,并将结果显示在 msgbox 中供您查看。另外,在两者中也做一个 .ToString ,现在,看看结果,它应该告诉你返回的数据类型之间是否存在差异,如果可以的话,发布结果,我可以告诉你更多。让我知道。

于 2010-11-30T10:09:08.100 回答
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 回答
-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 回答
-3

**

@{
  var grid = new WebGrid(source: Model.ToList(), canPage: true, canSort: true);
  grid.Pager (WebGridPagerModes.All);
}

**

<div id="g1">
    @grid.GetHtml(

    columns:grid.Columns
    (grid.Column(columnName:"paymentno",header:"PAYMENT NO"),

    grid.Column(columnName:"mname",header:"NAME"),

    grid.Column(columnName:"pamt",header:"AMOUNT"),

    grid.Column(header: "Header", format: @<text><input name="HasFormgivaren" type="checkbox" 
        value="@item.checkresult" @(item.checkresult == "True" ? "Checked" : null) /></text>)
    )
    )
</div>
于 2017-03-05T08:06:48.013 回答