0

我想在 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 查询方面,但我也没有成功。生活很艰难;-)

4

2 回答 2

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>
)    
于 2012-09-30T09:03:50.703 回答
0

替换=!通过 != 在 HTML 标记中。

在 SQL 中,您可以使用 ISNULL (SQL Server)、IFNULL (MySQL) 或类似的其他数据库将 NULL 替换为“”。

例如:SELECT ISNULL(T.Name, '') AS Title, ...

于 2012-09-30T19:38:00.000 回答