2014-02-20 13 views
0

我想为我的一列在下拉选择的剑道网格中创建一个过滤器用户界面。Kendoui网格自定义过滤器用户界面从数据源中检索价值

到目前为止,我有:

function stateFilter(element) 
{ 
    element.kendoDropDownList({ 
    dataSource: [ 
     { 
     "state": "New", 
     "stateId": 1 
     }, 
     { 
     "state": "Current", 
     "stateId": 2 
     }, 
     { 
     "state": "Non-finalised", 
     "stateId": 7 
     } 
    ], 
    optionLabel: 'Select state', 
    dataTextField: 'state', 
    dataValueField: 'stateId', 
    template: '#="<span class=\'filterTrigger\' data-value=\'"+stateId+"\'>"+state+"</span>" #', 
    select: function(e) 
    { 
     console.log(e) 
     var val = e.item[0].innerHTML 
     val = val.substring(41, 40); 
     html = e.item[0].innerText; 
     activeFilter = activeFilter.filter(function(obj) { 
     return obj.field !== 'state'; 
     }) 
     activeFilter.push({ 
     field: 'state', 
     operator: 'eq', 
     value: val 
     }) 
     $('.k-animation-container').hide(); 
     filtersState = 1 ; 
     grid.dataSource.filter(activeFilter); 
    } 
    }) 
} 

有没有更好的办法来从数据源stateId不必把它作为一个数据PARAM与substring()砍它,并将其作为价值?

回答

0

我不完全确定你在做什么。如果您只是希望在网格中的列上添加下拉列表作为过滤器,那么您在做什么会更容易。

这里是一个快速的样品做只是...... http://jsbin.com/coreh/1/edit

如果这不是你的意思是什么,请张贴代码为网格以更好地确定你要完成的任务。

0

这是一个Kendo网格,在网格中有一个下拉框来改变值和它的剃刀语法。为了什么值得我发布代码。它被截断了一点,所有的开/关磅应该排队。

columns.Bound(m => m.IncludeInForecast).HtmlAttributes(new { Align="center"}).Title("Include In Forecast?").ClientTemplate(

"\\# if (IncludeInForecast == true) { \\#" + 

            "<select id='\\#= OrderDetailId \\#' onchange=SaveIncludeInForecast('\\#= OrderDetailId \\#','\\#= ProposalId \\#'); style='Width: 80px; color: 'navy' > " + 
            "<option id='yes' selected value='1'>Yes</option>" + 
            "<option id='no' value='0'>No</option>" + 

            "</select>" + 
          "\\# } else { \\#" + 
            "<select id='\\#= OrderDetailId \\#' onchange=SaveIncludeInForecast('\\#= OrderDetailId \\#','\\#= ProposalId \\#'); style='Width: 80px; color: 'navy' > " + 
            "<option id='yes' value='1'>Yes</option>" + 
            "<option id='no' selected value='0'>No</option>" + 
           "\\# } \\#" + 
         "\\# } 
); 

你会注意到我在做这个的地方'\\#= ProposalId \\#'。这就是您可以从模型中获取值的方式。

然后将得到的函数

function SaveIncludeInForecast(orderDetailId, proposalId) 
{  

} 

希望这不是完全没用。