我在使用WebGrid时遇到语法问题.在我正常的剃刀标记中,我在我的foreach中格式化日期,就像这样
<td>
@String.Format("{0:MM/dd/yy hh:mm:ss}", item.complianceedatetime)
</td>
Run Code Online (Sandbox Code Playgroud)
我设置我的列宽如此
<th width="150px">
Download Date/Time
</th>
Run Code Online (Sandbox Code Playgroud)
我将如何使用Grid.Column语法执行此操作
grid.Column("complianceedatetime", "Download Date/Time", ?, ?)
Run Code Online (Sandbox Code Playgroud) 如何嵌套WebGrid,每列都有大量格式.我可以做一个嵌套的for循环,但我基本上需要它来进行分页.或者还有其他更好的选择吗?
我有一个相当宽的记录集(大约25-30 cols)... MVC3 WebGrid是否支持水平滚动条(或者我可以在html标签/控件中容纳网格)?
我正在使用WebGrid来显示项目列表,列表中的某些项目被禁用,所以我想让它在网格中变暗,为此我必须将行类设置为在项目被禁用时变暗,我不知道如何根据条件设置行类
这是我的示例代码
var grid = new WebGrid(Model, canPage: true, rowsPerPage: 20);
@grid.GetHtml(tableStyle: "grid",
rowStyle: "gridrow",
alternatingRowStyle: "gridrow_alternate",
mode: WebGridPagerModes.All,
numericLinksCount: 10,
columns: grid.Columns(
grid.Column("Name", "Name", item => (item.LocationData[0].Name), canSort: true, style: "width:60%"),
grid.Column("Url", "Url", canSort: true, style: "width:60%"),
grid.Column("Edit", "", @<a href='../VenHome/Edit/@item.ID' ><img src='/content/icons/edit.png'
alt='Edit' />
</a>, style: "width:150px"),
grid.Column("Delete", "", @<a href='#' id='Delete' itemId='@item.ID' title='@item.LocationData[0].Name'><img
src='/content/icons/delete.png' alt='Delete' />
</a>, style: "width:150px"),
grid.Column("Details", "", @<a href="../VenHome/Details/@item.Id" title="Details">
<img src="../../Content/Icons/Details.png" alt="Details" /></a>)
));
}
Run Code Online (Sandbox Code Playgroud) 我正在使用 WebGrid 在 MVC3 中创建分页/可排序列表。我创建了一个启用 AJAX 的删除按钮,它通过 AJAX 进行删除调用,之后我希望它从表中删除该行。
我想要实现这一点的方法是在表中具有一个idordata-id属性,<tr>以便我可以使用 jQuery 轻松操作它。但是,我不知道如何在使用 WebGrid 时向行添加属性。
我知道属性可以很容易地在网格级别设置,如下所示:
@grid.GetHtml(htmlAttributes: new { id = "gridMapping", style = "width:100%;" },
但是我不知道如何在行/列级别实现相同的目标。
我正在使用类似于此处提到的webgrid
@{
var grid = new WebGrid(canPage: true, rowsPerPage: ThisController.PageSize, canSort: true, ajaxUpdateContainerId: "grid");
grid.Bind(Model.Employees, rowCount: Model.TotalRecords, autoSortAndPage: false);
grid.Pager(WebGridPagerModes.All);
@grid.GetHtml(htmlAttributes: new { id="grid" },
columns: grid.Columns(
grid.Column(format: (item) => Html.ActionLink("Edit", "Edit", new { EmployeeID = item.EmployeeID })),
grid.Column("FullName"),
grid.Column("Title")
));
}
Run Code Online (Sandbox Code Playgroud)
但在我的情况下,我期待超过2000条记录,我想加载每页只加载50条记录,以便页面加载速度更快.如何确保在加载页面时仅加载前50条记录.当我的用户单击page2时,我想加载下一组50条记录,依此类推.你们中的任何人都遇到过类似的问题,请给我一些示例代码
在webgrid中向td添加类很容易,例如:
new WebGridColumn {
ColumnName= "Owl.Species",
Header= "Scientific Name",
Style= "sci-name"
}
Run Code Online (Sandbox Code Playgroud)
样式标记将"sci-name"类添加到td.如何在th不使用jQuery的情况下为该列添加类,这不是理想的解决方案.
我可以轻松地连接webgrid并使用默认设置向其添加ajax.但是我一直在努力弄清楚的一件事是当网格排序或通过ajax分页时如何添加加载指示器.
有一个内置的回调函数,可以很好地关闭ajax加载指示器,但我怎么能轻松打开一个?
下面是我目前为我的webgrid编写的代码.
@{
var grid = new WebGrid(rowsPerPage: Model.CountPerPage, ajaxUpdateContainerId: "GridArea");
grid.Bind(Model.Users,
autoSortAndPage: false,
rowCount: Model.TotalCount
);
grid.Pager(WebGridPagerModes.All);
}
<div id="GridArea">
@grid.GetHtml(htmlAttributes: new {id ="UserGrid"},
columns: new [] {
grid.Column("ID", canSort: false),
grid.Column("FirstName"),
grid.Column("LastName"),
grid.Column("Email"),
grid.Column("FullName", canSort: false)
}
)
</div>
Run Code Online (Sandbox Code Playgroud)
我尝试过使用以下内容,但这些都没有奏效.
<script>
$(function () {
$("#UserGrid").live("ajaxStart", function () {
alert("start");
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
这个第一次工作但在网格完成第一次ajax刷新后无法工作.
<script>
$(function () {
$('#UserGrid').ajaxStart(function () {
alert("start");
});
});
</script>
Run Code Online (Sandbox Code Playgroud) 如何在webgrid列中添加条件(if else)?
@grid.GetHtml(tableStyle: "table table-bordered",
columns: grid.Columns(
grid.Column("RealName", "Name"),
grid.Column("UserName", "Email")
))
Run Code Online (Sandbox Code Playgroud)
我必须根据条件显示电子邮件列,如何做到这一点?
我认为我有以下几点
@using (Ajax.BeginForm("Search", "Home", null,
new AjaxOptions
{
InsertionMode = InsertionMode.Replace,
HttpMethod = "POST",
UpdateTargetId = "gridContent",
}, new { @class = "search" }))
{
<input type="submit" value="Search" />
}
<div id="gridContent">
</div>
Run Code Online (Sandbox Code Playgroud)
这是返回/ Home/Search的内容
@model List<TestTable.Models.People>
@{
Layout = null;
}
@{
var grid = new WebGrid(Model, canPage: true, canSort: true, rowsPerPage: 5, ajaxUpdateContainerId: "tableDiv"); grid.Pager(WebGridPagerModes.NextPrevious);
}
<div id="tableDiv">
@grid.GetHtml(
columns: grid.Columns(
grid.Column("Name", " Name")
))
</div>
Run Code Online (Sandbox Code Playgroud)
这在MVC3中工作得很好,但MVC4会在每次新搜索时发送一个脚本,为每个分页和排序查询的每个提交按钮单击产生一个新的额外请求.以下是它的外观:
"http://localhost:59753/Home/Search".
"http://localhost:59753/Home/Search?sort=Name&sortdir=ASC&__swhg=1394297281115"
"http://localhost:59753/Home/Search".
"http://localhost:59753/Home/Search?sort=Name&sortdir=ASC&__swhg=1394297284491"
"http://localhost:59753/Home/Search?sort=Name&sortdir=ASC&__swhg=1394297284490"
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决?提前致谢!