Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如果Web网格列中有其他项_Asp.net_Asp.net Mvc_Asp.net Mvc 3_Razor_Webgrid - Fatal编程技术网

Asp.net 如果Web网格列中有其他项

Asp.net 如果Web网格列中有其他项,asp.net,asp.net-mvc,asp.net-mvc-3,razor,webgrid,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Razor,Webgrid,如何在webgrid列中放置条件(如果有) @grid.GetHtml(tableStyle: "table table-bordered", columns: grid.Columns( grid.Column("RealName", "Name"), grid.Column("UserName", "Email") )) 我必须根据条件显示电子邮件栏,如何做到这一

如何在webgrid列中放置条件(如果有)

@grid.GetHtml(tableStyle: "table table-bordered",
                columns: grid.Columns(
                grid.Column("RealName", "Name"),
                grid.Column("UserName", "Email")
                ))
我必须根据条件显示电子邮件栏,如何做到这一点?

一个非常简单的方法是

if(myConditionCanGoInHere) {

   @grid.GetHtml(tableStyle: "table table-bordered",
            columns: grid.Columns(
            grid.Column("RealName", "Name"),
            grid.Column("UserName", "Email")
            ))

}
else{

 @grid.GetHtml(tableStyle: "table table-bordered",
            columns: grid.Columns(
            grid.Column("RealName", "Name"),
            //grid.Column("UserName", "Email")
            ))
// Here remove your email column

))

如果您在将数据放入GUI层之前验证这一点,这将是一件好事。 您必须在控制器中为网格获取正确的数据。因此,您只能在网格中显示数据,而不必介意它是否是正确的数据,因为您已经验证了它

这意味着您必须将if/else放在控制器中,而不是视图中

        public JsonResult GetServiceGridData([DataSourceRequest]DataSourceRequest request)
        {
            var services = ModelTransformer.Transform(Repository.Instance.GetServices());
            foreach (var service in services)
            {
                var filterType = _filterTypes.FirstOrDefault(x => x.Id == service.FilterTypeId);
                service.FilterTypeName = filterType == null ? _filterTypeNoneName : filterType.Name;
            }
            return Json(services.ToDataSourceResult(request));
        }
像这样的例子你可以试试这个

@{
    var gridColumns = new List<WebGridColumn>();
    gridColumns.Add(grid.Column(format: (item) => Html.ActionLink("Select", "Details")));
    if (true)
    {
        gridColumns.Add(grid.Column(format: (item) => Html.ActionLink("Edit", "Edit")));
    }

    gridColumns.Add(grid.Column("UserName", "name"));
    gridColumns.Add(grid.Column("RealName", "RealName"));
}

@grid.GetHtml(columns: grid.Columns(gridColumns.ToArray()));
@{
var gridColumns=新列表();
Add(grid.Column(格式:(item)=>Html.ActionLink(“Select”,“Details”));
如果(真)
{
添加(grid.Column(格式:(item)=>Html.ActionLink(“编辑”、“编辑”));
}
添加(grid.Column(“用户名”、“名称”));
添加(grid.Column(“RealName”、“RealName”);
}
@GetHtml(列:grid.columns(gridColumns.ToArray());
这对我很有效

 @grid.GetHtml(tableStyle: "webGrid",
        headerStyle: "header",
        alternatingRowStyle: "alt",
        selectedRowStyle: "select",
        columns: grid.Columns(




        grid.Column("Is Active",format: (item) =>
            {
                if (item.IsActive == true)
                {
                    return Html.Raw(string.Format("<text><img height='20' width='20' src=\"{0}\" alt=\"Image\"/></text>", Url.Content("~/images/rightmark.png")));
                }
                else
                {
                    return Html.Raw(string.Format("<text><img height='20' width='20' src=\"{0}\" alt=\"Image\"/></text>", Url.Content("~/Content/images/non-preview-photo.gif")));                         
                }
            }, style: "firstColumn",canSort:true),       
        grid.Column("Name", " Name", style: "SecondColumn",canSort:true),       
        grid.Column("Role", "Role", style: "ThirdColumn",canSort:true)
))
@grid.GetHtml(表样式:“webGrid”,
headerStyle:“header”,
alternatingRowStyle:“alt”,
selectedRowStyle:“选择”,
列:grid.columns(
grid.Column(“处于活动状态”,格式:(项)=>
{
如果(item.IsActive==true)
{
返回Html.Raw(string.Format(“,Url.Content(“~/images/rightmark.png”));
}
其他的
{
返回Html.Raw(string.Format(“,Url.Content(“~/Content/images/non-preview photo.gif”);
}
},样式:“第一列”,canSort:true),
grid.Column(“名称”、“名称”、样式:“SecondColumn”、canSort:true),
grid.Column(“角色”,“角色”,样式:“第三列”,canSort:true)
))

我更新代码以接受参数:(Razor视图-Webmatrix)

grid.Column(“未读”,格式:(项)=>
{
如果(item.Unread==true)
{
返回Html.Raw(string.Format(“,@item.id));
}
},canSort:true)

尝试此链接可能与[此链接][1][1]重复:我必须根据条件显示/隐藏列,上面的线程显示或隐藏列值,因此它不会重复。然后将您的问题修改为
如果WebGrid列有其他问题
我正在寻找快速修复好友。然后查看一个:)@AnupWell我无法在控制器中更改,因为它正被多个用户使用。请在我最后的回答中点击“这个”。。。在这里,您不必更改控制器…谢谢您的回答,但我如何使整个列处于状态。因此,如果条件为真,则该列将显示,反之亦然。@Anup检查更新的答案这是一个非常基本的答案检查,如果它对您有效。谢谢@Nilesh,看起来这是最干净的方法
      grid.Column("Unread",format: (item) =>
        {
            if (item.Unread == true)
            {
                return Html.Raw(string.Format("<text><a \"target=\"_blank\" href=\"ViewComments?bvnum={0}\"><img height='20' width='20' border='0' src=\"/images/new_comments.png\" alt=\"Image\"/></text>", @item.id));
            }
            else
            {
                return Html.Raw(string.Format("<text><a \"target=\"_blank\" href=\"ViewComments?bvnum={0}\"><img height='20' width='20' border='0' src=\"/images/comments.png\" alt=\"Image\"/></text>", @item.id));
            }
        }, canSort:true)