Dear All,
I'm using radcontextmenu with radgrid. Normally right click event on all rows of radgrid is showing menus. It is ok. But after i drag and group roomtype column, some rows right click event is showing radcontextmenus and some rows right click event is showing browser default menus. When i debug in browser, showing "TypeError: Cannot read properties of undefined (reading 'getDataKeyValue')" in RadGridID.get_masterTableView().get_dataItems()[currentSelectedRowIndex].getDataKeyValue("ReservationKey")) of javascript file. I searched in google, but not found. Please ask me. What I need to change or code?
.aspx
<telerik:RadGrid ID="RadGrid1" EnableViewState="true" ViewStateMode="Enabled" GridLines="None" MasterTableView-GroupLoadMode="Server"
runat="server" ShowStatusBar="false" AllowSorting="true" ShowGroupPanel="true" ShowFooter="true"
OnNeedDataSource="grdReservation_NeedDataSource" OnSortCommand="grdReservation_SortCommand" OnItemDataBound="grdReservation_ItemDataBound" OnItemCommand="grdReservation_ItemCommand">
<MasterTableView AutoGenerateColumns="false" DataKeyNames="ReservationKey" ItemStyle-Wrap="true" Width="100%" GroupsDefaultExpanded="false"
ClientDataKeyNames="ReservationKey,Status,Remark,SubFolioBalance">
<Columns>
<telerik:GridBoundColumn DataField="Status" HeaderStyle-Width="25px" SortExpression="Status" UniqueName="Status">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="ReservationType" HeaderStyle-Width="25px" SortExpression="ReservationType" UniqueName="Type">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Company" HeaderStyle-Width="160px" HeaderText="Group Name/Company" SortExpression="Company" ItemStyle-Wrap="false"
UniqueName="GroupNameCompany">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="RoomType" HeaderText="RoomType" SortExpression="RoomType" HeaderStyle-Width="80px"
UniqueName="RoomType">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn DataField="Balance" HeaderStyle-Width="70px" HeaderText="Balance" SortExpression="Balance" ItemStyle-HorizontalAlign="Right"
UniqueName="Balance">
</telerik:GridBoundColumn>
</Columns>
<NoRecordsTemplate>
No Records
</NoRecordsTemplate>
</MasterTableView>
<ClientSettings AllowColumnsReorder="true" ReorderColumnsOnClient="true" AllowDragToGroup="true" EnableRowHoverStyle="true" AllowGroupExpandCollapse="false" AllowRowsDragDrop="true">
<Selecting AllowRowSelect="true" EnableDragToSelectRows="false" />
<Resizing AllowColumnResize="True" AllowRowResize="false" ResizeGridOnColumnResize="false" ClipCellContentOnResize="true" EnableRealTimeResize="false" AllowResizeToFit="true" />
<Scrolling AllowScroll="true" UseStaticHeaders="true" ScrollHeight="380px" SaveScrollPosition="true" />
<ClientEvents OnRowDblClick="rowDblClick" OnRowSelected="OnRwSelected" OnRowMouseOver="OnRowMouseOver" OnRowContextMenu="rowContextMenu" />
</ClientSettings>
</telerik:RadGrid>
<telerik:RadContextMenu ID="RadContextMenu1" runat="server" EnableRoundedCorners="true" RenderMode="Lightweight" SkinID="MinimalSetOfTools" CssClass="centered-editor" Width="300px" EnableShadows="true"
OnClientItemClicking="onContextMenuItemClick"
OnClientShowing="onClientContextMenuShowing">
<DefaultGroupSettings ExpandDirection="Auto" Flow="Vertical" />
</telerik:RadContextMenu>
<script src="../JavaScripts/util/Utilities.js" type="text/javascript"></script>
<script src="../JavaScripts/util/WrapperRadGrid.js" type="text/javascript"></script>
<script src="../JavaScripts/bal/Reservation.js" type="text/javascript"></script>
<script src="../../JavaScripts/lib/jquery.blockUI.min.js" type="text/javascript"></script>
<script type="text/javascript">
function ReloadSelectedRow() {
var grid = $find("<%=grdReservation.ClientID%>");
var master = grid.get_masterTableView();
var scrollArea = document.getElementById(grid.get_element().id + "_GridData");
var row = master.get_selectedItems()[0];
currentSelectedRowIndex = row.get_itemIndex();
GlobalObjectControls.ResKey = row.getDataKeyValue("ReservationKey");
if (row) {
if ((row.get_element().offsetTop - scrollArea.scrollTop) + row.get_element().offsetHeight + 20 > scrollArea.offsetHeight) {
//scroll down to selected row
scrollArea.scrollTop = scrollArea.scrollTop + ((row.get_element().offsetTop - scrollArea.scrollTop) +
row.get_element().offsetHeight - scrollArea.offsetHeight) + row.get_element().offsetHeight + 150;
}
//if the position of the the selected row is above the viewable grid area
else if ((row.get_element().offsetTop - scrollArea.scrollTop) < 0) {
//scroll the selected row to the top
scrollArea.scrollTop = row.get_element().offsetTop;
}
}
}
</script>
<script type="text/javascript" id="commonMethods">
var GlobalObjectControls = {};
Sys.Application.add_load(
function loadHandler() {
Sys.Application.remove_load(loadHandler);
ReloadSelectedRow();
});
</script>
<script>
function rowContextMenu(sender, eventArgs) {
currentSelectedRowIndex = eventArgs.get_itemIndexHierarchical();
eventArgs.get_tableView().selectItem(eventArgs.get_itemIndexHierarchical());
var menu = GlobalObjectControls.ContextMenu;
var evt = eventArgs.get_domEvent();
menu.show(evt);
evt.cancelBubble = true;
evt.returnValue = false;
if (evt.stopPropagation) {
evt.stopPropagation();
evt.preventDefault();
}
}
function OnRwSelected(sender, args) {
GlobalObjectControls.ResKey = args.getDataKeyValue('ReservationKey');
currentSelectedRowIndex = args.get_itemIndexHierarchical();
}
function onClientContextMenuShowing(sender) {
enabledisableMenuItems();
}
function enabledisableMenuItems() {
var menu = GlobalObjectControls.ContextMenu;
alert("ok" + currentSelectedRowIndex); // this is ok, index is showing
var reservationkey = GlobalObjectControls.GridReservation.get_masterTableView().get_dataItems([currentSelectedRowIndex]
.getDataKeyValue("ReservationKey"); // this row is showing error "can't read properties of undefined
var status = GlobalObjectControls.GridReservation.get_masterTableView().get_dataItems()[currentSelectedRowIndex].getDataKeyValue("Status");
var reservationType = getReservationType();
menu.enable();
}
function onContextMenuItemClick(sender, args) {
}
</script>