2016-09-26 45 views
0

モデル内にいくつかのブール値を受け取ったcshtmlファイル(Webgridを構築するための+データ)。ブール値に応じて、WebGridの列の一部が示されており、いくつかの隠しされている必要があり、例えば私が持っている: NameSurname、WebGridの中Jobの列が、私は唯一のNameJob列が示されなければならないことを意味するSurnameBool = 0を持っています。私は他の答えからコードを使用しようとしましたが、残念ながら私はJavaScriptの初心者ですので、@if(ColumnNameBool)の結果を基にwebgrid内の列にCSS display : noneプロパティを追加する方法をアドバイスしてください。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

あなたはヌルソースでグリッドを作成する必要があります。ソースであなたグリッドBIND

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

関連する問題