XSLT подсчет элементов с данным значением

Я предлагаю другой способ, вместо этого вызывайте closeCell () для события редактирования, если вы не хотите, чтобы пользователь мог редактировать ячейку. При этом ячейка не будет отображать ввод, когда пользователь щелкает его, чтобы отредактировать.

<div id="grid"></div>
<script>
$("#grid").kendoGrid({
  columns: [
    { field: "id" },
    { field: "name" },
    { field: "age" }
  ],
  dataSource: {
    data: [
      { id: 1, name: "Jane Doe", age: 30 },
      { id: 2, name: "John Doe", age: 33 }
    ],
    schema: {
      model: {
        id: "id",
        fields: {
          "id": { type: "number" }
        }
      }
    }
  },
  editable: "incell",
  toolbar:["create"],
  edit: function(e) {
    if (!e.model.isNew() && e.container.index() == 0) {
      var grid = $("#grid").data("kendoGrid");
      grid.closeCell();
    }
  }
});
</script>
19
задан e-holder 6 April 2009 в 19:15
поделиться

3 ответа

Этот XPath:

count(//Property[long = '11007'])

возвращает то же значение как:

count(//Property/long[text() = '11007'])

... за исключением того, что первые количества Property узлы, которые соответствуют критерию и вторым количествам long дочерние узлы, которые соответствуют критерию.

Согласно Вашему комментарию и чтению Вашего вопроса пару раз, я полагаю, что Вы хотите найти уникальность на основе комбинации критериев. Поэтому в действительности, я думаю, что Вы на самом деле проверяете несколько условий. Следующее работало бы также:

count(//Property[@Name = 'Alive'][long = '11007'])

потому что это означает то же самое как:

count(//Property[@Name = 'Alive' and long = '11007'])

Конечно, Вы заменили бы значениями параметры в Вашем шаблоне. Вышеупомянутый код только иллюстрирует тезис.

РЕДАКТИРОВАНИЕ (после того, как редактирование вопроса)


Вы были совершенно правы о XML том, чтобы быть ужасным. На самом деле это - прямой кандидат CodingHorror! Я должен был продолжать рассказывать для отслеживания узел "Свойства", я шел в настоящее время. Я чувствую Вашу боль!

Вот:

count(/root/ac/Properties/Property[Properties/Property/Properties/Property/long = $parPropId])

Обратите внимание, что я удалил все другие проверки (для идентификатора и Значения). Они, кажется, не требуются, так как Вы можете прибыть в соответствующий узел с помощью иерархии в XML. Кроме того, Вы уже упомянули, что проверка на уникальность базируется только на содержании long элемент.

40
ответ дан 30 November 2019 в 03:20
поделиться

Ваш xpath просто немного прочь:

count(//Property/long[text()=$parPropId])

Править: Cerebrus вполне справедливо указывает, что код в Вашем OP (использующий неявное значение узла) абсолютно хорошо для Ваших целей. На самом деле, так как довольно вероятно, что Вы хотите работать с узлом "Свойства", а не "длинным" узлом, это, вероятно, превосходит, просят //Property[long=$parPropId] чем текст () xpath, хотя Вы могли изложить доводы для последнего о территории удобочитаемости.

Что может я говорить, я немного устал сегодня :)

2
ответ дан 30 November 2019 в 03:20
поделиться
<xsl:variable name="count" select="count(/Property/long = $parPropId)"/>

Непротестированный, но я думаю, что это должно работать. Я предполагаю, что узлы Свойства являются прямыми детьми корневого узла и для этого вынимания Вашего порожденного селектора для производительности

-2
ответ дан 30 November 2019 в 03:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: