2016-09-26 124 views
0

我的cshtml文件接收模型中的一些布爾值(+數據構建webgrid)。取決於布爾值一些webgrid列必須顯示和一些隱藏,例如我有: Name,Surname,Job列webgrid,但我有SurnameBool = 0這意味着只有NameJob列必須顯示。我試圖使用其他答案的代碼,但不幸的是,我是JavaScript的新手,所以請你可以建議我如何添加css display : none屬性到webgrid中的列,基於@if(ColumnNameBool)結果。ASP.NET mvc隱藏webgrid列

WebGrid grid = new WebGrid(item2.ListOfWorkData, canSort: false, rowsPerPage: 15); 

<div id="divWebGrid" class="row"> 
    @if (item2.ListOfWorkData.Any()) 
    { 
     @grid.GetHtml(
          tableStyle: "table", 
          headerStyle: "table_HeaderStyle", 
          footerStyle: "table_PagerStyle", 
          rowStyle: "table_RowStyle", 
          alternatingRowStyle: "table_AlternatingRowStyle", 
          selectedRowStyle: "table_SelectedRowStyle", 
          columns: grid.Columns(
           grid.Column("ProjectName", @Resources.Localization.project, format: @<text> 
            @if (Model.ColumnsNeeded.ProjectNameBool) 
            { 
             <span class="display-mode"><label id="ProjectNameLabel">@item.ProjectName</label></span> 
            } 
           </text>,style : "hidden-column"), 
           grid.Column("Activity", @Resources.Localization.activity, format: @<text> 
            @if (Model.ColumnsNeeded.ActivityBool) 
            { 
             <span class="display-mode"><label id="ActivityLabel">@item.Activity</label></span> 
            } 
           </text>, style: "p60"), 
           grid.Column("ProjectEndDate", @Resources.Localization.start_date, format: @<text> 
            @if (Model.ColumnsNeeded.ProjectStartDateBool) 
            { 
             <span class="display-mode"><label id="ProjectStartDate">@item.ProjectStartDate</label></span> 
            } 
           </text>, style: "p60"), 
           grid.Column("ProjectEndDate", @Resources.Localization.end_date, format: @<text> 
            @if (Model.ColumnsNeeded.ProjectEndDateBool) 
            { 
             <span class="display-mode"><label id="ProjectEndDate">@item.ProjectEndDate</label></span> 
            } 
           </text>, style: "p60") 
          ) 
        ) 
    } 
+0

可以嘗試像 @if(ColumnNameBool){呈現列} – vamsi

+0

請添加您的WebGrid – MikkaRin

+0

的代碼,我從來沒有遇到過這樣的決定,到目前爲止,你可以寫我應該怎麼請直接指向專欄? –

回答

1

你應該空源創建網格:

WebGrid grid = new WebGrid<Your item type>(null, canSort: false, rowsPerPage: 15); 

綁定你網格來源:

grid.Bind(item2.ListOfWorkData, rowCount: <total row count>, autoSortAndPage: false); 

創建取決於ColumnNameBool值的列集:

var gridColumns = new List<WebGridColumn>(); 
@if(ColumnNameBool) 
{   
     gridColumns.Add(grid.Column("ProjectName", 
         @Resources.Localization.project, format: @<text> 
           @if (Model.ColumnsNeeded.ProjectNameBool) 
           { 
            <span class="display-mode"> 
            <label id="ProjectNameLabel"> 
            @item.ProjectName</label> 
            </span> 
           } 
          </text>,style : "hidden-column")); 
       ) 
      //... add other required columns here 
} 
else 
{ 
     //create here another list of columns that required 
     gridColumns.Add(...); 

} 

終於分配列列表格:

@grid.GetHtml(<styles>, columns: gridColumns.ToArray()); 
+0

也許它不會爲我工作,我將在我的桌子上有大約40多列,這是不可能寫出他們的所有組合,但謝謝。 –

+1

@ Vadim.K更新回答問題。應該工作 – MikkaRin