在项目设计中,由于数据结构经常发生变化,我一般采用后台绑定的写法,有时因项目需要在后台将某列调整为GridViewDataHyperLinkColumn列类型,在客户端点击该列的单元格,取该行某列的值做为参数来调用前台的某个js方法,并且在easyUI弹出窗口中显示,在实际项目开发中,遇到了绑定后在极速模式下,可以正常调用,而在IE浏览器(版本号:11)中却将方法做为URL访问,而不执行js方法,并且提示错误。百思不得其解,起初认为IE是不支持这种写法,试了很多种写法也未解决。查询了大量的资料,试验很多种方法,最终问题解决,由于我的项目中采用页面扫描照片的功能,需要引用activeX插件,这个插件需要在兼容模式下运行才能正常,在UC浏览器、360浏览器、firefox浏览器中需要切换至兼容模式下运行网页,所以后台调用前台的方法必须在兼容模式下运行正常才可解决我的问题。费话不说上代码:
后台绑定方法:
GridViewDataHyperLinkColumn colLink = new GridViewDataHyperLinkColumn();
colLink.Caption = "本行修改记录";
colLink.FieldName = "编号"; //列参数设置,在点击超链接时跟传的参数从哪列中取值
colLink.PropertiesHyperLinkEdit.Text = "本行修改记录"; // 显示哪列的内容
colLink.PropertiesHyperLinkEdit.TextField = "本行修改记录"; //显示“本行修改记录”的内容,而不是PropertiesHyperLinkEdit.Text
colLink.Visible = true;
colLink.FixedStyle = GridViewColumnFixedStyle.Left;//显示在表的左侧
//colLink.Settings.ShowFilterRowMenu = DevExpress.Utils.DefaultBoolean.False;
//colLink.Settings.ShowInFilterControl = DevExpress.Utils.DefaultBoolean.False;
colLink.Settings.AllowAutoFilter = DevExpress.Utils.DefaultBoolean.False;//过滤行开关
colLink.Settings.AllowHeaderFilter = DevExpress.Utils.DefaultBoolean.False;
//colLink.PropertiesHyperLinkEdit.Target = "xgjl_disp({0}";//关键:这一句不能加,如果是极速模式不会影响,如果是兼容模式就会打开新窗口,而不在本页弹出窗口
colLink.PropertiesHyperLinkEdit.EnableClientSideAPI =true;
colLink.PropertiesHyperLinkEdit.NavigateUrlFormatString = string.Format("javascript:OnClick=xgjl_disp({0})", "{0}");//客户端弹出窗口并传参(编号)
ASPxGridView1.Columns.Insert(0, colLink); //插入0列位置