Telerik 跳转到RadGrid中的行

Telerik 跳转到RadGrid中的行,telerik,radgrid,scrollto,Telerik,Radgrid,Scrollto,我有一个RadGrid,所有行都处于EditForm模式。此Radgrid具有虚拟滚动。我需要跳转(滚动)到特定的行 我试过几种选择。在select中放置一行在这种情况下不适用。我现在试过: RadScriptManager.RegisterStartupScript(第页,typeof(RadGrid),“myScript”,“scrollItemToTop(“+e.Item.ClientID+”);”,true) 在ItemDataBound中,但是: 函数scrollItemToTop(i

我有一个RadGrid,所有行都处于EditForm模式。此Radgrid具有虚拟滚动。我需要跳转(滚动)到特定的行

我试过几种选择。在select中放置一行在这种情况下不适用。我现在试过:

RadScriptManager.RegisterStartupScript(第页,typeof(RadGrid),“myScript”,“scrollItemToTop(“+e.Item.ClientID+”);”,true)

在ItemDataBound中,但是:

函数scrollItemToTop(itemID){
$('.rgVragenPanel')。滚动到(0,$telerik.$($get(itemID)).offset().top);
}

似乎不起作用

有没有关于如何最好地解决这个问题的想法?

试试这个

我在databound事件的代码隐藏中选择该项

以下示例演示了此技术: CopyJavaScript

<script type="text/javascript">
function GridCreated(sender, eventArgs) {
    //gets the main table scrollArea HTLM element  
    var scrollArea = document.getElementById(sender.get_element().id + "_GridData");
    var row = sender.get_masterTableView().get_selectedItems()[0];

    //if the position of the selected row is below the viewable grid area  
    if (row) {
        if ((row.get_element().offsetTop - scrollArea.scrollTop) + row.get_element().offsetHeight + 20 > scrollArea.offsetHeight) {
            //scroll down to selected row  
            scrollArea.scrollTop = scrollArea.scrollTop + ((row.get_element().offsetTop - scrollArea.scrollTop) +
            row.get_element().offsetHeight - scrollArea.offsetHeight) + row.get_element().offsetHeight;
        }
        //if the position of the the selected row is above the viewable grid area  
        else if ((row.get_element().offsetTop - scrollArea.scrollTop) < 0) {
            //scroll the selected row to the top  
            scrollArea.scrollTop = row.get_element().offsetTop;
        }
    }
}

函数GridCreated(发送方、事件参数){
//获取主表滚动区域HTLM元素
var scrollArea=document.getElementById(sender.get_element().id+“_GridData”);
var row=sender.get_masterTableView().get_selectedItems()[0];
//如果选定行的位置低于可视栅格区域
国际单项体育联合会(世界其他地区){
if((row.get_元素().offsetTop-scrollArea.scrollTop)+row.get_元素().offsetSight+20>scrollArea.offsetSight){
//向下滚动到所选行
scrollArea.scrollTop=scrollArea.scrollTop+((row.get_元素().offsetTop-scrollArea.scrollTop)+
row.get_元素().offsetHeight-滚动区域.offsetHeight)+row.get_元素().offsetHeight;
}
//若选定行的位置在可查看栅格区域的上方
else if((row.get_element().offsetTop-scrollArea.scrollTop)<0){
//将所选行滚动到顶部
scrollArea.scrollTop=row.get_元素().offsetTop;
}
}
}

注意:该函数在页面回发上不起作用。您应该直接从javascript触发(我注意到在Telerik示例中没有触发网格的ongridcreated事件)。 因此,更好的方法是使用JQuery处理滚动,如下所示:

1) 为特定网格创建函数

2) 在telerik代码处,将发送方替换为var sender=$find(“”)

3) $(窗口)。加载(函数(){
函数CrolltheGrid();})

虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生变化,只有链接的答案可能会失效。好吧,你在这一部分是正确的,但答案是官方的Telerik指南。所以只需复制粘贴官方页面上的答案,我认为是最糟糕的。复制粘贴可能有点多,但可以引用。我们甚至还有降价(引用文本前面的“>”)。另外-欢迎使用堆栈溢出!
Provide a handler for the client-side GridCreated event.

    In the event handler, locate the selected row using the GridTableView object's get_selectedItems() method.

    Use the RadGrid object's GridDataDiv property to access the DOM element for the scrollable region of the grid.

    Use the DOM element for the row to check if it is visible in the scrollable region. If it is not, set the scrollTop property of the scrollable region to scroll the grid so that the selected row is showing. 
<script type="text/javascript">
function GridCreated(sender, eventArgs) {
    //gets the main table scrollArea HTLM element  
    var scrollArea = document.getElementById(sender.get_element().id + "_GridData");
    var row = sender.get_masterTableView().get_selectedItems()[0];

    //if the position of the selected row is below the viewable grid area  
    if (row) {
        if ((row.get_element().offsetTop - scrollArea.scrollTop) + row.get_element().offsetHeight + 20 > scrollArea.offsetHeight) {
            //scroll down to selected row  
            scrollArea.scrollTop = scrollArea.scrollTop + ((row.get_element().offsetTop - scrollArea.scrollTop) +
            row.get_element().offsetHeight - scrollArea.offsetHeight) + row.get_element().offsetHeight;
        }
        //if the position of the the selected row is above the viewable grid area  
        else if ((row.get_element().offsetTop - scrollArea.scrollTop) < 0) {
            //scroll the selected row to the top  
            scrollArea.scrollTop = row.get_element().offsetTop;
        }
    }
}