以下代码会将动作链接插入其中一个网格网格列。
@{
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,System.Func, string,bool)'有一些无效 参数。
我不太明白两者之间的区别..为什么一个工作而另一个错误?
最终目标是能够勾选多个复选框,然后发送以打印他们的信息。
答案 0 :(得分:23)
这最终对我有用。
usersGrid.Column(header: "Print?", format: @<text><input name="Prints"
type="checkbox" value="@item.ID" /></text>),
感谢Nick Harris,他在博客的评论中找到了答案: http://www.nickharris.net/2010/10/a-first-look-at-the-asp-net-mvc-3-webgrid/
答案 1 :(得分:5)
这对我有用:
grid.Column("SiparisNo", "Seç", format: (item) => Html.CheckBox(String.Format("Secili_{0}", (int)item.SiparisNo), false, new { @style = "width:60px;" }))
答案 2 :(得分:4)
你必须小心使用扩展方法(Html。*)和动态(项目)...它在csharp中不能很好地工作。当您执行新的{}投影或调用ToString时,它不再是动态的。或者,你可以施放:(object)item.Id。
答案 3 :(得分:2)
usersGrid.Column(format: (item) => Html.CheckBox((string)item.Id)),
这应该有效
答案 4 :(得分:1)
最简单的方法:
usersGrid.Column(format: (item) => Html.CheckBox("Id"))
答案 5 :(得分:0)
发生此错误是因为CheckBox调用未返回ActionLink返回的相同数据类型。
这就是你要做的。在动作链接调用上执行消息框调用,并使用相同的参数调用复选框,在函数调用TypeName()内执行每个操作,并在msgbox中显示结果供您查看。另外,在两者中也做一个.ToString,现在,看看结果,它应该告诉你返回的数据类型之间是否存在差异,如果可以的话,发布结果,我可以告诉你更多。让我知道。
答案 6 :(得分:0)
经过大力搜索后我发现了一个最佳解决方案,如果您发现难以使用HTML帮助程序,则可以使用此逻辑。
grid.Column(header: "", format: @<text><input name="chkBox" type="checkbox" value="@item.Id" @(item.Id == false ? null : "checked") /></text>)
答案 7 :(得分:-3)
试试这个
new HtmlString(usersGrid.Column(format: (item) => Html.CheckBox(item.Id)).ToString()),
而不是
usersGrid.Column(format: (item) => Html.CheckBox(item.Id)),
答案 8 :(得分:-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>