5

使用滚动列表框,页面将刷新(不需要)。

此问题仅存在于 chrome 中(版本 27)。在其他浏览器中它可以正常工作。

.aspx 文件:

<asp:Label runat="server" ID="label1" ></asp:Label>
<asp:ListBox ID="ListBox1" runat="server"
    OnSelectedIndexChanged="ListBox1_SelectedIndexChanged"
    DataValueField="f1" DataTextField="f2" DataSourceID="SqlDataSource1" 
    Rows="15" AutoPostBack="true" >
</asp:ListBox>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
    SelectCommand="sp1" SelectCommandType="StoredProcedure"
    ConnectionString="<%$ ConnectionStrings:ConnectionString1 %>">
</asp:SqlDataSource>

.cs 文件:

protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
    label1.Text = ListBox1.SelectedItem.Text;
}
4

6 回答 6

2

我们最近才注意到这个不幸的错误,在一个已经运行了很长时间没有问题的页面上。它特定于 Google Chrome 27 版,我目前使用的是 26 版。

错误:(单击控件内的任意位置 - 滚动条是问题的焦点 - 会导致完整的回发 [假设您将 AutoPostBack 属性设置为 true])

该错误可能存在于更高级别的脚本中,我不确定它会影响我们所有的列表框。这似乎不太可能,因为我们有很多,在多个页面上,如果所有页面都表现出这种行为,我们就会接到电话。

我们的解决方案包含两个选项,另一个选项不太优雅:1) 不切实际:等待 Google Chrome 的更新,或明确使用版本 26。这对于没有安装权限或回滚到以前版本的能力的大型用户群来说是不切实际的。如果您出于某种原因绝对必须针对最新版本的 Chrome 进行测试,它也不起作用。

2)我们可以访问 Telerik 控件,这使我们能够使用 RadListBox 来代替,稍微多一点的视图状态开销,这对您来说可能不是一个好的解决方案,如果它是一个选项的话。这是我们选择的选项,因为 RadListBox 逃避了问题行为。

一个遥远的第三个,明显不那么吸引人的解决方案:找到一些其他的显示数据的替代方法,例如下拉列表,如果您正在处理特别大的信息集,可能带有辅助子选择控件。在此期间,这需要更多的工作,并且您可能希望在进行修复时恢复您的更改。

我知道所有这些都是平庸的解决方案,但它们是可能的解决方法。抱歉,如果这没有多大帮助。

于 2013-05-22T17:18:04.350 回答
2

这是某些 Chrome 版本中的错误(正如其他人所指出的)。在早期的 v27 版本中,我在 Chrome 上得到了相同的行为。

您应该将 Chrome 升级到最新版本:我的版本目前是 v 27.0.1453.116 m,这个问题似乎在这个版本中得到了解决。

于 2013-06-19T15:08:08.933 回答
2

这是 Chrome v27 中的一个问题,更新到最新版本应该可以解决这个问题。

http://googlechromereleases.blogspot.co.uk/2013/06/stable-channel-update_18.html

于 2013-06-27T08:42:58.777 回答
1

这绝对是 Chrome 中的一个错误(egv27.0.1453.110 m)。也看到这个答案

于 2013-06-20T11:37:15.503 回答
1

禁用 ListBox 的 AutoPostBack,使用 ListBox 的 onClick 属性运行 javascript 为它执行 __doPostBack。这是一个解决方法。我认为谷歌应该修复这个 Chrome 错误(版本 27 和 28,...)。它是 ListBox 的 AutoPostBack True,在所有其他浏览器上都可以正常工作。TY 皮恩。

<script type="text/javascript">
function mypostback(id, parameter)
{
  __doPostBack(id, parameter)
}
</script>

<asp:ListBox ID="lstbox_id" runat="server" onclick="mypostback('lstbox_id','')">
</asp:ListBox>
于 2013-05-29T20:14:10.947 回答
1

如果列表框有,JavaScript 函数 mypostback 不起作用SelectionMode="Multiple"

于 2013-06-01T17:54:04.153 回答