如何使用ScrollTo jQuery插件滚动到ASP.NET中的转发器中的特定行?

时间:2010-07-06 16:09:51

标签: c# asp.net jquery scrollto

我有一个简单的转发器,看起来像:

 <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()方法的最佳方法是什么,所以我滚动到刚刚添加的特定行?无论如何我可以在ItemTemplate中标记我的行,这样我就可以通过jQuery轻松选择要滚动的元素吗?

理想情况下,在RefreshOptions()之后,我想执行ScrollTo函数向下滚动到新行。

2 个答案:

答案 0 :(得分:1)

如果您知道行的客户端ID(您可以获得),那么简单地调用它就相对轻松了

$(document).scrollTo("#<row-id-here>", 800);

答案 1 :(得分:0)

将对象添加到数据库时(或之后),获取新插入对象的id。修改转发器以包含带有Visible="false"的Label,以便它不会呈现给客户端。挂钩ItemDataBound事件并根据您抓取的ID检查每个标签。当您找到匹配的行时,您可以获取该行的ID,然后您就可以使用滚动参数。

注意:其他数据绑定控件具有DataKey属性,该属性可用于对象的id并使其更简单。目前还不确定你是否与Repeater绑定,但GridView或ListView值得研究。