使用滚动列表框,页面将刷新(不需要)。
此问题仅出现在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;
}
答案 0 :(得分:2)
我们最近才注意到这个不幸的错误,在很长一段时间没有问题的网页上。它特定于谷歌Chrome版本27,我目前使用的是版本26。
错误:(单击控件内部的任何位置 - 滚动条是问题的焦点 - 导致完整的回发[假设您将AutoPostBack属性设置为true])
错误可能是更高级别的脚本,我不确定它会影响我们所有的列表框。似乎不太可能,因为我们在多个页面上有很多,如果所有这些都表现出这种行为,我们就会接到电话。
我们的解决方案包含两个选项,另一个选项不那么优雅: 1)不切实际:等待谷歌浏览器的更新,或明确使用版本26。对于没有安装权限或回滚到以前版本的能力的大型用户库,这是不切实际的。如果您出于某种原因绝对必须针对最新版本的Chrome进行测试,它也无效。
2)我们可以访问Telerik控件,这使得我们可以使用RadListBox,稍微多一些viewstate开销,如果它是一个选项,可能不是一个很好的解决方案。这是我们选择的选项,因为RadListBox可以解决问题行为。
一个遥远的第三个,实际上不太吸引人的解决方案:找到一些其他替代方案来显示您的数据,例如下拉列表,如果您正在处理特别大的信息,可能还有辅助子选择控件。在过渡期间,这是更多的工作,您可能希望在修复时还原您的更改。
我知道所有这些都是平庸的解决方案,但它们可能是变通方法。对不起,如果这没有多大帮助。
答案 1 :(得分:2)
这是某些Chrome版本中的错误(正如其他人所说)。在早期的v27版本中,我在Chrome上获得了同样的行为。
您应该将Chrome升级到最新版本:我的版本目前为27.0.1453.116 m,此版本中的问题似乎已修复。
答案 2 :(得分:2)
这是Chrome的第27版中的问题,更新到最新版本应解决此问题。
http://googlechromereleases.blogspot.co.uk/2013/06/stable-channel-update_18.html
答案 3 :(得分:1)
禁用ListBox的AutoPostBack,使用ListBox的onClick属性来运行为其执行__doPostBack的javascript。这是一个解决方案。我认为谷歌应该修复这个Chrome错误(版本27和28,...)。它,ListBox的AutoPostBack True,适用于所有其他浏览器。 TY Pien。
<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>
答案 4 :(得分:1)
如果列表框中包含SelectionMode="Multiple"
答案 5 :(得分:1)
这绝对是Chrome中的bug(例如v.27.0.1453.110 m)。另见this answer。