У меня проблемы со сценариями проверки с использованием элементов управления telerik - PullRequest
1 голос
/ 15 декабря 2011

Я надеюсь, что кто-то знает ответ на этот вопрос, поскольку я очень плохо знаком с использованием элементов управления Telerik. Вот проблема, у меня есть требование, которое говорит, что я должен установить цвет фона для элемента управления, прикрепленного к элементу проверки, если флаг IsValid был установлен на элементе управления проверки. Более раннее требование, которое у меня было, могло влиять и на это, было установлено фокус на элемент управления, основанный на SetFocusOnError = "true".

Все элементы управления содержатся в asp: UpdatePanel, и для страницы установлен набор главной страницы.

Итак, что я сделал, чтобы установить фокус, я переопределил функцию Validate для класса System.Web.UI.Page следующим образом:

        public override void Validate(string group)
    {
        base.Validate(group);

        // get the first validator that failed
        var validator = GetValidators(group)
            .OfType<BaseValidator>()
            .FirstOrDefault(v => !v.IsValid);

        // set the focus to the control
        // that the validator targets
        if (validator != null)
        {
            //Check to see if SetFocusOnError was set.
            if (validator.SetFocusOnError == true)
            {
                Control target = validator
                    .NamingContainer
                    .FindControl(validator.ControlToValidate);

                if (target != null)
                    target.Focus();
            }
        }
    }

Это работает и устанавливает фокус на элемент управления. Следующим, что я сделал, была следующая строка на моей веб-странице:

                var OriginalValidatorUpdateDisplay = null;

            if (typeof (ValidatorUpdateDisplay) == 'function') {
                OriginalValidatorUpdateDisplay = ValidatorUpdateDisplay;
                ValidatorUpdateDisplay = NewValidatorUpdateDisplay;
            }

            function NewValidatorUpdateDisplay(val) {
                OriginalValidatorUpdateDisplay(val);
                ValidateControls();
            }

            function ValidateControls() {
                if (window.Page_Validators) {
                        for (var vI = 0; vI < Page_Validators.length; vI++) {
                            var vValidator = Page_Validators[vI];
                            if (vValidator.isvalid) {
                                $("#" + vValidator.controltovalidate).removeClass("error");
                                if ($("#" + vValidator.controltovalidate).parent().find('.riTextBox').length > 0) {
                                    $("#" + vValidator.controltovalidate).parent().removeClass("error");
                                }
                            }
                            else {
                                $("#" + vValidator.controltovalidate).addClass("error");
                                if ($("#" + vValidator.controltovalidate).parent().find('.riTextBox').length > 0) {
                                    $("#" + vValidator.controltovalidate).parent().addClass("error");
                                }
                            }
                        }
                    }                
            }                  

Однако, когда вы загружаете страницу и отправляете страницу для проверки в первый раз, css не меняется, но если вы делаете это снова, это делает. О, и AddClass просто добавляет

    .error .riTextBox
{
    background-color: lightpink !important;
    z-index:6001;
}

к контролю.

Кто-нибудь работал с таким сталкивался раньше?

О, я должен также отметить, что если я удаляю элементы управления Telerik и использую элементы управления asp textbox, все работает как надо, но я не могу удалить элементы управления Telerik из проекта.

...