knockout.js - MVCContrib 网格 - 我可以指定 tbody 属性吗?

标签 knockout.js mvccontrib mvccontrib-grid

我正在尝试将 MVCContrib 网格与 KnockoutJS 一起使用.为此,我必须在 tbody 中指定数据绑定(bind),例如<tbody data-bind="foreach: people"> .我找不到如何做到这一点的方法。
@Html.Grid(Model).Attributes()将我的绑定(bind)应用到 <table>标签。有没有办法设置tbody属性?

最佳答案

简短的回答是不,无法在 tbody 上设置属性与当前的实现。

但是你可以自己实现这个功能:

你只需要实现你自己版本的RenderBodyStart来自 GridRenderer 的方法类(class)。

已经有 GridRenderer 的实现。调用HtmlTableGridRenderer你可以建立在什么基础上:

public class BodyWithAttributesHtmlTableGridRenderer<T> 
    : HtmlTableGridRenderer<T> where T : class
    {
        private readonly IDictionary<string, object> bodyAttributes;

        public BodyWithAttributesHtmlTableGridRenderer(
            IDictionary<string, object> bodyAttributes)
        {
            this.bodyAttributes = bodyAttributes;
        }

        protected override void RenderBodyStart()
        {
            string str = BuildHtmlAttributes(bodyAttributes);
            if (str.Length > 0)
                str = " " + str;
            RenderText(string.Format("<tbody{0}>", str));
        }
    }

在您看来,而不是调用 Render()您可以使用 RenderUsing您可以在其中指定自定义渲染器的方法:
@Html.Grid(Model))
    .RenderUsing(new BodyWithAttributesHtmlTableGridRenderer<MyModel>(
    new Dictionary<string, object>(){{"data-bind", "foreach: people"}}))

生成的 html 看起来像这样:
<table class="grid">
    <thead>
        <tr>
            <th>Prop</th>
        </tr>
    </thead>
    <tbody data-bind="foreach: people">
        <tr class="gridrow">
            <td>1</td>
        </tr>
        <tr class="gridrow_alternate">
            <td>2</td>
        </tr>
    </tbody>
</table>

你应该注意到这只是一个快速而肮脏的解决方案来展示什么是可能的,你可以使用更多的扩展点来使属性传递更好。

关于knockout.js - MVCContrib 网格 - 我可以指定 tbody 属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13308546/

相关文章:

javascript - 如何在向函数发送参数时删除单击的行?昏死

knockout.js - 将 javascript 数组转换为 ko.observablearray 并绑定(bind)到模板

javascript - Knockout 绑定(bind)使 html(表格单元格)膨胀,如何使用 javascript 创建绑定(bind)或从父元素绑定(bind)?

asp.net-mvc - 使用 HTML.Grid 显示子对象

asp.net - MVC Contrib Grid 是 Asp.Net MVC 2.0 的一部分吗?

asp.net-mvc - mvc contrib 寻呼机问题 - AsPagination

knockout.js - Durandal子 route 的路线未找到错误

javascript - knockout 应用绑定(bind)到从ajax mvc contrib网格动态加载的html

asp.net-mvc - MvcContrib 对相关对象进行网格排序