I have a RadGrid and am using the OnRowContextMenu="RowContextMenu". I am trying to get the cellindex. It works perfect for
GridBoundColumn but it comes back undefined for all the GridTemplateColumn.
function RowContextMenu(sender, eventArgs) {
var menu = $find("<%=RadMenu1.ClientID %>");
var evt = eventArgs.get_domEvent();
if (evt.target.tagName == "INPUT" || evt.target.tagName == "A") {
return;
}
var index = eventArgs.get_itemIndexHierarchical();
document.getElementById("radGridClickedRowIndex").value = index;
var value = eventArgs.get_domEvent().target.innerHTML;
document.getElementById("radGridClickedCellValue").value = value;
var masterTable = sender.get_masterTableView();
var cIndex = eventArgs.get_domEvent().target.cellIndex;
var colName = masterTable.getColumnUniqueNameByCellIndex(getHeaderRow(sender), cIndex)
document.getElementById("radGridClickedColName").value = colName;
sender.get_masterTableView().selectItem(sender.get_masterTableView().get_dataItems()[index].get_element(), true);
menu.show(evt);
evt.cancelBubble = true;
evt.returnValue = false;
if (evt.stopPropagation) {
evt.stopPropagation();
evt.preventDefault();
}
}
function getHeaderRow(sender) {
var masterTable = sender.get_masterTableView();
masterTable.HeaderRow == null ? sender.get_masterTableViewHeader().get_element() : masterTable.HeaderRow;
}
Any help is appreciated. Thanks
3 Answers, 1 is accepted
Basically, there is no straightforward potion to determine the cellindex here. One possible option is to use for all cells an approach similar to this one:
http://www.telerik.com/help/aspnet-ajax/grdselectingcells.html
I hope this gets you started properly.
All the best,
Yavor
the Telerik team
Instantly find answers to your questions on the new Telerik Support Portal.
Watch a video on how to optimize your support resource searches and check out more tips on the blogs.
| <telerik:GridTemplateColumn DataField="RequestedCompanyName" |
| DefaultInsertValue="" SortExpression="RequestedCompanyName" |
| HeaderText="Member Requested" |
| UniqueName="RequestedCompanyName"> |
| <ItemTemplate> |
| <asp:Panel ID="PanelLink" runat="server"> |
| <asp:LinkButton ID="LinkButton1" runat="server" CommandName="RequestedCompanyName"><%# DataBinder.Eval(Container.DataItem, "RequestedCompanyName") %></asp:LinkButton> |
| </asp:Panel> |
| <asp:Panel ID="PanelLabel" runat="server" Visible="false"> |
| <%# DataBinder.Eval(Container.DataItem, "RequestedCompanyName") %> |
| </asp:Panel> |
| </ItemTemplate> |
| </telerik:GridTemplateColumn> |
| function RowContextMenu1(sender, eventArgs) { |
| var menu1 = $find("<%= RadContextMenu1.ClientID %>"); |
| var menu2 = $find("<%= RadContextMenu2.ClientID %>"); |
| var domEvent = eventArgs.get_domEvent(); |
| var source = domEvent.target || domEvent.srcElement; |
| var index = eventArgs.get_itemIndexHierarchical(); |
| var masterTable = sender.get_masterTableView(); |
| // clear all of the selections |
| masterTable.clearSelectedItems(); |
| var cellIndex; |
| //select the current row |
| masterTable.selectItem(masterTable.get_dataItems()[index].get_element()); |
| cellIndex = domEvent.target.cellIndex; |
| if (cellIndex == null) { |
| $telerik.cancelRawEvent(domEvent); |
| return false; |
| } |
| var column = masterTable.get_columns()[cellIndex]; |
| var uniqueName = column.get_uniqueName(); |
| var DataItem = masterTable.get_dataItems()[index]; |
| var cell = DataItem.get_cell("RequestedCompanyID"); |
| var nRequestedCompanyID = cell.outerText; |
| if (uniqueName == "CompanyName") { |
| menu1.show(domEvent); |
| } |
| else if (uniqueName == "RequestedCompanyName") { |
| if (nRequestedCompanyID == "0") { |
| var item = menu2.findItemByValue("GIP"); |
| item.disable(); |
| } |
| menu2.show(domEvent); |
| } |
| else { |
| menu1.hide(); |
| menu2.hide(); |
| eventArgs.set_cancel(true); |
| $telerik.cancelRawEvent(domEvent); |
| return false; |
| } |
| $telerik.cancelRawEvent(domEvent); |
| } |
| function RowContextMenu1(sender, eventArgs) { |
| var menu1 = $find("<%= RadContextMenu1.ClientID %>"); |
| var menu2 = $find("<%= RadContextMenu2.ClientID %>"); |
| var domEvent = eventArgs.get_domEvent(); |
| var source = domEvent.target || domEvent.srcElement; |
| var index = eventArgs.get_itemIndexHierarchical(); |
| var masterTable = sender.get_masterTableView(); |
| // clear all of the selections |
| masterTable.clearSelectedItems(); |
| var cellIndex = domEvent.target.cellIndex; |
| //select the current row |
| masterTable.selectItem(masterTable.get_dataItems()[index].get_element()); |
| if (domEvent.target.id.indexOf("LinkButton1") > 0 || |
| domEvent.target.id.indexOf("PanelLabel") > 0) { |
| var columns = masterTable.get_columns(); |
| for (cellIndex = 0; |
| cellIndex != columns.length && columns[cellIndex].get_uniqueName() != "RequestedCompanyName"; |
| cellIndex++); |
| } |
| if (cellIndex == null) { |
| $telerik.cancelRawEvent(domEvent); |
| return false; |
| } |
| var column = masterTable.get_columns()[cellIndex]; |
| var uniqueName = column.get_uniqueName(); |
| var DataItem = masterTable.get_dataItems()[index]; |
| var cell = DataItem.get_cell("RequestedCompanyID"); |
| var nRequestedCompanyID = cell.outerText; |
| if (uniqueName == "CompanyName") { |
| menu1.show(domEvent); |
| } |
| else if (uniqueName == "RequestedCompanyName") { |
| var item = menu2.findItemByValue("GIP"); |
| if (nRequestedCompanyID == "0") |
| item.disable(); |
| else |
| item.enable(); |
| menu2.show(domEvent); |
| } |
| else { |
| menu1.hide(); |
| menu2.hide(); |
| eventArgs.set_cancel(true); |
| $telerik.cancelRawEvent(domEvent); |
| return false; |
| } |
| $telerik.cancelRawEvent(domEvent); |
| } |