标签: webgrid

MVC3 WebGrid格式化或样式列标题

我正在使用新的MVC3 WebGrid.到目前为止一直很好,只是有问题样式/格式化列标题.我得到的最好的解决方法是将同一个css类从WebGrid的第一行应用到表头.

var headerCells = $("#grid tr:eq(0) th");
var firstRowCells = $("#grid tr:eq(1) td");

$.each(firstRowCells, function (index, value) {
    $(headerCells[index]).addClass($(firstRowCells[index]).attr("class"));
});
Run Code Online (Sandbox Code Playgroud)

此示例显然缺少检查以确保存在行或确实指定的元素id,但它将第一行中的css类应用于标题行,这意味着您可以相互独立地设置样式.

td.my-column-style { width:100px }
th.my-column-style { text-align:right;}
Run Code Online (Sandbox Code Playgroud)

是否有内置的样式列标题元素的方式(不只是使用headerStyle属性)?

coding-style header webgrid asp.net-mvc-3

12
推荐指数
1
解决办法
2万
查看次数

ASP.NET MVC3 WebGrid格式:参数

我试图在ASP.NET MVC3中使用新的WebGrid,并且我想要显示一组链接图标,执行各种操作(编辑,查看,删除)...为此,我有一个HtmlHelper扩展,基本上输出HTML:

<a href="" title=""><img alt="" src="" /></a>
Run Code Online (Sandbox Code Playgroud)

扩展返回MvcHtmlString,它在Razor视图中单独使用时工作正常.Eg:@ Html.ActionLinkIconForEditAction("Customer",2)

问题是我需要在传递对象的ID时在WebGrid列中调用此帮助程序(每个操作一次).我难以理解的问题是编译器给我一个错误,说它不能将MvcHtmlString(或'lambda expression'取决于我尝试的调用)转换为格式预期的System.Func ...

例如,这有效:

grid.Column(header: "", format: @<text>@Html.ActionLinkIconForEditAction("Customer", 2)</text>)
Run Code Online (Sandbox Code Playgroud)

但这不是:

grid.Column(header: "", format: (customer) => @<text>@Html.ActionLinkIconForEditAction("Customer", customer.Id)</text>)
grid.Column(header: "", format: (customer) => Html.ActionLinkIconForEditAction("Customer", customer.Id))
Run Code Online (Sandbox Code Playgroud)

我明白了:

Error 4 Argument 3: cannot convert from 'lambda expression' to 'System.Func<dynamic,object>'
Run Code Online (Sandbox Code Playgroud)

或者这个电话:

grid.Column(header: "", format: Html.ActionLinkIconForEditAction("Customer", customer.Id)),
Run Code Online (Sandbox Code Playgroud)

我明白了:

Error 5 Argument 3: cannot convert from 'System.Web.Mvc.MvcHtmlString' to 'System.Func<dynamic,object>'
Run Code Online (Sandbox Code Playgroud)

有什么奇怪我有其他列使用lambdas,直接Model.Property访问器,甚至从String.Format("")输出...它们都工作正常...我读了Func上的所有文档和这个线程也是如此,还是不能弄清楚:)

谁能发现我做错了什么?

c# lambda webgrid asp.net-mvc-3

12
推荐指数
1
解决办法
2万
查看次数

MVC3中的WebGrid列格式问题

我一直试图改变WebGrid中单个列的格式而没有太大的成功.所说的专栏是这样的:

grid.Column(
    columnName: "EmailAddress", 
    header: "Email Address", 
    format:(item) => Html.EmailLink(item.EmailAddress, item.EmailAddress, ""), 
    canSort: false
),
Run Code Online (Sandbox Code Playgroud)

错误是:

'System.Web.Helpers.WebGrid.Column(string,string,System.Func,string,bool)'的最佳重载方法匹配有一些无效的参数

我很困惑,因为方法签名匹配.此外,如果我将列更改为下面,那么它的工作没有任何错误:

grid.Column(
    columnName: "EmailAddress", 
    header: "Email Address", 
    format:(item) => new HtmlString(String.Format("<a href=\"mailto:{0}\" class=\"{2}\">{1}</a>", item.EmailAddress, item.EmailAddress, "")), 
    canSort: false
),
Run Code Online (Sandbox Code Playgroud)

供参考,EmailLink是一种非常基本的HtmlHelper扩展方法:

public static IHtmlString EmailLink(this HtmlHelper helper, string emailAddress, string linkText, string linkClass) {
    return new HtmlString(String.Format("<a href=\"mailto:{0}\" class=\"{2}\">{1}</a>", emailAddress, linkText, linkClass));
}
Run Code Online (Sandbox Code Playgroud)

谁能告诉我这里的问题是什么,以及我如何解决它?

c# asp.net-mvc webgrid razor asp.net-mvc-3

