Перейти к строке в RadGrid

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

Я пробовал несколько вариантов. Поместить строку в select в данном случае не применимо. Я сейчас попробовал:

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

в ItemDataBound, но:

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

не работает.

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


person Peter Huisman 75    schedule 06.08.2013    source источник


Ответы (1)


попробуйте это Прокрутка до выбранного элемента

Я выбираю элемент в коде в событии с привязкой к данным.

   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;
        }
    }
}

Notice : The function does not work on page postbacks. you should triger directly from javascript (i notice that the ongridcreated event of the grid is not fired on the Telerik example). So a better way is to handle the scrolling with JQuery like this :

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

2) В коде телерика заменить отправителя на var sender = $find("‹%= RadGrid1.ClientID%>");

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

person Zisis Stylianos    schedule 04.03.2014
comment
Хотя эта ссылка может ответить на вопрос, лучше включить сюда основные части ответа и предоставить ссылку для справки. Ответы, содержащие только ссылки, могут стать недействительными, если связанная страница изменится. - person S.L. Barth; 04.03.2014
comment
Что ж, в этой части вы правы, но ответ есть в официальном путеводителе Telerik. Так что просто скопировать и вставить ответ с официальной страницы было бы худшим, я думаю. - person Zisis Stylianos; 04.03.2014
comment
Копипаста может быть многовато, но цитировать можно. У нас даже есть уценка для этого (знак › перед цитируемым текстом). Также — добро пожаловать в Stack Overflow! - person S.L. Barth; 04.03.2014