Telerik MVC Grid - сортировка останавливает JavaScript - PullRequest
0 голосов
/ 17 февраля 2012

У меня есть страница в MVC3 с использованием сетки Telerik.В сетке для каждой строки есть текстовое поле, в которое я ввожу десятичное число.У меня есть класс css, 'HoursNew', который используется для подключения плагина jQuery ( autoNumeric.js ).У меня также есть функция onBlur, чтобы округлить любой десятичный ввод до ближайшей половины десятичного.Проблема в том, что после сортировки столбца весь JavaScript, похоже, перестает работать.AutoNumeric.js перестает работать вместе с моей функцией, которая запускает onBlur.

    $(document).ready(function () {
    $('.HoursNew').autoNumeric({ pSign: 's', vMin: '-999.5', vMax: '999.5', mRound: 'C', aPad: false });
    $('.HoursNew').blur(function () { roundToHalf(this); });
});

            // Round decimal to nearest .5
            // v is input object
            function roundToHalf(v) {
                var value = v.value;
                var r;
                //alert(v.id);
                var converted = parseFloat(value); // Make sure we have a number
                var decimal = (converted - parseInt(converted, 10)); // Pull the decimal value
                decimal = Math.round(decimal * 10);
                if (decimal == 5) { return (parseInt(converted, 10) + 0.5); } // leave alone if .5
                if ((decimal < 3) || (decimal > 7)) {
                    r = Math.round(converted); // Round up or down to nearest whole number
                } else {
                    r = (parseInt(converted, 10) + 0.5); //round to .5
                }
                //alert(r);
                // reset input value to new value
                $('#' + v.id).val(r);
            }

Страница отлично работает при первой загрузке, только эта проблема после сортировкиЕсть предложения?

1 Ответ

1 голос
/ 17 февраля 2012

У меня есть догадка, что при сортировке сетка выполняет вызов ajax, который отображает новую сетку. Это означает, что все привязки, выполненные вами в $(document).ready, удалены.

Посмотрите эту страницу о событиях на стороне клиента в документации Telerik . Вам нужно будет добавить этот раздел в определение вашей сетки:

.ClientEvents(events => events
    .OnDataBound("onDataBound")

И этот JavaScript для переподключения:

function onDataBound(e) {
    $('.HoursNew').autoNumeric({ pSign: 's', vMin: '-999.5', vMax: '999.5', mRound: 'C', aPad: false });
    $('.HoursNew').blur(function () { roundToHalf(this); });

}
...