如何突出显示Kendo UI ListView中的特定项?

时间:2016-05-12 11:24:09

标签: javascript jquery kendo-ui kendo-asp.net-mvc kendo-listview

我在表格显示中实现了一个kendo UI ListView,如下所示:

Name           user1   user2    user3  
country        usa     uk       germany  
production     5000    6000     1000  
Sales          200     400      100  

我想强调6000 cell,这是user2的生产数据。我可以使用下面的代码突出显示整个列,但我想只突出显示一个项目(单元格)。我正在为asp.net MVC使用Kendo UI。我怎么能用JavaScript / jquery做到这一点?

<script>
    $(function () {
TestHub.client.highlightValue = function (id) {
        var listView = $("#ListView_Test").data("kendoListView");
        listView.element.children("[data-uid='" + listView.dataSource.view()[2].uid + "']").effect("highlight", { color: Red}, 500);
})
};
</script>


    <div class="k-widget">
                <dl>
                    <dd>Name</dd>
                    <dd>Country</dd>
                    <dd>Production</dd>
                    <dd>Sales</dd>
                </dl>
            </div>
@(Html.Kendo().ListView<Test.Models.TestViewModel>()
    .Name("Test_LV")
    .TagName("div")
    .ClientTemplateId("templateTestLV")
                    .DataSource(dataSource => dataSource
                        .SignalR()
                        .Transport(tr => tr
                            .Promise("hubStart")
                                .Hub("TestHub")
                                .Client(c => c.Read("TestLV_Read").Update("TestLV_Update"))
                                .Server(s => s.Read("TestLV_Read").Update("TestLV_Update"))
                            )
                      .Schema(schema => schema
                        .Model(m =>
                        {
                            m.Id(p => p.Id);

                            m.Field(p => p.Name).Editable(false);
                            m.Field(p => p.Country).Editable(false);
                            m.Field(p => p.Production).Editable(false);
                            m.Field(p => p.Sales).Editable(false);
                        })
                     )
                    )
                            .Editable(editable => editable.TemplateName("TestLVEditor"))
            )
<script type="text/x-kendo-tmpl" id="templateTestLV">
    <div>
        <dl>
            <dd>#=Name</dd>
            <dd>#=Country</dd>
            <dd>#=Production</dd>
            <dd>#=Sales</dd>
        </dl>
        <div class="edit-buttons">
            <a class="k-button k-edit-button" href="\\#"><span class="k-icon k-edit"></span></a>
        </div>
    </div>
</script>

1 个答案:

答案 0 :(得分:1)

突出显示单元格就像为其分配类一样简单(在客户端模板中):

<script type="text/x-kendo-tmpl" id="templateTestLV">
    <div>
        <dl>
            <dd>#=Name</dd>
            <dd>#=Country</dd>
            <dd class="highlighted">#=Production</dd>
            <dd>#=Sales</dd>
        </dl>
        <div class="edit-buttons">
            <a class="k-button k-edit-button" href="\\#"><span class="k-icon k-edit"></span></a>
        </div>
    </div>
</script>

然后,您可以将任何样式应用到css文件中的类.highlighted。但是,我假设您想根据标准突出显示该单元格。在这种情况下,您可以向视图模型添加新的布尔标志,在控制器中将标志设置为true,如果需要根据条件突出显示生产,并仅在标志时添加.highlighted类设置为true。如下所示:

<script type="text/x-kendo-tmpl" id="templateTestLV">
    <div>
        <dl>
            <dd>#=Name</dd>
            <dd>#=Country</dd>
            <dd class="#=(IsHighlighted == true ? \"highlighted\" : \"\")#">#=Production</dd>
            <dd>#=Sales</dd>
        </dl>
        <div class="edit-buttons">
            <a class="k-button k-edit-button" href="\\#"><span class="k-icon k-edit"></span></a>
        </div>
    </div>
</script>