Hello all,
My problem is this: I have a drop down list inside of a context menu. When the selected index changes, I want to open that specific page view (handled by GoToWindow() method) and close the drop down and the parent context menu.
However, I can't figure out a way to have the context menu know when I am clicking on something in the child DropDownList element.
Here's my code for the context menu opening:
private
void
MPLList_GridView_ContextMenuOpening(
object
sender, ContextMenuOpeningEventArgs e)
{
List<BPPriceMstr> myBP =
new
List<BPPriceMstr>();
FactoryOrder bpOrder =
new
FactoryOrder();
int
index = MPLList_GridView.Rows.IndexOf(MPLList_GridView.CurrentRow);
bpOrder.AddOrderLine(
"CardCode"
, masterPriceLists[index].Business.CardCode);
BPPriceMstrFactory bpFactory =
new
BPPriceMstrFactory();
tmpDDL_MPLLists = bpFactory.BuildPriceMstr(bpOrder);
/////////////////////////////
//new code -- RRM and BRA
/////////////////////////////
//create empty drop down list
RadDropDownList mplDropDownList =
new
RadDropDownList();
mplDropDownList.Text =
"Select MPL"
;
//iterate over all MPLs and add them to the drop down list
foreach
(BPPriceMstr mpl
in
tmpDDL_MPLLists)
{
mplDropDownList.Items.Add(
new
RadListDataItem(mpl.StartDate.ToShortDateString() +
" - "
+ mpl.EndDate.ToShortDateString()));
}
//add selected index changed event handler
mplDropDownList.SelectedIndexChanged += mplDropDownList_SelectedIndexChanged;
//create content item for drop down list
RadMenuContentItem contentItem =
new
RadMenuContentItem();
RadHostItem host =
new
RadHostItem(mplDropDownList);
//populate the drop down list
contentItem.ContentElement = host;
//set the size of the MPL drop down menu
contentItem.AutoSize =
false
;
contentItem.Size =
new
System.Drawing.Size(150, 100);
//here we add an arrow to select MPL from the drop down list.
//if only one MPL, there will be only one to choose from
RadMenuItem mplSpecific =
new
RadMenuItem();
mplSpecific.Text =
"Open Specific Master Price List"
;
mplSpecific.Items.Add(contentItem);
RadMenuSeparatorItem separator =
new
RadMenuSeparatorItem();
e.ContextMenu.Items.Add(separator);
e.ContextMenu.Items.Add(mplSpecific);
}
Then, here is my method for when the selected index is changed for the drop down:
private
void
mplDropDownList_SelectedIndexChanged (
object
sender, Telerik.WinControls.UI.Data.PositionChangedEventArgs e)
{
//this method gets called whenever the DDL index is changed
//i.e. whenever a user selects a different MPL date range
RadDropDownList list = sender
as
RadDropDownList;
if
(list !=
null
&& e.Position > -1)
{
//Console.WriteLine("New Selected Item: " + list.Items[e.Position]);
//get the mpl id for the MPL date range selected
int
mplid = tmpDDL_MPLLists[e.Position].Id;
FactoryOrder myOrder =
new
FactoryOrder();
//create an order tuple to open the specific MPL page we want to view
myOrder.AddOrderLine(
"SpecificList"
, mplid.ToString());
//jump manager to pull up a specific MPL window tab
JumpOrder myJumpOrder =
new
JumpOrder();
myJumpOrder.factoryOrder = myOrder;
myJumpOrder.module =
"MPL"
;
myJumpOrder.targetWin =
"MPLS"
;
//issue: new MPLS tab should have date range populated
MainDockWin.mainJumpManager.PassJumpOrder(myJumpOrder);
MainDockWin.mainJumpManager.GoToWindow();
}
//need a way to hide the parent menu when sub-menu item is clicked and we jump...
//list.Visible = false;
//this only hides the MPL drop down list...
//how to hide the context menu?
//list.Parent.Visible = false;
//let the context menu know that there was a click...and close
list.Parent.Hide();
}
The list.Parent.Hide (or set Visible=false) only hides the drop down menu, not the overall context menu. list.Parent.Parent returns null. Any and all help is appreciated! Thanks
See attached screenshot for what I'm referring to as the behavior of my program.