2014-06-22 6 views
1

ASP.NET MVC 5 응용 프로그램이 있습니다. Kendo UI 그리드는 Web API 컨트롤러를 호출하여 데이터를 검색합니다. 연료 유형 자동차가 무엇인지에 따라 기둥의 내용을 변경해야한다는 요구 사항이 있습니다. 그래서 페이지의 모델에서 연료 유형 문자열을 만들었습니다. MVC 제어기이 후 다음과 같이 설정된다 :검도 UI 격자의 열 변경

model.FuelType = "Diesel"; //just hardcoded for testing in reality will be dynamically set by User in a Previous screen - could be set to Petrol in which case I need to change column data 

을 부분도 내 검도 UI 그리드 아래와 같은 정의가 사용 - 또한 PartialView에 I가 FuelType

의 값을 저장하는 html.hiddenfor을
@(Html.Kendo().Grid<Car.Web.Models.CarViewModel>() 
          .Name("CarViewGrid") 
          .Columns(columns => 
          { 
           columns.Bound(c => c.Make).Width(180); 
           columns.Bound(c => c.ModelNo).Width(280); 
           columns.Bound(c => c.EngineSize).Width(120); 
           columns.Bound(c => c.Colour).Width(65); 
           columns.Bound(c => c.MPG).Width(65); 

           columns.Bound(c => c.CarId) 
            .Title("Include in Report") 
            .ClientTemplate("<input type=\"checkbox\" name=\"selectedIds\" value=\"#=CarId#\" class=\"checkboxClass\" />") 
             .Width(90) 
             .Sortable(false); 
          }) 
          .Events(builder => builder.DataBound("gridDataBound")) 
          .HtmlAttributes(new { style = "height: 420px;" }) 
          .Scrollable() 
          .Sortable(sortable => sortable 
           .AllowUnsort(true) 
           .SortMode(GridSortMode.MultipleColumn)) 
          .Pageable(pageable => pageable 
           .PageSizes(true) 
           .ButtonCount(5)) 
          .DataSource(dataSource => dataSource 
           .Ajax() 
          .Read(read => read.Url("api/Car/GetCarDetails").Type(HttpVerbs.Get).Data("GetCustId")) 
         ) 
         ) 

나는 나의 열에서 줄을 공백으로 남아있는 나는 다른 열을 포함해야 할 곳은합니다 - FuelTyle 가솔린의 경우 내가

columns.Bound(c => c.NumberSparkPlugs).Width(65); 

이 필요하지만 FuelType 디젤 I n은 경우 eed to have

columns.Bound(c => c.Torque).Width(65); 

두 가지 모두 내 CarViewModel의 문자열 속성입니다.

누구든지 검도 UI 그리드와 비슷한 것을 했습니까? 아니면이를 달성하기위한 최선의 방법을 조언 할 수 있습니까?

답변

2

나는 이것을 테스트하는으로 VisualStudio에서 검도 MVC 프로젝트가없는,하지만 당신은 단지 if 문 사용할 수 없습니다

     .Columns(columns => 
         { 
          columns.Bound(c => c.Make).Width(180); 
          columns.Bound(c => c.ModelNo).Width(280); 
          columns.Bound(c => c.EngineSize).Width(120); 
          columns.Bound(c => c.Colour).Width(65); 
          columns.Bound(c => c.MPG).Width(65); 

          columns.Bound(c => c.CarId) 
           .Title("Include in Report") 
           .ClientTemplate("<input type=\"checkbox\" name=\"selectedIds\" value=\"#=CarId#\" class=\"checkboxClass\" />") 
            .Width(90) 
            .Sortable(false); 

// added code here... 
          if(Model.FuelType == "Petrol") 
           columns.Bound(c => c.NumberSparkPlugs).Width(65); 
          else 
           columns.Bound(c => c.Torque).Width(65); 
         })