javascript - 如何从特定选定行的事件发送者数据中获取模型数据?

标签 javascript c# asp.net-mvc kendo-ui kendo-grid

在我的剑道网格中,我附加了此事件:

.Events(events => events.DataBound("Planning.reSelectMeasurements('#=Label#')"))

来自剑道网格:

 @(Html.Kendo().Grid<PlanningViewParam>().Name("Planning")
      .ClientRowTemplate(
     // INSERT HTML AND JS HERE
      )
      .DataSource(datasource => datasource.Ajax().Batch(false)
          .ServerOperation(false)
          .Read(read => read.Action("ReadMeasurements", "Planning", new { viewType = "A" }))
          .Model(model =>
          {
              model.Id(p => p.Order);
              model.Field(p => p.Label).Editable(false);
              model.Field(p => p.Color).Editable(false);
          })).Pageable(p=>p.Enabled(false))
              .HtmlAttributes(new { style = "height:202px; width:225px;",@class = "light-list-box"})
              .Scrollable(scrollable => scrollable.Height(100).Virtual(false))
         .Selectable(selectable => selectable
            .Mode(GridSelectionMode.Single)
            .Type(GridSelectionType.Row))
         .Events(events => events.DataBound("Planning.reSelectMeasurements('#=Label#')"))

是否可以将信息从我的 View 模型传递到此函数而不是文字字符串返回?我注意到当我运行 firebug 并在函数旁边放置一个断点时,它说标签以“#=Label#”的形式传入。

地点:

reSelectMeasurements: function (label) {
            if (label == "Point") {
                Planning.reSelectPoint("A");
            }
            else if (label == "Angle") {
                Planning.reSelectAngle("A");
            }
        }

编辑:

最近的尝试:

 if (events.sender._data.PointLabel == "Point") {
                Planning.reSelectPoint("A");
            }
            else if (events.sender._data.Label == "Angle") {
                Planning.reSelectAngle("A");
            }

当我到达_data.在调试时,它包含一个数据数组。如何传递我选择的特定行以便我可以传递正确的标签数据?

所以层次结构看起来像events.sender._data.[0].Label

最佳答案

我认为这取决于控件的版本,但在 2014.2.903.545 中,这就是我将数据从网格传递到 JavaScript 函数的方式。

在 Razor 中: ...

 .Events(e =>
               {
               e.Edit("readonlyifyKey");
               e.DataBound("bindMigrateButton");
               })

...

然后函数看起来像这样:

 function bindMigrateButton(e) {

    var prjId = e.sender.element.context.id;
    prjId = prjId.replace('projects-setttings_', '');
    $('#import-config-btn__' + prjId).click(showImportWindow);

}

prjId 保存绑定(bind)到网格的对象的模型 ID,因此您应该能够以这种方式访问​​模型的任何属性。

它看起来像var prjId = e.sender.element.context.id; 实际上正在获取 dom 元素 id,但您仍然应该能够访问 e.sender 之外的所有模型元素,不确定它是如何从那里嵌套的,但发送者应该具有模型属性。

关于javascript - 如何从特定选定行的事件发送者数据中获取模型数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29855113/

相关文章:

c# - 让我的掷骰子产生更多的掷骰子?

c# - 登录时向浏览器中所有打开的客户端发送消息

javascript - 非全屏时如何获取全屏(最小用户界面) View 的窗口大小?

javascript - 样式化嵌套的 li 元素

javascript - 将文本包裹在字符串后的 span 中 - 使用 jquery/javascript

c# - Veracode目录遍历问题c#

c# - Cookie 在 MAC -Safari 和 IOS Mobile- Safari 中不起作用

c# - 无法在Windows主机上上传asp.net mvc3网站

asp.net-mvc - 您会使用 MVC 2 还是 MVC 1? - S#arp Architectur + Spark View 引擎

javascript - 用于 JavaScript 的 getElementById jquery