1

パネル内にデータリストがあります

<asp:Panel ID="Panel1" runat="server"  ScrollBars="Vertical">
  <asp:DataList ID="DataList1" runat="server" RepeatDirection="Horizontal"  OnItemDataBound="DataList1_ItemDataBound" CaptionAlign="Left">
    <ItemTemplate>
       <asp:ImageButton ID="btn1" runat="server" ImageUrl='<%#"~/Images.ashx?Name=" +DataBinder.Eval(Container.DataItem, "Path") %>'
           OnCommand="Item_Command" CommandArgument='<%# Eval("Id").ToString() +";"+Eval("Path")%>' />
    </ItemTemplate>
  </asp:DataList>
</asp:Panel>

Item_Command で、境界線や色などのスタイルを btn1 に追加し、選択したアイテムの ID を取得しています

string[] str = e.CommandArgument.ToString().Split(';');
Id = Convert.ToInt32(str[0]);

アイテムページがジャンプしていることを選択しているときに、ブラウザーのスクロールバーを下にスクロールし、画像ブラウザーのスクロールが上になり、再び下に来ることを選択したとします。Item_Command で、外側にある他のいくつかのボタンを有効または無効にしていますデータリスト、更新パネル内にデータリストを保持している場合、他のすべてのbtnが有効または無効になっていないため、更新パネルを使用していません。更新パネル内にすべてのコントロールがあります。イベントが発生した後にブラウザのスクロール位置を保持する方法を試しましたが、機能しません。設定しています

Page.MaintainScrollPositionOnPostBack = true;
AutoEventWireup="true"

それも私のために働いていません。C# で VS 2010、4.0 を使用しています。

ユーザーがデータリスト項目をクリックしたときに、ページのジャンプを停止し、panel1 とブラウザのスクロール位置の両方を維持する方法を教えてください。

高度なありがとう..

4

3 に答える 3

2

さて、ここに考えがあります:ページのスクロールを維持するためにページ全体をカバーする1つの大きな更新パネルを使用するか、更新したいすべてのアイテムをカバーするために複数の更新パネルを使用してください!

于 2012-03-07T07:58:47.573 に答える
2

このような画像ボタンのクライアントクリックイベントでクライアント側関数を使用します

javascript:void(0);

、それは更新パネルで私のために働きます、

<asp:ImageButton OnClientClick="javascript:void(0);" ID="btn1" runat="server" ImageUrl="~/Help2.png" AlternateText="asas"/>

編集

  1. ボタンとデータリストを updatePanel 内に配置します。設定

UpdateMode=条件付き

udpatePanel 用。

  1. dataList 行で操作を実行するとき。このように更新パネルを手動で更新するだけです

// 画像ボタン イベント

YourUpdatePanel.Update();

これは、以前に投稿したものと相まって、問題を解決するはずです。また、上記を使用して MainScrollPositionOnPostBack=true を必要としない場合もあります。

ダミアン。

于 2012-03-07T07:31:40.997 に答える
0

MaintainScrollPositionOnPostbackPage タグ内で trueを設定してみてください:

 <%@ Page (...) MaintainScrollPositionOnPostback="true" (...) %> 
于 2012-03-07T08:04:30.017 に答える