Промяна на реда на кендо мрежата при щракване

Надявам се, че някой може да предложи помощ в това. Имам решетка Kendo в html документ (без MVC) и искам да променя класа на целия ред при избор на ред. Опитах различни подходи, но все още без успех. В момента съм на:

// в дефиницията на кендо мрежа - мрежа, наречена '#grid'

    change: function (e) {
        $("#grid tbody").find("tr[k-state-selected]").css("color", "black");
        var id = $("#grid").closest("tr").css("color", "black");
        CallDocument(this._data[0]);
    },

Функцията CallDocument се задейства и затова знам, че мога поне да стигна до функцията.

РЕДАКТИРАНЕ: Ето решението, което измислих и благодаря на всички

change: function (e) {
            $("#grid tbody").find("tr.k-state-selected").attr("class", "detail read k-state-selected");

    },

Трябваше да използвам формуляра „tr.k-state-selected“ и да променя с помощта на attr, за да променя набора от класове.


person Mark McWhirter    schedule 03.01.2014    source източник
comment
Можете ли да прекъснете веригата и да отстраните грешки на ниво селектор и да направите console.log или стар сигнал, за да видите дали е избран действителният ред. Останалите изглеждат добре, мисля, че селекторът не може да достигне този ред. какво е k-state-selected?   -  person Farrukh Subhani    schedule 03.01.2014
comment
'k-state-selected' в кендо гарантирано е избраният ред. Така че трябва да мога да сканирам таблицата, търсейки реда, който има „k-state-selected“ и да променя класа.   -  person Mark McWhirter    schedule 03.01.2014
comment
така че k-state-selected е клас на този ред елемент tr? вместо tr[k-state-seected] трябва да използвате tr.k-state-selected във вашия метод за намиране   -  person Farrukh Subhani    schedule 03.01.2014
comment

Таблица A има колона srno и няколко други колони.

Таблица B има колони srno и id.

Искам да получа srno от B за дадено id и след това да извлека запис(и) за това srno от таблица A.

Например, ако id е 7, мога да мисля да направя това по два начина:

select * from A as table_a, B as table_b where table_a.srno=table_b.srno and table_b.id=7;

И,

select * from A where srno in (select srno from B where id=7);

И двамата правят същото. Но когато има огромен брой записи и в двете таблици, производителността кое е по-добро? Или и двете ще имат еднаква производителност? (Нека приемем тук, че правилното индексиране и т.н. се е погрижило за тези две таблици. Просто искам сравнение на производителността между тези две заявки)

  -  person Mark McWhirter    schedule 03.01.2014
comment
Можете да използвате функции на jquery като addClass и removeClass вместо attr и това няма да повлияе на съществуващи класове и просто добавяне и премахване на клас, който посочите. Например $("#grid tr.k-state-selected").addClass("detail") ще добави този клас към tr вътре в #grid и removeClass ще го премахне.   -  person Farrukh Subhani    schedule 03.01.2014


Отговори (2)


За да маркирате всеки посетен ред като избран, можете да добавите CSS клас към change събитие.

var grid = $("#grid").kendoGrid({
    dataSource: ds,
    editable  : false,
    pageable  : true,
    selectable: true,
    columns   :
    [
        { field: "FirstName", width: 90, title: "First Name" },
        { field: "LastName", width: 200, title: "Last Name" },
        { field: "City", width: 200 }
    ],
    change : function (e) {
        this.select().addClass("ob-selected");
    }
}).data("kendoGrid");

Класът ob-selected остава, когато се преместите в друга клетка, тъй като това няма нищо общо с KendoUI.

Пример тук: http://jsfiddle.net/2TGLp/1/

Единственият въпрос е, че не остава избрано, ако приложите филтри, преминете към друга страница... но не сте сигурни дали това е важно за вас.

person OnaBai    schedule 03.01.2014
comment
Накарах това да работи сега и беше както предложихте. Имам няколко класа, свързани с текущия ред, и затова поставих това в събитието за промяна на мрежата: промяна: функция (e) { $(#grid tbody).find(tr.k-state-selected).attr(class , подробно четене k-състояние-избрано); CallDocument(this._data[0]); }, - person Mark McWhirter; 03.01.2014

Заменям стиловете си Kendo, използвайки както css, така и javascript (в зависимост от сценария).

CSS:

.k-state-selected {
    color: black;
}

Javascript/jQuery:

$('k-state-selected').css('color', '#000000')
person id.ot    schedule 03.01.2014
comment
Благодаря ви, но за да поясня, ще трябва класът да продължи, след като отида на друг ред. - person Mark McWhirter; 03.01.2014
comment
След това можем да добавим клас (напр. .black { color: #000 !important }) using javascript and use !important`, ако е необходимо. Това може да стане с помощта на $('#grid k-state-selected').addclass('black') - person id.ot; 03.01.2014