Webgrid MVC3-处理列-ASP.NET的空值

时间:2011-06-20 09:23:42

标签: asp.net-mvc-3

如何处理网格中列的空值?

我正在使用webgrid在使用MVC3 asp.NET Grid的webgrid中显示记录。

  var grid = new WebGrid(source: Model,selectionFieldName:"SelectedRow",rowsPerPage: 10, canPage: true, canSort: true, defaultSort: "Absentee.Name");
     @grid.GetHtml(grid.Column("AbsEnd", "AbsEnd"))

如果AbsEnd为空。如何处理此操作以在该列中显示自定义字符串。像价值不存在。

2 个答案:

答案 0 :(得分:6)

抱歉不要误导你:但这是让它运转的方法:

 grid.Column("Absend", format: (item)=> string.IsNullOrEmpty(item.AbsEnd)?string.Empty:item.AbsEnd),

由于

答案 1 :(得分:0)

您的解决方案取决于模型的设置。例如:

 public class MyModel
    {
        [Key]
        [DataMember]
        public Guid Id { get; set; }
        [DataMember]
        public string Containername { get; set; }
        [DataMember]
        public Guid? ChildID { get; set; }
        [DataMember]
        public int? OtherListId { get; set; }
        public virtual ChildModel Child { get; set; }
        public virtual ICollection<OtherList> otherList { get; set; }
}

那么您的网格将需要如下设置:

@vGrid.GetHtml(columns: vGrid.Columns(
   vGrid.Column("ID", header: "ID"),
   vGrid.Column("Child", header: "Raw Drive Label",
      format: (item) => item.Child == null ? new MvcHtmlString("") : item.Child.ID),
   vGrid.Column("otherList", header: "otherList", format: (item) =>
   {
      WebGrid subGrid = new WebGrid(source: item.otherList);
      return subGrid.GetHtml(
       htmlAttributes: new { id = "subT" },
       columns: subGrid.Columns(subGrid.Column("Name")
      )
      );
      })
))

由于“ otherList”是ICollection或任何类型的列表,因此您必须遍历它才能显示数据。

添加以下样式以消除内部表中的表格式,使其看起来像外部表的一部分:

#subT {
        border: none;
        padding: 0;
        margin: 0;
    }
        /*don't show the table header:*/
        #subT > thead {
            display: none;
        }
        #subT > tbody td{
            border: none;
        }

希望这会有所帮助!