ok I solved this by re-writing it in JS format and using the Razor markup still to dynamically generate the columns.
this helped - Mix Razor and Javascript code
<script type="text/javascript">jQuery(function () {
jQuery("#wims-grid-surveillance").kendoGrid({
change: wimsDashboard.changeSurveillance,
dataBound: wimsDashboard.changeSurveillance,
columns: [
{ title: "Well", "width": "5%", "field": "Well", "filterable": {}, "encoded": true },
{ title: "Type", "width": "5%", "field": "Type", "filterable": {}, "encoded": true },
{ title: "Pot.", "width": "3%", format: "{0:n0}","field": "Potential", "filterable": {}, "encoded": true },
{ title: "Status", "width": "4%",
"template": "\u003cdiv style=\u0027vertical-align: top;cursor: pointer;text-align: center;font-size: 300%;color: #=StatusFlag#\u0027 onclick=\u0027wimsPage.bf.openWindow(\u0022/eplant/dll/eplant.dll?Display&page_id=2121&WELL=#=Well#\u0022,\u0022#=Well#\u0022, \u0022/eplant/images/custom_images/WIMS-16x16.png\u0022,\u0022#=Well# - Well Integrity BF Display\u0022);\u0027 \u003e\u25CF\u003c/div\u003e",
"field": "Status",
"filterable": {
extra:false,
operators: {
string:{ contains: "Is"}
},
ui: function (el){
el.kendoDropDownList({
dataSource: [{value:"111",text:"Open"},{value:"0",text:"Shut"}],
dataTextField: "text",
dataValueField: "value",
optionLabel: "--Select Value--",
cell: {operator: "contains"}
});
}
},
"encoded": true,
sortable: {
compare: function (a, b) {
a = (a.Status.split("1").length - 1);
b = (b.Status.split("1").length - 1);
return a<b ? -1 : a==b ? 0 : 1;
}
} },
{ title: "Oper. Status", "width": "4%", "field": "OpStatus", "filterable": { extra:false,
operators: {
string:{ eq: "Is"}
},
ui: function (el){
el.kendoDropDownList({
dataSource: [{value:"Shut In",text:"Shut In"},{value:"Cont. Oper.",text:"Cont. Oper."}],
dataTextField: "text",
dataValueField: "value",
optionLabel: "--Select Value--",
cell: {eq: "Is"}
});
}}, "encoded": true },
{ title: "Active Case", "width": "8%", "field": "Case", "filterable": {}, "encoded": true },
{ title: "Sev.", "width": "3%", "field": "Severity", "filterable": {}, "encoded": true },
{ title: "Days to expiry",
attributes: { "class": "vline" },
width: "4%",
template: "#if (DaysToExpiry == '0') {# <div style='color: #=DaysToExpiryFlag#'>Expired</div> #} else if(DaysToExpiry==null) {##} else {##=DaysToExpiry##}#",
field: "DaysToExpiry",
filterable: {},
encoded: true
}
@foreach (var issue in LookupHelper.GetFailureLocations().Where(b => b.Source != "Other"))
{
<text>
,{ "title": "@issue.Description",
"attributes": { "class": "visible-wide" },
"width": "5%",
"template": "<div class='input-block-level' style='color:transparent; background-color: #if(Issue_@issue.Id == 5){##=dashboardFailureColour.text##}else if (Issue_@issue.Id == 4) {##=dashboardCategory1Colour.text##} else if (Issue_@issue.Id == 3) {##=dashboardCategory2Colour.text##} else if (Issue_@issue.Id == 2) {##=dashboardCategory3Colour.text##} else if (Issue_@issue.Id == 1) {##=dashboardNonApplicableColour.text##} else if (Issue_@issue.Id === 0) {##=dashboardInvalidAttributeColour.text##}else{#none#}#;'>#if(Issue_@issue.Id != null){##=Issue_@issue.Id##}#</div>",
"field": "Issue_@issue.Id",
"filterable": {
extra:false,
operators: {
string:{ eq: "Is"}
},
ui: function (el){
el.kendoDropDownList({
dataSource: [
{ 'value': 0, text:'Error' },
{ 'value': 1, text:'OK' },
{ 'value': 2, text:'Cat3' },
{ 'value': 3, text:'Cat2' },
{ 'value': 4, text:'Cat1' },
{ 'value': 5, text:'Fail' }
],
dataTextField: "text",
dataValueField: "value",
optionLabel: "--Select Value--",
cell: {operator: "eq"}
});
}
},
"encoded": true
}
</text>
}
],
"pageable": { "buttonCount": 10 },
"sortable": { "mode": "multiple" },
"selectable": "Single, Row",
"filterable": true,
"resizable": false,
"scrollable": false,
"dataSource": {
"transport": {
"prefix": "",
"read": {
"url": ""}
},
"pageSize": 20,
"page": 1,
"total": 0,
"type": "aspnetmvc-ajax",
"sort": [{ "field": "Well", "dir": "asc"}],
"schema": {
"data": "Data",
"total": "Total",
"errors": "Errors",
"model": { "id": "Well", "fields": {
"Severity":{"type":"number"},
"Potential":{"type":"number"},
"DaysToExpiry":{"type":"number"},
"Issue_1":{"type":"number"},
"Issue_2":{"type":"number"},
"Issue_3":{"type":"number"},
"Issue_4":{"type":"number"},
"Issue_5":{"type":"number"},
"Issue_6":{"type":"number"},
"Issue_7":{"type":"number"}
}
}
},
"batch": true
}
});
$.fx.off = true;
});
</script>