我想在webgrid列中显示一些连接字段,并在连接字段具有空值时收到此错误
SQL查询:
SELECT *, T.Name AS Title, PT.Name AS PropertyType
FROM Properties AS P
LEFT OUTER JOIN Owners_Properties AS OP ON OP.PropertyId = P.PropertyId
LEFT OUTER JOIN Owners AS O ON O.OwnerId = OP.OwnerId
LEFT OUTER JOIN PropertyTypes AS PT ON PT.PropertyTypeId = P.PropertyTypeId
LEFT OUTER JOIN Titles AS T ON T.TitleId = O.TitleId
WHERE P.CondoId=@0 AND P.PropertyId=@1
HTML标记:
propertyGrid.Column("Propriétaire", format: (item) => item.Title+ ' ' + item.FirstName+ ' ' + item.LastName)
当'两个连续字段'为NULL
时会发生此问题我尝试按以下方式修改HTML代码:
propertyGrid.Column("Owner", format: (item) => @Html.Raw((item.Title=!null) ? (item.Title+ ' ') : "")+ (item.FirstName=!null) ? (item.FirstName+ ' ') : "")+ ((item.LastName=!null) ? item.LastName : "")))
也应该可以避免返回这些NULL值,但是在SQL查询方面,但我也没有成功。生活很艰难; - )
答案 0 :(得分:1)
我建议您使用视图模型并在其上添加一个属性来设置值:
public string FormattedOwner
{
get
{
return string.Format("{0} {1} {2}", Title, FirstName, LastName);
}
}
现在在您的视图中,只需使用此新视图模型属性将列绑定到:
propertyGrid.Column(columnName: "FormattedOwner", header: "Propriétaire")
如果您不想遵循良好做法并使用视图模型,您可以随时将视图转换为意大利面条代码:
propertyGrid.Column(
header: "Propriétaire",
format: @<text>@string.Format("{0} {1} {2}", item.Title, item.FirstName, item.LastName)</text>
)
答案 1 :(得分:0)
替换=! by!=在HTML标记中。
在SQL中,您可以使用ISNULL(SQL Server),IFNULL(MySQL)或类似的其他数据库将NULL替换为“”。
E.g: SELECT ISNULL(T.Name,'')AS Title,...