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

この不幸なバグに気付いたのはごく最近のことで、非常に長い間問題なく機能していたページでした。これはGoogleChromeバージョン27に固有であり、現在バージョン26を使用しています。

バグ:(コントロール内の任意の場所をクリックすると(スクロールバーが問題の焦点になります)、完全なポストバックが発生します[AutoPostBack属性をtrueに設定した場合])

バグはより高いレベルのスクリプトにある可能性があり、すべてのリストボックスに影響するかどうかはわかりません。複数のページに多数あるため、可能性は低いと思われます。すべてのページでこの動作が見られる場合は、電話がかかってきます。

私たちのソリューションには2つのオプションが含まれていましたが、別のオプションはそれほど上品ではありません。1)非実用的:Google Chromeの更新を待つか、バージョン26を明示的に使用します。これは、インストールの権限や以前のバージョンにロールバックする機能がない大規模なユーザーベースには実用的ではありません。また、何らかの理由で最新バージョンのChromeに対して絶対にテストする必要がある場合も、機能しません。

2)代わりにRadListBoxを使用できるようにするTelerikコントロールにアクセスできますが、ビューステートオーバーヘッドがわずかに多くなります。これは、オプションである場合は、適切なソリューションではない可能性があります。RadListBoxが問題の動作を回避するため、これが選択したオプションでした。

遠い3番目の、実質的に魅力の少ない解決策:ドロップダウンリストなど、データを表示するための他の代替手段を見つけます。特に大量の情報を処理している場合は、2番目の副選択コントロールを使用します。暫定的にはより多くの作業が必要であり、修正が行われたときに変更を元に戻したいと思うでしょう。

これらはすべて平凡な解決策であることを私は知っていますが、それらは可能な回避策です。これがあまり役に立たない場合は申し訳ありません。

于 2013-05-22T17:18:04.350 に答える
2

これは一部のChromeバージョンのバグです(他の人が指摘しているように)。以前のv27リリースのChromeでも同じ動作が見られました。

Chromeを最新バージョンにアップグレードする必要があります。私のバージョンは現在v27.0.1453.116mであり、このリリースで問題が修正されたようです。

于 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

リストボックスのAutoPostBackを無効にし、リストボックスのonClick属性を使用して、__doPostBackを実行するJavaScriptを実行します。これは回避策です。Googleはこの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 に答える
1

これは間違いなくChromeのバグです(egv27.0.1453.110 m)。この答えも参照してください。

于 2013-06-20T11:37:15.503 に答える