我从后面的代码绑定了一个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?
答案 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。