【发布时间】:2012-10-17 08:48:50
【问题描述】:
我有一个 Telerik RadGrid。我正在使用自动生成的列,从数据库中读取列定义。我在数据库中存储的列名之一在其文本内容中有一个撇号。我的数据源加载没有问题,但是当我尝试按列过滤(带撇号)时,我收到客户端错误:
Uncaught SyntaxError: Unexpected identifier
我的问题是:如何告诉 Telerik RadGrid 转义撇号,以便即使列的 UniqueName 包含撇号,客户端 Telerik 功能也可以使用?
提前感谢您的帮助,
最好的问候,
拉霍斯阿尔帕德。
【问题讨论】:
-
在数据库列名中使用撇号是一个非常糟糕的主意。最好的解决方案是重命名您的列。
-
不,我在数据库中的列名没有撇号,但是,我在 RadGrid 中的自动生成列是根据用户定义的设置定义的。 RadGrid 的列定义存储在表的数据库行中。该表有一个“ColumnName”列,表中的每一行都有一个 ColumnName 值。本质上,该表的一行在其 ColumnName 字段值中有一个撇号。这些是用户定义的设置,我希望允许他们在列名中放置撇号,SQL 注入和其他有关 ' in varchar 的问题得到处理。
-
我的问题不在于如何将撇号存储在 varchar 值中,也不在于我是否应该将撇号存储在 varchar 中。我必须支持人们根据需要命名他们的列。我已经制定了一种解决方法来绕过 Telerik 在尝试通过其 UniqueName 中具有撇号的列进行过滤时的破解错误,但我希望有一个更好的解决方案,而不是“手动”将 UniqueName 中的撇号替换为其他任何内容并由于前面提到的 hack 解析 HeaderText。
-
还有,你没看懂情况,可能是我的错。我没有说“数据库列”的名称中有撇号,我只是说我从数据库中读取了列定义。这些定义不是模式定义,而是值。所以不,我不会重命名列,也不会更改存储在数据库中的值。
-
您是否尝试过存储 HTML 代码
'而不是'?