无法读取null的属性'length':在用作radprompt回调的嵌套函数中使用`sender.set_selectedToggleStateIndex(val)`

时间:2014-11-14 17:26:51

标签: telerik

我在嵌套函数中调用sender.set_selectedToggleStateIndex(val)时用“ TypeError:无法读取null 的属性'长度'< strong> radprompt callback 。

发件人是一个按钮(ButtonType = Toggle; ToggleType = CustomToggle)。

虽然这可能不相关:radButton是通过Custom GridTemplateColumn在radgrid中启动的。

OnToggleValueChangingResultHandler = function (sender, e, args, result) {
    if ((result) ? result.isValid : false) {
        return true;
    } else {
        if (result.StatusCode == 200) {
            radprompt(result.message, OnToggleValueChangingPromptCallBackFn, 400, 350, null, result.title || "Prompt - Override", false);
        } else {
            radalert(result.message || "Internal Error Occurred!", 400, 350, result.title || "Alert - Error", null, null);
        }
        return false;
    }
    function OnToggleValueChangingPromptCallBackFn(promptArgs) {
        promptArgs = promptArgs || { "override": false, "note": "" };
        if (promptArgs.override && promptArgs.note.length > 0) {
            args.Override = promptArgs.override;
            args.OverrideNote = promptArgs.note;
            var result = Paysheet.XHR.POST(args._uri, args);
            result.isValid = true;
            if ((result) ? result.isValid : false) {
                // $find(sender.id).set_selectedToggleStateIndex(args.newIndex);
                sender.set_selectedToggleStateIndex(args.newIndex);

            } else {
                if (result.StatusCode == 200) {
                    radalert(result.message || "Override request denied!", 400, 350, result.title || "Alert - Override Denied", null, null);
                } else {
                    radalert(result.message || "Internal Error Occurred!", 400, 350, result.title || "Alert - Error", null, null);
                }
            }
        } else {
            // ensuring the control retains the same value; for the prompt is async;
        }
    }
}

这种模式似乎可以与radcombobox和一系列radtextbox一起使用。此外,eventArgs似乎更强大。

我怀疑这个问题源于ClientState持久性和引用:controlStates和/或viewState被丢失。

如果我尝试在PromptCallbackFn中调用sender.get_selectedToggleState()sender.get_selectedToggleStateIndex(),则会收到错误消息,指出 this._functionality 未定义。 _functionality似乎与controlstate有关。

注意:

sender.get_clientStateFieldID()正确返回ClientID,但$find(sender.get_clientStateFieldID())会返回null

sender.get_toggleStateData()正确返回数据。但 sender.get_toggleStates()会返回null

sender.get_parent()返回null。

1 个答案:

答案 0 :(得分:0)

答案是设置 RadButton Autopostback = false

如此轻微的疏忽。

由于这些控件的性质,我不会注意到回发。