1

次のような単純なリピーターがあります。

 <asp:Repeater runat="server" ID="rptOptions" OnItemDataBound="rptOptions_ItemDataBound">
     <HeaderTemplate>
         <thead>
             <tr>
                 <td class="GridHeader">Account</td>    
                 <td class="GridHeader">Margin</td>  
                 <td class="GridHeader">Symbol</td>  
                 <td class="GridHeader">Usymbol</td>  
             </tr>
         </thead>
     </HeaderTemplate>
     <ItemTemplate>
         <tbody>
             <tr runat="server" ID="trOption">
                 <td class="GridRow"><asp:Label runat="server" ID="lblOptionAccount"></asp:Label></td>
                 <td class="GridRow"><asp:Label runat="server" ID="lblOptionMargin"></asp:Label></td>
                 <td class="GridRow"><asp:Label runat="server" ID="lblOptionSymbol"></asp:Label></td>
                 <td class="GridRow"><asp:Label runat="server" ID="lblOptionUsymbol"></asp:Label></td>                         
             </tr>
         </tbody>
     </ItemTemplate>
 </asp:Repeater>

さて、コード ビハインドには、データベースに行を追加/挿入するイベントが発生します。これが発生した後、データベースからオプションの新しいリストを再度取得し、それらをリピーターに再バインドします。これは更新パネル内で行われるため、ユーザーのためにリストがすぐに更新されます。

protected void lbtnAddOptionSave_Click(object sender, EventArgs e)  
{
    SelectedOption = new Option()
    {
        Account = txtAddOptionAccountNumber.Text,
        Margin = chkAddOptionMargin.Checked,
        Symbol = txtAddOptionSymbol.Text,
        Usymbol = txtAddOptionUsymbol.Text,
    };

    Presenter.OnAddOption(); // Insert new option into database
    RefreshOptions(); // Re-get list of options, bind them to repeater
}

さて、私がやりたいと思っていることは、jQuery ScrollTo プラグインを使用して、新しく追加された行に直接スクロールすることです。

jQuery プラグインで ScrollTo() メソッドを呼び出して、追加したばかりの特定の行にスクロールする最良の方法は何でしょうか? jQueryを介してスクロールする要素を簡単に選択できるように、ItemTemplateで行をマークできる方法はありますか?

理想的には、RefreshOptions() の直後に、ScrollTo 関数を実行して新しい行までスクロールしたいと考えています。

4

2 に答える 2

1

行のクライアント側の ID (取得できる) がわかっている場合、単純に呼び出すのは比較的簡単です。

$(document).scrollTo("#<row-id-here>", 800);
于 2010-07-06T16:31:22.237 に答える
0

オブジェクトをデータベースに追加するとき(またはその直後)に、新しく挿入されたオブジェクトのIDを取得します。リピーターを変更しVisible="false"て、クライアントにレンダリングされないようにラベルを含めます。イベントにフックして、ItemDataBound取得したIDに対して各ラベルを確認します。一致する行が見つかると、その行のIDを取得して、スクロールパラメータに使用できるようになります。

注:他のデータバインドコントロールには、オブジェクトのIDに使用できるDataKeyプロパティがあり、これを少し簡単にすることができます。この時点でリピーターに縛られているかどうかはわかりませんが、GridViewまたはListViewを調べる価値があるかもしれません。

于 2010-07-06T20:45:50.407 に答える