DevExpress 9.3 PropertiesText ClientInstanceName - document.GetElementById问题

时间:2014-03-27 16:10:26

标签: javascript devexpress

我从后面的代码绑定了一个ASPxGridView。给我提问的专栏有以下定义:

<dx:GridViewDataTextColumn Caption="Code Special" FieldName="Code" VisibleIndex="14"
                                HeaderStyle-Wrap="true" Visible="false">
                                <EditFormSettings Visible="false" VisibleIndex="14" CaptionLocation="Top" />
                                <PropertiesTextEdit Width="100%" ClientInstanceName="codeSpecialProject">
                                </PropertiesTextEdit>
                            </dx:GridViewDataTextColumn>

我在javascript中使用PropertiesTextEdit的ClientInstanceName来查找当行处于编辑模式并设置特定值时的textobx控件。以下Javascript:

      function OnGetRowValues(values) {
        document.getElementById(codeSpecialProject.uniqueID).value = values;
    }

上面的代码在兼容性视图(IE 7)中工作,但在Chrome和其他版本的IE中抛出了一个null异常。有错误的行:

 document.getElementById(codeSpecialProject.uniqueID) // is null

我正在使用DevExpress 9.3版本。我认为这可能与DevExpress如何呈现aspx有关。

但为什么它只适用于IE7?

1 个答案:

答案 0 :(得分:0)

问题在于

codeSpecialProject.uniqueID

返回控件的name标记而不是id标记。

IE 7有一个问题,允许document.getElementById也通过名称标签识别控件,而不仅仅是他们的ID。由于IE 7的这个问题(bug),它在IE 7中有效,但在所有其他浏览器中都失败了。

有关问题here的详细信息。

<强>解决方案

PropertiesTextEdit的ClientInstanceName(ASPxClientTextBox

 <PropertiesTextEdit Width="100%" ClientInstanceName="codeSpecialProject">
                            </PropertiesTextEdit>

创建用于JavaScript

codeSpecialProject

有几种客户端方法。 要更改其文本,应使用以下方法:

codeSpecialProject.SetValue('text')

有关devexpress客户端方法的更多信息here