在选定的剑道网格 mvvm 中获取剑道下拉列表值/文本/索引

Posted

技术标签:

【中文标题】在选定的剑道网格 mvvm 中获取剑道下拉列表值/文本/索引【英文标题】:Get kendo dropdownlist value/text/index in selected kendo grid mvvm 【发布时间】:2014-07-09 13:48:00 【问题描述】:

我可以通过以下模板场景将剑道下拉列表添加到剑道网格中:

<script type="text/x-kendo-template" id="ddlGrid">
    <input data-role="dropdownlist"
       data-text-field="Text"
       data-value-field="Value"
       data-bind="source: actionSource, events:  change: onChange"/>
</script>
<div class="demo-section">
<div class="k-content" style="width: 100%">
    <div id="grid"
         data-role="grid"
         data-sortable="true"
         data-selectable="true"
         data-columns="[
             field: 'ProductID' ,
             field: 'ProductName' ,
             field: 'UnitPrice' ,
             field: 'UnitsInStock' ,
             field: 'Discontinued' ,
             title: 'Action', template: kendo.template($('#ddlGrid').html()) ]"
         data-bind="source: dataSource, event">
    </div>
</div>

但是,问题在于如何访问该下拉列表以获取它的值/文本/索引。 到目前为止,我可以使用这种方法获取选定的行数据:

var onClick = function (event, delegate) 
  event.preventDefault();
  var grid = $("#grid").data("kendoGrid");
  var selectedRow = grid.select();
  var dataItem = grid.dataItem(selectedRow);
  if (selectedRow.length > 0)
    delegate(dataItem);
  else
    alert("Please select a row.");
  ;

var viewModel = new kendo.data.ObservableObject(
    dataSource: productDatasource,
    actionSource: actionDataSource,

    onChange: function (event) 
        onClick(event, function (dataItem) 
            alert(dataItem.ProductID + " " + dataItem.ProductName);
        );            
    ,

);

这里是JSFiddle code

请帮帮我,我卡住了。

提前致谢。

【问题讨论】:

【参考方案1】:

您可以使用以下方式访问 DropDownList 文本和值:

var value = event.sender.value();
var text = event.sender.text();

在您的 onChange 函数中:

onChange: function (event) 
    alert ("Text/Value : " + event.sender.text() + "/" + event.sender.value());
    onClick(event, function (dataItem) 
        alert(dataItem.ProductID + " " + dataItem.ProductName);
    );            
,

但是我实际上不确定您为什么要定义 onClick 以及所有可以让 dataItem 简单地执行的复杂代码:

var viewModel = new kendo.data.ObservableObject(
    dataSource: productDatasource,
    actionSource: actionDataSource,

    onChange: function (event) 
        alert ("Text/Value : " + event.sender.text() + "/" + event.sender.value());
        var grid = $("#grid").data("kendoGrid");
        var dataItem = grid.dataItem($(event.sender.wrapper).closest("tr"));
        alert(dataItem.ProductID + " " + dataItem.ProductName);
    ,

);
kendo.bind($("#grid"), viewModel);

在这里查看:http://jsfiddle.net/OnaBai/hLG98/12/

【讨论】:

grid.dataItem($(event.sender.wrapper).closest("tr"));我花了很多时间才到达这里。想要在组合框的 SELECT 事件上获取选择获取网格行(作为模板单元格存在)。感谢您的帖子

以上是关于在选定的剑道网格 mvvm 中获取剑道下拉列表值/文本/索引的主要内容,如果未能解决你的问题,请参考以下文章

获取剑道下拉值的选定ID

从Angular 2+中的剑道网格中获取选定行的列表

剑道网格“每页项目”下拉列表中的自定义值

剑道下拉选项标签更改选定值

在空的剑道网格上排序显示旧数据

剑道网格视图行高亮