【问题标题】:Telerik RadGrid Auto Generated Column with apostropheTelerik RadGrid 自动生成的带有撇号的列
【发布时间】: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 代码 ' 而不是 '?

标签: telerik escaping


【解决方案1】:

我已经想出了一个答案,如果有人有更好的选择,我很乐意接受他/她的答案。

在获取数据源之前,我将列的键中的撇号替换为某些内容,并在 RadGrid 的 ColumnCreated 事件中将列的 HeaderTexts 中的某些内容替换为撇号。这样,用户将在标题文本中看到撇号,并且在逻辑背景中使用其他东西代替撇号,以确保解决 Telerik 无法处理包含撇号的列标识符的错误。

【讨论】:

    【解决方案2】:

    “问题已在我们的 2015 年第一季度测试版中修复”

    http://www.telerik.com/forums/apostrophe-in-radgrid-filtering-causing-javascript-error

    【讨论】:

      猜你喜欢
      • 2012-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-15
      • 1970-01-01
      相关资源
      最近更新 更多