我正在开发一个MVC 3 webgrid,在我希望有一个按钮的一个列中,我已经在视图中放入以下代码时实现了这一点.
@grid.GetHtml(columns:
grid.Columns(
grid.Column("ID", "id", canSort: true),
grid.Column("Surname", "surname", canSort: true),
grid.Column("Forenames", "forename", canSort: true),
grid.Column(format: @<input type="button" value="View"/>)),
headerStyle: "header",
alternatingRowStyle: "alt",
htmlAttributes: new { id = "DataTable" }
)
Run Code Online (Sandbox Code Playgroud)
但是我希望创建网格服务器端以进行分页,但是当我将下面的代码放在操作中时,我得到了按钮列的错误.
var htmlString = grid.GetHtml(tableStyle: "webGrid",
headerStyle: "header",
alternatingRowStyle: "alt",
htmlAttributes: new { id = "DataTable" },
columns: grid.Columns(
grid.Column("ID", "id", canSort: true),
grid.Column("Surname", "surname", canSort: true),
grid.Column("Forenames", "forename", canSort: true),
grid.Column(format: @<input type='button' value='View'/>)
));
Run Code Online (Sandbox Code Playgroud)
第一个错误是"在逐字说明符后预期的关键字,标识符或字符串:@".
我在按钮列上使用了不正确的格式吗?
我在使用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的部分视图.我的控制器看起来像
public ActionResult Index()
{
return View();
}
public ActionResult GetUserList(int? page, string sort, string sortdir)
{
var model = UserModel.getList(page,sort,sortdir);
return PartialView("_UserList",model);
}
Run Code Online (Sandbox Code Playgroud)
Index.cshtml:
问题是我每次点击网格导航或排序链接时都会调用方法.如何让Webgrid执行不同的操作(在本例中)?我确信我可以使用jquery在网格中添加所有链接,但我相信它应该是更好的方法.
我正在做的事情也可能是完全错误的,所以感谢您的建议.
....
@Html.Action("GetUserList")IndexGetUserListGetUserList
我正在使用MVC3并在webgrid中显示我的数据.我想显示我过滤/搜索时显示的加载指示符(加载图像).什么是最好的方法?
我的搜索过滤器(代码):
@using (Html.BeginForm())
{
<fieldset id="fieldset1" class="coolfieldset">
<legend>Search for Towers Watson Subscribers/Contacts</legend>
<div class="div-table">
<div class="div-table-row">
<div class="div-table-col">Reg Date:</div>
<div class="div-table-col"><input id="regDateFrom" class="datepicker" name="regDateFrom" value="@regDateFrom" type="text" /> to <input id="regDateEnd" class="datepicker" value="@regDateEnd" name="regDateEnd" type="text" /></div>
</div>
<div class="div-table-row">
<div class="div-table-col">Profile Mod Date:</div>
<div class="div-table-col"><input type="text" id="profileModDateFrom" class="datepicker" value="@profileModDateFrom" name="profileModDateFrom" /> to <input id="profileModDateEnd" class="datepicker" value="@profileModDateEnd" name="profileModDateEnd" type="text" /></div>
</div>
<div class="div-table-row">
<div class="div-table-col">Last Name:</div>
<div class="div-table-col"><input type="text" id="lastName" name="lastName" value="@lastName" /></div>
</div>
<div class="div-table-row">
<div class="div-table-col"><input id="search" name="search" type="submit" …Run Code Online (Sandbox Code Playgroud) 我可以轻松地连接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) 我正在使用MVC 3引入WebGrid,但在传递formatparam 的委托时不能应用我自己的扩展方法.
使用:
Grid.Column("MyProperty", "MyProperty",
format: @<span class="something">@item.MyProperty.MyExtensionMethodForString()</span>)
Run Code Online (Sandbox Code Playgroud)
我有
ERROR: 'string' does not contain a definition for 'MyExtensionMethodForString'
Run Code Online (Sandbox Code Playgroud)
我试过铸造,但没有用
Grid.Column("MyProperty", "MyProperty",
format: @<span class="something">@((string)(item.MyProperty).MyExtensionMethodForString())</span>)
Run Code Online (Sandbox Code Playgroud)
如果我使用标准方法,它的工作原理:
Grid.Column("MyProperty", "MyProperty",
format: @<span class="something">@(Utils.MyExtensionMethodForString(item.MyProperty))</span>)
Run Code Online (Sandbox Code Playgroud)
我也尝试将扩展名放在同一名称空间中,没有结果.
我如何使用我心爱的扩展?
编辑:命名空间本身不是问题,扩展可用于所有视图和类的命名空间,我可以在同一视图中使用它而没有问题.问题是在委托中使用它.
是MVC WebGrid开源吗?如果是这样,我在哪里可以找到源代码.
WebGrid的当前版本几乎没有文档,不完整的实现等.
我试图做一个简单的事情,如在视图中向WebGrid.Column()添加一个visibility属性,但这是不可能的
基本上,我正在使用WebGrid,我需要过滤结果.我在这里遇到的第一个问题是我第一次使用WebGrid而且我希望你们中的一些人能够帮助我...到目前为止,我已经设法对网格结果进行排序并使用Ajax过滤它们,但是,当重新排序过滤后的结果,子集丢失了,我回到完整的结果集.我知道为什么会发生这种情况,但我不知道如何让它发挥作用.
例:
在我看来:
@model IQueryable<Cities>
@section MoreScripts
{
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
}
@using (Ajax.BeginForm(new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "GridData"}))
{
<fieldset>
<legend>Search Filters</legend>
<br />
<div>
Name
</div>
<div>
@Html.TextBox("Name")
</div>
<p>
<input type="submit" value="Search" />
</p>
</fieldset>
}
<div id="GridData">
@Html.Partial("Grid", Model)
</div>
Run Code Online (Sandbox Code Playgroud)
我的部分观点:
@model IQueryable<Cities>
@{
var grid = new WebGrid<Cities>(null,rowsPerPage: 5, defaultSort: "Nombre", ajaxUpdateContainerId: "GridData");
grid.Bind(Model, autoSortAndPage: true, rowCount: Model.Count());
@grid.GetHtml(columns:
grid.Columns(
grid.Column("Name", "Name", canSort: true),
grid.Column("CreationDate", "Creation Date", canSort: true),
grid.Column("Active", "Active", canSort: …Run Code Online (Sandbox Code Playgroud) 有没有办法覆盖默认的MVC3 WebGrid排序行为来调用我的控制器(它将执行服务器端排序并返回数据)调用排序?
谢谢你的帮助!
我有这些DTO
public class Header
{
public int HeaderId{get;set;}
public int Description{get;set;}
public List<HeaderItem> HeaderItems{get;set;}
}
public class HeaderItem
{
public int HeaderItemId{get;set;}
public string DetailDescription{ get; set; }
public bool Selected{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我有这个控制器
[HttpPost]
public ActionResult PostMethod(Header dto)
{
...
}
Run Code Online (Sandbox Code Playgroud)
和这个HTML
@using (Html.BeginForm("PostMethod", "Controller", FormMethod.Post, new { id = "form" }))
{
@Html.TextBoxFor(x => x.Description)
var grid = new WebGrid(Model.HeaderItems);
}
@grid.GetHtml(tableStyle: "grid",
htmlAttributes: new { id = "grid" },
columns: grid.Columns(
grid.Column("Selected", "Seç", format: (item) …Run Code Online (Sandbox Code Playgroud)