2016-05-05 8 views
0

年齢、年月、日数のカスタムフィルタを作成したいコードは次のとおりです。Custom Telerik Kendo Filterにテキストボックスを挿入

@(Html.Kendo().Grid<RunSummary>() 
      .Name("Runs") 
      .DataSource(datasource => datasource 
       .Ajax().PageSize(25)   
       .Sort(sort => sort.Add("TimeOn").Descending())       
       .Read(read => read.Action("GetRunSummaries", "Home"))) 
      .Columns(columns => 
       { 
        columns.Bound(d => d.RunId).Title("").Width(30).Filterable(false) 
         .ClientTemplate("<input type='checkbox' unlock='true' class='primaryBox' id='#= RunId #' />").Visible(User.IsInRole("Registry Administrator")); 

        columns.Bound(c => c.UniqueId).Title(ELSORegistry.Resources.Views.Home.HomeStrings.UniqueId); 
        columns.Bound(c => c.RunNo).Title(SharedStrings.Run); 
        columns.Bound(c => c.Birthdate).Title(SharedStrings.Birthdate).Format("{0:g}").Filterable(true); 

        //columns.Bound(c => c.Age).Title(SharedStrings.Age).ClientTemplate("#= formatAge(Age)#"); 
        columns.Bound(c => c.Age).Title(SharedStrings.Age) 
         .ClientTemplate("#= formatAge(Age)#") 
         .Filterable(
          filterable => filterable 
           .UI("cityFilter") 
           .Extra(false)         
           .Operators(operators => operators 
            .ForNumber(str => str.Clear().IsEqualTo("Is equal to").IsGreaterThan("Is greater than").IsLessThan("Is less than")) 

            ) 

        ); 
        columns.Bound(c => c.TimeOn).Title(PatientStrings.TimeOn) 
         .Format("{0:g}") 
         .Filterable(true); 
        columns.Bound(c => c.TimeOff).Title(PatientStrings.TimeOff) 
         .Format("{0:g}") 
         .Filterable(true); 

        columns.Bound(c => c.isLocked).Title("Locked").ClientTemplate("#= isLocked ? 'Yes' : 'No' #"); 

        //columns.Bound(p => p.Abbreviation).Title("Mode"); 
        columns.Command(command => command.Custom("Patient").Click("selectPatient")); 
        columns.Command(command => command.Custom("Run").Click("selectRun")); 
       } 
     ) 
      .Pageable(p => p.PageSizes(new[] {10, 25, 50, 100})) 
      .Sortable() 
      .Filterable() 
      .Events(e => e.FilterMenuInit("FilterMenuFunc")) // apply x [closing box] on pop up filter box 
     ) 
</section> 

<script> 

    function cityFilter(element) { 
      element.kendoDropDownList({ 
      dataSource: [{ Name: "Days", Value: "1" }, { Name: "Months", Value: "2" }, { Name: "Years", Value: "3" }] 
      , dataTextField: "Name" 
      , dataValueField: "Value" 
         }); 
        window.setTimeout(function() { 
      element.data("kendoDropDownList").value("3"); 
     }, 1); 
    } 
</script> 

私はここ(中世の)数を置くために、年齢フィルタにテキストボックスを挿入する必要があります。テキストボックスフィールドをカスタムフィルタに挿入するには?助けをありがとうございました。

答えて

0

可能な解決策は、次のとおり

function AgeFilter(element) { 

     element.kendoDropDownList({ 
      dataSource: [{ Name: "Days", Value: "1" }, { Name: "Months", Value: "2" }, { Name: "Years", Value: "3" }] 
      , dataTextField: "Name" 
      , dataValueField: "Value" 
     }); 

     window.setTimeout(function() { 
      element.data("kendoDropDownList").value("1"); 
     }, 1); 

グリッドで:

columns.Bound(c => c.customAge).Title(SharedStrings.Age) 
         .Filterable(
          filterable => filterable 
           .UI("AgeFilter") 
           .Extra(false) 
           .Operators(operators => operators 
            .ForString(str => str.Clear().IsEqualTo("Is equal to")) 
            ) 

         ); 

     } 
関連する問題