ASP.NET - 在Datarow上单击,从DataTable顶部获取像素数

时间:2014-08-22 23:29:03

标签: jquery asp.net datatable scrolltop asprepeater

某些背景:

我有一个使用asp:Repeater显示数据的数据表。

我使用了滚动和分页的组合。单击一行时,数据表将重新加载并滚动到顶部。

我正在使用scrollTop()将之前点击的行滚动到视图中。

scrollTop()将顶部的像素距离作为参数。我有一个on click函数用于显示所单击行的详细信息的行。

问题:

我试图找出一种方法来计算从数据表顶部到所选行的像素距离,这样我就可以将它用作scrollTop()的参数

以下是数据表的格式:

<table id="tblId" class="dataTables_display">
    <thead>
        <tr>
            //a bunch of <th tags>
        </tr>
    </thead>
    <tbody>
    <asp:Repeater ID="rptCraft" runat="server" OnItemDataBound="rptCraft_ItemDataBound">
        <ItemTemplate>
            <tr>
                <td style="display:none;" class="rowClick"><asp:Literal ID="litId" runat="server" text='<%# DataBinder.Eval(Container.DataItem, "Id") %>'/></td>
                <td><asp:CheckBox ID="chkDelete" runat="server" AutoPostBack="false" /></td>
                <td><asp:Literal ID="litDescription" ClientIDMode="Static" runat="server" Text='<%# Eval("Description")%>'/></td>   
             </tr>
         </ItemTemplate>                
     </asp:Repeater>
     </tbody>

这是点击功能:

        $("#tblId tbody tr").live("click", function (event) {

        var cell = $(this).children("td:first");
        var id = jQuery.trim(cell.text());        //get id code

        if (id != "" && !isNaN(id)) {
            //some code that accesses DB and shows details of row
        }
    });

我的猜测是我可以在点击功能中存储点击行的像素距离,然后用它来调用scrollTop()。

有没有简单的方法来计算这个像素距离?或者有更好的方法来滚动之前点击的行吗?

1 个答案:

答案 0 :(得分:0)

对于'this.offsetTop'的简单引用就是我在点击功能中所需的全部内容。 我将此值作为参数传递给scrollTop()并获得了我需要的功能。

offsetTop返回从父元素顶部位置到调用者顶部位置的像素距离。