2013-08-06 2 views
0

У меня есть RadGrid со всеми строками в режиме EditForm. Этот Radgrid имеет виртуальную прокрутку. Мне нужно прыгать (прокручивать) до определенной строки.Перейти к строке в RadGrid

Я пробовал несколько вариантов. В этом случае неприменимость строки в выборе не применима. Сейчас я попробовал:

RadScriptManager.RegisterStartupScript(Page, typeof(RadGrid), "myScript", "scrollItemToTop('" + e.Item.ClientID + "');", true);

в ItemDataBound, но:

function scrollItemToTop(itemID) { $('.rgVragenPanel').scrollTo(0, $telerik.$($get(itemID)).offset().top); }

не похоже на работу.

Любые мысли о том, как лучше всего это решить?

ответ

1

попробовать это Scrolling to the Selected Item

Я выбираю элемент в код в случае DataBound.

Set one of the items in the control as selected. 
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. 

Следующий пример демонстрирует эту технику: 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; 
     } 
    } 
} 

Примечание: Эта функция не работает на странице постбэков. вы должны triger непосредственно из javascript (я замечаю, что событие ongridcreated в сетке не запускается на примере Telerik). Так лучший способ, чтобы справиться с прокруткой с JQuery, как это:

1) Создание функции для конкретной сетки

2) При коде Telerik замените датчик с вар отправителем = $ найти (»< % = RadGrid1.ClientID%> ");

3) $ (window) .load (function() { thefunctiontoscrollthegrid();});

+0

Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. –

+0

Ну, у вас есть право в этой части, но ответ - официальное руководство Telerik. Поэтому просто копировать-вставить ответ с официальной страницы было бы худшим, я думаю. –

+0

Скопировать-вставить может быть немного, но это нормально, чтобы процитировать. У нас даже есть уценка для этого («>» перед цитируемым текстом). Также - добро пожаловать в переполнение стека! –

Смежные вопросы