0

詳細なテンプレートを含む剣道グリッド、グリッド内のグリッドがあり、毎回 1 つの行だけを選択したいです。たとえば、行を選択して展開し、内側のグリッドを表示してから、内側のグリッドから 1 つの行を選択すると、外側のグリッドの行は常に選択されたままになります。これで、グリッドに 2 つの行が選択されました。1 つは外側のグリッド (マスター行) で選択され、もう 1 つは内側のグリッドの行です。

一種の「OnLeave」イベントを模倣するイベントを取得できますか?

私は剣道のドキュメントを調べてきましたが、思いつくことができるのは、変更イベント内で何かを取得しようとすることだけです. ただし、最後にクリックした選択した行 (内側または外側のグリッド) もクリアせずに、両方のグリッドですべての選択をクリアする方法を見つけることができませんでした。

とにかく、このばかげた問題については、どんな助けも大歓迎です:)

私の見解

    @(Html.Kendo().Grid<SomeModel>()
  .Name("SomeGrid")
  .Columns(c =>
      {
          // some columns (abbreviated)
      })
  .Selectable(s => s.Enabled(true).Mode(GridSelectionMode.Single).Type(GridSelectionType.Row))
  .ClientDetailTemplateId("someTemp")
  .Events(events => events.DataBound("dataBound").Change("onSomeGridChange"))
  .DataSource(d => d.Ajax().Model(model => model.Id(p => p.SomeId)))
  )  

<script id="someTemp" type="text/kendo-tmpl">
@(Html.Kendo().Grid<SomeObject>()
  .Name("grid_#=SomeId#")
  .Columns(c =>
      {
          // some columns (abbreviated)
      })
  .Selectable(s => s.Enabled(true).Mode(GridSelectionMode.Single).Type(GridSelectionType.Row))
  .Events(events => events.Change("onSomeGridChange"))
  .DataSource(dataSource => dataSource
                                .Ajax()
                                .Read(read => read.Action("GetSomeData", "Controller", new { blNumber = "#=SomeId#" })))
  .ToClientTemplate()
  ) 

次に、私のスクリプト:

function onDerpChange(e) {
e.preventDefault();

var fff = e.sender;

// How could I clearselection on all other rows than the one I selected last?

var selectedRows = this.select();
var selectedDataItems = [];
for (var j = 0; j < selectedRows.length; j++) {
    var ddataItem = this.dataItem(selectedRows[j]);
    selectedDataItems.push(ddataItem);
}
}
4

1 に答える 1