2014-12-18 4 views
0

Я работаю на веб-странице HTML, где у меня есть таблица с некоторыми данными, и я пытаюсь контролировать CSS для целого столбца в таблице на основе значений в другом столбце и той же строкеИзменение CSS ячейки таблицы на основе значения в другой ячейке той же строки в HTML

Например, в следующем скриншоте у меня есть данные

enter image description here

на рисунке выше, у меня есть Volume, Price and Type. Теперь я хочу контролировать цвет Price column на основе соответствующего значения в столбце Type. Вроде для Price=10 У меня есть Type как Sell, поэтому я хочу сделать значение 10 до red color и аналогично, если тип Buy, тогда значение цены должно быть в желтом.

Я пытаюсь сделать это с помощью следующего скрипта

<td data-bind="text: Volume"></td>  
       <td data-bind="text: (typeof Price() === 'number') ? Price().toFixed(2) : '',css:{cclientType:Type=='Sell'}"></td> 
       <td data-bind="text: Type"></td> 

Но это, кажется, не работает.

При условии, что данные поступают от Knockout View model, который, в свою очередь, тянется от SQL Server.

Есть ли лучший способ добиться этого?

+2

если 'type' является наблюдаемой, используйте' CSS: {cclientType: Тип() == «Продажа»} ' – Origineil

+0

работал хорошо, и как я могу дать ему несколько CSS, как я уже говорил в этом вопросе, что если он продает тогда красный, и если он покупает, то Желтый? – DoIt

+0

Никогда не думай, я понял. Спасибо – DoIt

ответ

-1

Я бы установил стили на <tr> на основе содержимого столбца типа (или любого другого столбца) и обработал все, что вам нужно в CSS.

Например.

<tr class="sell"> 
    <td>100</td>  
    <td>10.00</td>  
    <td>Sell</td>  
</tr> 

tr.sell td:nth-of-type(2) { 
    color: red; 
} 

Если вам не нравится с помощью переключателя nth-of-type, вы можете установить класс на <td>, а затем ваш селектор CSS будет:

tr.sell td.price { 
    color: red; 
} 
+0

Ну, это делает всю колонку красной, независимо от того, что значение в столбце типа – DoIt

+0

@Dev: Вы применили CSS, который я поставил неправильно. – im1dermike

+0

См. Http://jsfiddle.net/crq4jrfo/ Попробуйте изменить значение в последнем столбце, чтобы купить или продать, независимо от того, что вы вводите значение, оно просто дает столбец цены красного цвета – DoIt

0

Вы можете добавить ko.computed функцию каждый из ваших элементов данных, чтобы помочь вам определить CSS:

self.volume = ko.observable(volume); 
    self.price = ko.observable(price); 
    self.type = ko.observable(type); 
    self.priceCss = ko.computed(function() { 
    if (self.type() == 'buy') { 
     return 'buy-class'; 
    } else if (self.type() == 'sell') { 
     return 'sell-class'; 
    } else return ''; 
}); 

Это может быть добавлена ​​к разметке:

<tr> 
    <td data-bind="text:volume"></td> 
    <td data-bind="text:price, css: priceCss"></td> 
    <td data-bind="text:type"></td> 
</tr> 

plunker демонстрирует это можно увидеть here

0

Dev. Пожалуйста, попробуйте! Работает.

<td data-bind="text: volume"></td>  
<td data-bind="text: (typeof price() === 'number') ? price().toFixed(2) : '',css:{ cclientType: type() == 'sell'}"></td> 
<td data-bind="text: type"></td> 
Смежные вопросы