12
推荐指数
1
解决办法
2万
查看次数

如何使用复选框列制作MVC 3 Webgrid?

下面的代码将动作链接插入其中一个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")
        )
    )
Run Code Online (Sandbox Code Playgroud)

但如果我为此交换该行:

                usersGrid.Column(format: (item) => Html.CheckBox(item.Id)),
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

错误4'System.Web.Helpers.WebGrid.Column(string,string,System.Func,string,bool)'的最佳重载方法匹配具有一些无效参数.

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

最终目标是能够勾选多个复选框,然后发送打印信息.

webgrid asp.net-mvc-3

11
推荐指数
2
解决办法
5万
查看次数

Asp.net Mvc3 webgrid和分页

我正在努力学习Asp.net mvc.我知道它与形式不同,我需要改变我的思维方式.我的问题是关于webgrid.当我将webgrid添加到我的页面并点击搜索按钮时,使用Postr呈现带有寻呼机的表格,依此类推.但寻呼机上的链接不是张贴形式,它们只是链接,我丢失了所有表格的数据.

Controller有两种索引方法,一种是get,另一种是post.为了让我什么都不做,我只是在这种情况下创建新的viewmodel Search类并将其设置为view.对于我的post方法,我抓住我的视图模型进行搜索并设置填充的viewmodel进行查看.

问题:webgrid将寻呼机呈现为链接,因此它将进入索引获取,但因为它不是一个帖子请求我没有填写任何表单字段,我的搜索将不提供相同的结果集.

也许示例代码可以更好地解释它.

视图:

<form action="" method="post">

Esas no : @Html.TextBoxFor(x=>x.Name)
Yil : @Html.TextBoxFor(x=>x.Year)

<input type="submit" value="Search" />

<hr />
@ViewBag.Message
<hr />

@{ var grid = new WebGrid(Model.Results,rowsPerPage:5);}

@grid.GetHtml(tableStyle:"table",htmlAttributes:new {id="tbl"} )

</form>
Run Code Online (Sandbox Code Playgroud)

