SlickGrid - applying getItemMetadata making the row to loose its id
Bug demonstration.
HTML
<link rel="stylesheet" href="http://mleibman.github.com/SlickGrid/slick.grid.css">
<link rel="stylesheet" href="http://mleibman.github.com/SlickGrid/css/smoothness/jquery-ui-1.8.16.custom.css">
<link rel="stylesheet" href="http://mleibman.github.com/SlickGrid/examples/examples.css">
<script src="http://mleibman.github.com/SlickGrid/lib/jquery-ui-1.8.16.custom.min.js"></script>
<script src="http://mleibman.github.com/SlickGrid/lib/jquery.event.drag-2.0.min.js"></script>
<script src="http://mleibman.github.com/SlickGrid/slick.core.js"></script>
<script src="http://mleibman.github.com/SlickGrid/slick.formatters.js"></script>
<script src="http://mleibman.github.com/SlickGrid/slick.editors.js"></script>
<script src="http://mleibman.github.com/SlickGrid/slick.grid.js"></script>
<script src="http://mleibman.github.com/SlickGrid/slick.dataview.js"></script>
<script src="http://mleibman.github.com/SlickGrid/images/collapse.gif"></script>
<script src="http://mleibman.github.com/SlickGrid/images/expand.gif"></script>
<div id="myGrid"></div>
CSS
.cell-title {
font-weight: bold;
}
.cell-effort-driven {
text-align: center;
}
.toggle {
height: 9px;
width: 9px;
display: inline-block;
}
.toggle.expand {
background: url(http://mleibman.github.com/SlickGrid/images/expand.gif) no-repeat center center;
}
.toggle.collapse {
background: url(http://mleibman.github.com/SlickGrid/images/collapse.gif) no-repeat center center;
}
.slick-row.parentClassName, .slick-row.parentClassName:hover{color:#0e71b2}
#myGrid{width:600px;margin:1em auto}
JavaScript
// Vars
var percentCompleteThreshold = 0;
var searchString = "";
var dataView;
var grid;
var data = [];
// Formaters
var TaskNameFormatter = function (row, cell, value, columnDef, dataContext) {
value = value.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">");
var spacer = "<span style='display:inline-block;height:1px;width:" + (15 * dataContext["indent"]) + "px'></span>";
var idx = dataView.getIdxById(dataContext.id);
if (data[idx + 1] && data[idx + 1].indent > data[idx].indent) {
if (dataContext._collapsed) {
return spacer + " <span class='toggle expand'></span> " + value;
} else {
return spacer + " <span class='toggle collapse'></span> " + value;
}
} else {
return spacer + " <span class='toggle'></span> " + value;
}
};
var numberFormatter = function (row, cell, value, columnDef, dataContext) {
var replacedVal = parseFloat(value.replace(',', '.'));
try {
if (replacedVal < 0)
return '<font color="red">' + value + '</font>';
else if (replacedVal > 0)
return '<font color="green">' + value + '</font>';
else
return '<font color="blue">' + value + '</font>';
} catch (e) {
return '';
}
}
var list_portfolios = [
{ id: 0, title: 'BEHAVIOR MASTER FIM', amount: '', price: '', nav: '52,551,439.58', weight: '46.79', indent: 0, parent: null},
{ id: 1, title: 'Real $', amount: '-1,056,495.73', price: '55.90', nav: '-1,056,495.73', weight: '-2.01', indent: 1, parent: 0},
{ id: 2, title: 'ALPARGATAS PN N1', amount: '12,200.00' , price: '0.39', nav: '638,232.00', weight: '1', indent: 1, parent: 0},
{ id: 3, title: 'AMBEV PN', amount: '301,000.00', price: '34.41', nav: '1,069,112.50', weight: '2', indent: 1, parent: 0},
{ id: 4, title: 'AMAZONIA ON', amount: '38,500.00' , price: '27.59', nav: '638,232.00', weight: '1.3', indent: 1, parent: 0},
{ id: 5, title:...