如何在 Mvccontrib 网格模型中使用自定义列?

发布于 2024-11-16 12:01:04 字数 947 浏览 3 评论 0原文

我正在使用 ASP.NET MVC 3 Mvccontrib 网格,如下所示:

@Html.Grid(Model).Columns(column =>
{
  column.For(x => x.UserId).Named("ID");
  column.For(x => x.Name);
  column.Custom(@<div><img src='@item.ImageUrl' alt="@item.Name"/><a href="@item.Link">@item.Name</a></div>).Named("Name");
  column.For(x => x.Score).Named("Score");
})

但现在我需要将其移至自定义网格模型中:

@Html.MvcContrib().Grid(Model).WithModel(new MyGridModel()).Sort(ViewData["sort"] as GridSortOptions).Attributes(id => "grid", style => "width: 100%;")

使用相应的网格模型:

public class MyGridModel : GridModel<MyModel>
{
  public MyGridModel()
  {
    Column.For(x => x.UserId);
    Column.For(x => x.Name);
    Column.For(x => x.ImageUrl);
    RenderUsing(new HtmlTableGridRenderer<MyModel>());
  }
}

但是如何在网格模型中执行自定义列?
Column.Custom(???);

I am using a ASP.NET MVC 3 Mvccontrib grid like so:

@Html.Grid(Model).Columns(column =>
{
  column.For(x => x.UserId).Named("ID");
  column.For(x => x.Name);
  column.Custom(@<div><img src='@item.ImageUrl' alt="@item.Name"/><a href="@item.Link">@item.Name</a></div>).Named("Name");
  column.For(x => x.Score).Named("Score");
})

But now I need to move this into a custom grid model:

@Html.MvcContrib().Grid(Model).WithModel(new MyGridModel()).Sort(ViewData["sort"] as GridSortOptions).Attributes(id => "grid", style => "width: 100%;")

with corresponding grid model:

public class MyGridModel : GridModel<MyModel>
{
  public MyGridModel()
  {
    Column.For(x => x.UserId);
    Column.For(x => x.Name);
    Column.For(x => x.ImageUrl);
    RenderUsing(new HtmlTableGridRenderer<MyModel>());
  }
}

But how can I do my custom column in my grid model?
Column.Custom(???);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

羞稚 2024-11-23 12:01:04

尝试这样:

public class MyGridModel : GridModel<MyModel>
{
    public MyGridModel()
    {
        Column.For(x => x.UserId);
        Column.For(x => x.Name);
        Column.Custom(MyImage);
        Column.For(x => x.Score);
        RenderUsing(new HtmlTableGridRenderer<MyModel>());
    }

    private static IHtmlString MyImage(MyModel model)
    {
        var div = new TagBuilder("div");
        var img = new TagBuilder("img");
        var a = new TagBuilder("a");
        img.Attributes["src"] = model.ImageUrl;
        img.Attributes["alt"] = model.Name;
        a.Attributes["href"] = model.Link;
        a.SetInnerText(model.Name);

        div.InnerHtml = string.Format(
            "{0}{1}",
            img.ToString(TagRenderMode.SelfClosing),
            a.ToString()
        );

        return MvcHtmlString.Create(div.ToString());
    }
}

Try like this:

public class MyGridModel : GridModel<MyModel>
{
    public MyGridModel()
    {
        Column.For(x => x.UserId);
        Column.For(x => x.Name);
        Column.Custom(MyImage);
        Column.For(x => x.Score);
        RenderUsing(new HtmlTableGridRenderer<MyModel>());
    }

    private static IHtmlString MyImage(MyModel model)
    {
        var div = new TagBuilder("div");
        var img = new TagBuilder("img");
        var a = new TagBuilder("a");
        img.Attributes["src"] = model.ImageUrl;
        img.Attributes["alt"] = model.Name;
        a.Attributes["href"] = model.Link;
        a.SetInnerText(model.Name);

        div.InnerHtml = string.Format(
            "{0}{1}",
            img.ToString(TagRenderMode.SelfClosing),
            a.ToString()
        );

        return MvcHtmlString.Create(div.ToString());
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文