Now the problem lies in that the screen boundary detection doesn't work, my context menu is always clipped on the bottom and on the right of the page. The scrollbars apear but the context menu doesn't scroll into view. The code to open the context menu :
DocroomPageController.prototype.ShowContextMenu = function(e, row, LoadDelegate, subparam) {
PageController().PreventContextTimeout();
PageController().HideContextMenu();
var menu = PageController().GetContextMenu();
menu.hide();
if (menu.get_items().get_count() > 0) {
menu.get_items().clear();
}
this.contextevent = e;
if (!subparam) {
LoadDelegate(row);
}
else {
LoadDelegate(row, subparam);
}
menu.show(e);
$telerik.cancelRawEvent(e);
}
DocroomPageController.prototype.ContextCompleteCallback = function(ResponseObject, ResponseAsXml, ResponseAsText) {
var menu = this.GetContextMenu();
var i;
for (i = 0; i < ResponseObject.length; i++) {
var childItem
var exists = false;
if (menu.get_items().getItem(i)) {
exists = true;
childItem = menu.get_items().getItem(i);
childItem.set_text(ResponseObject[i].Text);
childItem.set_value(ResponseObject[i].Value);
}
else {
childItem = new Telerik.Web.UI.RadMenuItem();
childItem.set_text(ResponseObject[i].Text);
childItem.set_value(ResponseObject[i].Value);
}
if (ResponseObject[i].isSeparator == true) {
childItem.set_isSeparator(ResponseObject[i].isSeparator);
}
if (ResponseObject[i].Image) {
// alert(ResponseObject[i].Image);
childItem.set_imageUrl('./Images/' + ResponseObject[i].Image);
}
if (!exists) {
menu.get_items().add(childItem);
}
childItem.set_navigateUrl(ResponseObject[i].NavigateUrl);
if (!childItem.get_visible()) {
childItem.show();
}
}
}
with an example of a loaddelegate :
DocroomPageController.prototype.LoadContextItems =
function(item) {
ContextMenus.GetObjectContextMenuItems(item, delegate(PageController(), PageController().ContextCompleteCallback), delegate(PageController(), PageController().ErrorCompleteCallback));
}
We are using the context menu within pages loaded in a radpane.