【问题标题】:Kendo UI grid command.imageClass is missing in ASP MVC helperASP MVC 帮助程序中缺少 Kendo UI 网格 command.imageClass
【发布时间】:2015-05-06 13:42:08
【问题描述】:

许多纯 html 示例都引用和使用 Kendo UI 网格的命令 imageClass 属性:

$("#grid").kendoGrid({
dataSource: myDataSource,
columns: [
    {
        command: { 
            name: "Edit",
            text:"",
            imageClass: "k-icon k-i-pencil ob-icon-only",
            click: function(e) {
                //some code
            }
        }
    },
    ...
],

});

我正在使用 Kendo UI ASP MVC 版本,它似乎没有要设置的属性。我错过了什么?

万一这真的不见了(我希望没有),即使在 javascript 中,我仍然如何设置这个属性? (我想保留我的 html 助手渲染,而不是在 javascript 中做 everything,这个解决方案很明显......)

【问题讨论】:

  • 寻求 Kendo 帮助的一个非常令人恼火的事情是,您必须小心远离“Kendo UI”解决方案,因为您已经发现“Kendo MVC”是不同的。

标签: .net asp.net-mvc kendo-ui kendo-grid


【解决方案1】:

你不会在 MVC Helper 中使用 imageClass;您将使用 HtmlAttributes 属性。你可以这样定义:

columns.Command(o => o.Edit().Text("")
.HtmlAttributes(new { @class = "k-icon k-i-pencil ob-icon-only" }));

祝你好运。

编辑:为什么不修改 css 以适应它?

.ob-icon-only span{ }

关于将 kendo 类添加到内部 span 元素,您可以在数据绑定上执行此操作并相应地修改元素。

【讨论】:

  • 在我要求 ImageClass 之前,我已经尝试过该解决方案。不幸的是,类属性必须添加到 inner 跨度类中。将这些类添加到按钮(外部 元素)会导致按钮呈现错误。
  • 关于 kryptonkal 编辑:这种情况下,我必须从 kendo 复制并粘贴相同的 CSS 和/或引导最初为 k-icon 定义的内容。我认为将粘贴的 CSS 复制到新的选择器而不是尝试应用原始类不是专业的解决方案。
【解决方案2】:

指定自定义样式最方便的方法是使用自动生成的k-grid-NAME_OF_COMMAND 类。如果这在当前实现中不适合,我建议您绑定到 dataBound 事件并将类附加到那里。取消编辑后,使用OnCancel 事件再次替换图标。

示例

.Events(e => e.DataBound("onDataBound").Cancel("onCancel"))

JavaScript

function onDataBound(e) {
    $(".k-grid-NAME_OF_COMMAND").addClass("k-icon k-i-pencil ob-icon-only");
}

或者

function onDataBound(e) {
    $(".k-grid-edit").find("span").removeClass("k-icon k-edit");
    $(".k-grid-edit").find("span").addClass("k-icon k-i-pencil ob-icon-only");
}

添加取消事件以确保在取消编辑时图标保持不变。

function onCancel(e) {
    e.preventDefault();
    e.sender.refresh();
}

结果

其他测试

使用$(".k-grid-edit").find("span").addClass("k-icon k-i-cancel ob-icon-only");

【讨论】:

  • Vash:非常感谢您的详细解答。我已经为我的自定义按钮使用了您的 second 解决方案。 (第一个不正确,因为图像是由内部跨度实现的)但不满意,原因如下:如果网格中启用了内联编辑,然后按Edit然后[取消]隐藏自定义按钮,然后重新创建并这将从内部跨度中删除类。我试图利用 Cancel 事件来修补类属性,但不幸的是,当 Cancel 事件运行时自定义按钮仍然隐藏,所以显然 jQuery 什么都找不到...
  • 添加到我的上一条评论中:有趣的是按下编辑按钮,然后更新按钮不会从自定义按钮的内部跨度中删除类。只有按下编辑按钮然后按下取消按钮序列才能删除跨度的类。两种情况下,自定义按钮都被隐藏了,所以我不知道有什么区别......(编辑:是的,我知道:编辑后数据绑定事件也会运行,以便重新应用类)
  • 我已经编辑了我的回复,但似乎它可能与这里的方法相同。您可能必须覆盖所有事件或修改 kendo js 源代码。
  • 我在原始代码中犯了一个错误,在 CSS 选择器中使用 Edit 而不是 edit。使用 Cancel 事件,您可以确保在取消编辑时图标保持不变。
  • a) 正如我所写的,我什至在我在这里提出问题之前就已经尝试过了,但不幸的是,当取消事件触发自定义按钮时,实际上并不存在,所以 jQuery 选择显然没有找到它。 b)覆盖原始来源:这正是我试图避免的。我不认为它是专业的,不是在谈论处理升级,什么时候应该应用新版本的源代码(我的意思是剑道或引导程序)
猜你喜欢
  • 2015-03-09
  • 1970-01-01
  • 1970-01-01
  • 2016-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多