【发布时间】:2012-06-21 16:05:39
【问题描述】:
我们有一个使用 VB.Net 的 ASP.net 3.5 WebForms 应用程序,它已经运行了很多年。在此应用程序中,有一个不会回发某些客户端的 gridview 选择按钮。当我们将 Web 应用程序从 Windows Server 2003 移至 Windows Server 2008R2 上的 IIS 7 时,我们的一些客户端开始出现此问题。
选择按钮在gridview中定义为asp:CommandField ShowSelectButton="True"
它生成如下代码(从 HTML 源代码复制):
a href="javascript:__doPostBack('ctl00$bodyContentPlaceHolder$GridView1','Select$0')" style="color:#333333;">Select</a>
对于一些使用IE(各种版本)的Win XP、Win 7用户,当用户点击生成的按钮时不会回发。已检查所有用户以确保启用了 javascript。对于其他使用IE等浏览器的Win XP、Win 7用户来说,效果很好。 很多谷歌搜索已经找到了关于 Javascript 回发问题的信息,但似乎没有什么合适的。
其他信息:在 GridView Rowdatabound 事件中使用此代码为回发启用了整个 gridview 行:
e.Row.Attributes.Add("onClick", "javascript:__doPostBack('" + Replace(GridView1.ClientID, "_", "$") + "','Select$" + e.Row.RowIndex.ToString + "')")
生成此 HTML:
<tr align="center" valign="top" onClick="javascript:__doPostBack('ctl00$bodyContentPlaceHolder$GridView1','Select$0')"
请注意,Javascript 的读取方式与不工作的 javascript 相同,除了单击行中的其他位置对所有用户都有效。这让我想到了三个可能的问题:
- 链接标签中的 SELECT 按钮是否会导致某些用户无法使用?
- 是否存在可能不同的用户设置?
- 是 Internet 提供商阻止的吗?
【问题讨论】:
-
你能编辑一下,以便我们阅读吗?使用代码块和段落可以为我们提供帮助。
-
哪个版本的IE?不同的版本会带来不同的问题。从上面的项目符号列表中,所有代码都是从客户端浏览器运行的,因此 pt 1 将是浏览器问题(如果之前选择工作),pt 2(没有 IE 设置将阻止回发,除非他们关闭 javascript,pt3(不可能一个 isp 阻止任何东西)。所以它可能是浏览器的 javascript 设置关闭或它的 IE6/7/8 或 9 问题(但我们需要知道哪些浏览器)。