我在嵌套函数中调用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。
答案 0 :(得分:0)
答案是设置 RadButton 的Autopostback = false
。
如此轻微的疏忽。
由于这些控件的性质,我不会注意到回发。