繁体   English   中英

ASP.NET MVC隐藏WebGrid列

[英]ASP.NET mvc hiding webgrid columns

我的cshtml文件在模型中接收一些布尔值(+数据以构建WebGrid)。 根据布尔值,必须显示一些webgrid列,而有些则隐藏,例如,我在webgrid中具有: NameSurnameJob列,但是我的SurnameBool = 0意味着仅必须显示NameJob列。 我试图使用其他答案中的代码,但是很不幸,我是JavaScript的新手,所以请您为我提供建议,如何基于@if(ColumnNameBool)结果在@if(ColumnNameBool)列中添加CSS display : none属性。

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")
                             )
                     )
    }

您应该使用空源创建网格:

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());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM