如何处理网格中列的空值?
我正在使用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为空。如何处理此操作以在该列中显示自定义字符串。像价值不存在。
答案 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;
}
希望这会有所帮助!