2

ユーザーがダブルクリックした後、KendoUI ListItem のテンプレートから名前を取得しようとしています。選択したアイテムの値を取得する方法が見つからないようです。アラートは未定義として返されます。

   <script type="text/x-kendo-tmpl" id="template">
       <div class="machineInstances">
               #:Name# [#:Environment#] #:Description#
        </div>
    </script>

  $("#listView").kendoListView({
      dataSource: dataSource,
      selectable: "single"
      , dataBound: setItemDoubleClickEvent
      , template: kendo.template($("#template").html())

   });

  function setItemDoubleClickEvent() {
      var items = $(".machineInstances");
      items.dblclick(function () {
              $("#menuInstances").click();
              var selected = $("#listView").data("kendoListView").select();
              alert(selected.Name);
               alert("Double Click!");
              });
      }

ありがとうございました、

ドリュー

4

1 に答える 1

7

Kendo UI ListView ではselect、アイテムではなく HTML を返します。index()選択した要素のインデックスを取得するために使用しdataSource.view()、現在表示されている要素を取得するために使用する必要があります。

コードは次のようになります。

function setItemDoubleClickEvent() {
    var items = $(".machineInstances");
    items.dblclick(function () {
        $("#menuInstances").click();
        var listView = $("#listView").data("kendoListView");
        var idx = listView.select().index();
        var item = listView.dataSource.view()[idx];
        alert(item.Name);
        alert("Double Click!");
    });
}

ただし、コードを次のように単純化することをお勧めします。

function setItemDoubleClickEvent() {
    $(".machineInstances").on("dblclick", function () {
        var listView = $("#listView").data("kendoListView");
        var idx = $(this).index();
        var item = listView.dataSource.view()[idx];
        alert(item.Name);
        alert("Double Click!");
    });
}

または、同じ結果を得るためにまったく異なる戦略を使用します。

var listView = $("#listView").data("kendoListView");
function setItemDoubleClickEvent() {
    $(".machineInstances", listView).on("dblclick", function () {
        var uid = $(this).data("uid");
        var item = listView.dataSource.getByUid(uid);
        alert(item.Name);
        alert("Double Click!");
    });
}

uidダブルクリックした要素の を取得し、 を使用して項目データを取得する場所getByUid

また、listView を外部で設定すると、関数を実行するたびに計算する必要がなくなります。

例: http: //jsfiddle.net/OnaBai/3wQaK/

于 2013-06-28T22:09:27.907 に答える