这是我的控制器:搜索在Index Post方法中发生,它只有我的viewmodel类.

    private ISearchContext _sc;

    public  MyController(ISearchContext sc)
    {
        _dc = dc;
    }

    //
    // GET: /Dava/

    public ActionResult Index()
    {
        var search = new Search();
        ViewBag.Message = "";
        return View(search);
    }

    [HttpPost]
    public ActionResult Index(Search search)
    {

        Search sres = _dc.SearchFromRepository(search);
        ViewBag.Message = …
Run Code Online (Sandbox Code Playgroud)

webgrid asp.net-mvc-3

10
推荐指数
2
解决办法
3万
查看次数

有条件地在webgrid中显示图像 - mvc 3

在我的webgrid中,我需要根据值显示图像.代码如下

@model TraktorumMVC.Models.ManagePhotos
@{
    ViewBag.Title = "ManagePhotos";
    Layout = "~/Views/Shared/_Layout.cshtml";
    var grid = new WebGrid(Model.AdPhotos);
}


    @grid.GetHtml(
       displayHeader: false,
       columns: grid.Columns(
             grid.Column(format: (item) =>
                 {
                     if (item.IsMainPreview == true)
                     {
                         return @<text><img src="@Url.Content("~/Content/images/preview-photo.gif")" alt="Image "/></text>;
                     }
                     else
                     {
                         return @<text><img src="@Url.Content("~/Content/images/non-preview-photo.gif")" alt="Image "/></text>;
                     }
                 }
                ),               
             grid.Column(format: (item) => Html.ActionLink("Remove Photo", "RemovePhoto", "Images", new { photoID = @item.Id }, new { @class = "RemovePhoto" }))
         ));
Run Code Online (Sandbox Code Playgroud)

我不确定如何if在webgrid中使用.我只是尝试过.它不工作.忘记跟随错误

The best overloaded method match for 'System.Web.Helpers.WebGrid.Column(string, string, System.Func<dynamic,object>, string, bool)' …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc grid webgrid razor asp.net-mvc-3

10
推荐指数
1
解决办法
2万
查看次数

如何在cshtml视图中使用WebGrid?

我可以在任何控制器中使用WebGrid,例如:

var grid = new WebGrid(emailsFetched, columnNames);

我必须在我的ASP.NET MVC项目中添加一个引用System.Web.Helpers.

但是当我尝试直接在视图中使用这个网格时(为了避免控制器中的实例化和其他设置),它说:The type or namespace 'WebGrid' cannot be found.好的,我也尝试在这里添加一个引用:

@using System.Web.Helpers 但这引发了另一个问题:

There is no build provider registered for the extension '.cshtml'. You can register one in the <compilation><buildProviders> section in the machine.config or web.config. Make sure is has a BuildProviderAppliesToAttribute attribute which includes the value 'Web' or 'All'.

这很奇怪......我在网上看到了足够的例子,它们正在使用WebGrid并且不必在cshtml视图中声明任何内容......

你能告诉我怎么解决这个问题吗?或者为什么我遇到这个非常丑陋的问题?

asp.net-mvc webgrid razor

10
推荐指数
2
解决办法
3万
查看次数

仅在服务器上使用mvc webgrid进行间歇性接收失败

我在System.Web.Helpers.WebGrid整个应用程序中广泛使用,并且在大多数情况下它很好,实际上在本地运行它总是很好或在服务器上使用自我SSL它也很好.所以我不知道问题是否真的可以用于IIS或防火墙,或实际的网格,或者我需要做些什么来修复它.

在所有浏览器上,虽然结果略有不同,但WebGrid上的连续ajax排序和分页会导致它挂起,当我在Fiddler中检查响应时,我得到

[Fiddler] ReadResponse()失败:服务器未返回此请求的响应.

如果我将网址直接复制并粘贴到浏览器中,它会加载,但是如果我不断点击F5,我最终会收到一条消息,指出Chrome中的"此网页不可用"(带错误103 ERR_CONNECTION_ABORTED)或"Internet Explorer无法显示网页" IE浏览器.

网址很长很复杂,就像这样 http://app.myapp.com/mygrid/9e3b2ae5-cbe1-4a4a-a355-a14f00d26e24?mylayout=true&myid=634982439599769687&readonly=False&search=-&__=634982439708207187&sort=Name&dir=ASC

如果在服务器上安装了SSL证书,这个问题似乎就会消失,并且本地不会发生.

有任何想法吗?

c# iis asp.net-mvc webgrid

10
推荐指数
1
解决办法
589
查看次数

当两个网格位于同一页面时进行排序

在我的页面上,我有两个webGrids.当我单击一个对该列进行排序时,两个网格都在该列上排序.对仅在一个列中的列进行排序,根本不排序.

我注意到排序的工作原理是使标题成为同一页面的链接,在查询字符串中包含列和方向.这解释了两个网格都受到影响.我想知道webGrid是否有一些功能来解决我的问题,或者我应该自己修复它.

我计划"自己修复"的方法是首先通过设置htmlAttributes为表标记添加id属性.然后我将使用jQuery为每个webgrid找到这个id,并将该id包含在links参数中.然后当加载带有网格的页面时,我将根据这些参数强制设置要排序的列.

在我看来,webGrid不是设计在与另一个webGrid的页面上.但是,我觉得在我的情况下,这是需要的.我更喜欢使用一些标准方式(内置或其他人使用).

所以问题是,最好的方法是什么?如果没有最好的方法,我的方式是一个好方法(我忘记了什么)?

提前致谢.

webgrid asp.net-mvc-3

9
推荐指数
1
解决办法
2451
查看次数

在MVC 3中使用Webgrid选择多个复选框(选择全部/取消全选),排序和分页

如果您想知道如何制作多个复选框和多个复选框选择(选择全部或取消全选),分页,在MVC3 Webgrid中排序,这里是解决方案:

要简化,它具有以下功能:

  1. webgrid中的复选框
  2. 多个复选框选择(全选/取消全选)
  3. 使用LINQ进行分页
  4. 使用LINQ排序

视图:

@using NameSpace.DataAccess
@using ThisController = NameSpace.Web.Controllers.HomeController
@model GenericModelTypes<ContactModel>

     @{var grid = new WebGrid(rowsPerPage: ThisController._pageSize,
                  canPage: true, canSort: true, ajaxUpdateContainerId: "webgrid");
                grid.Bind(Model.TypeList, rowCount:Model.TotalRecordCount,autoSortAndPage: false);
                grid.Pager(WebGridPagerModes.All);


     @grid.GetHtml(
                    tableStyle: "webgrid",
                    headerStyle: "webgrid-header",
                    footerStyle: "webgrid-footer",
                    alternatingRowStyle: "webgrid-alternating-row",
                    selectedRowStyle: "webgrid-selected-row",
                    rowStyle: "webgrid-row-style",
                        htmlAttributes: new { id = "webgrid" },
                    columns: grid.Columns(
                         grid.Column(header: "Assign?", style: "labelcolumn",
                                        format:
                                            @<text><input class="check-box" id="assignChkBx" name="assignChkBx" type="checkbox" value="@item.ContactId" /></text>),
                        grid.Column("CompanyName", "Company Name"),
                        grid.Column("Title", "Title"),
                        grid.Column("FirstName", "First Name"),
                        grid.Column("LastName", "Last Name"),
                        grid.Column("Street", "Street"),
                        grid.Column("City", …
Run Code Online (Sandbox Code Playgroud)

sorting checkbox paging webgrid asp.net-mvc-3

9
推荐指数
0
解决办法
2万
查看次数