protected void AddLegItems(TreeNode pTN, LegendItem li) { if (li.LegendItemVisible == false) return; TreeNode tn = new TreeNode(li.LegendText); //tn.SelectAction = TreeNodeSelectAction.None; tn.PopulateOnDemand = false; //tn.Value = li.LegendText; //tn.NavigateUrl = "javascript:ManualSelect('" + "ciccio" + "')"; //tn.Text = "<span onclick='return false;'>" + li.LegendText + "</span>"; tn.Text = li.LegendText; if (li.LegendSymbolMode == SymbolMode.Checkbox) { tn.ShowCheckBox = true; tn.Checked = li.Checked; } if (li.LegendSymbolMode == SymbolMode.Symbol) { tn.ImageUrl = "ImageHandler.ashx?ID="+LegItemOnCache(ref li); } if (pTN == null) { Nodes.Add(tn); } else { pTN.ChildNodes.Add(tn); } if (li.LegendItems != null) { //foreach (LegendItem l in li.LegendItems) for(int i = li.LegendItems.Count()-1;i>=0;i--) { LegendItem l = (LegendItem)li.LegendItems.ElementAt(i); AddLegItems(tn, l); } } }
/// <summary> /// Handles updating event handlers during a copy process /// </summary> /// <param name="copy"></param> protected override void OnCopy(Descriptor copy) { LegendItem myCopy = copy as LegendItem; if (myCopy != null && myCopy.ItemChanged != null) { foreach (Delegate handler in myCopy.ItemChanged.GetInvocationList()) { myCopy.ItemChanged -= (EventHandler)handler; } } if (myCopy != null && myCopy.RemoveItem != null) { foreach (Delegate handler in myCopy.RemoveItem.GetInvocationList()) { myCopy.RemoveItem -= (EventHandler)handler; } } base.OnCopy(copy); }
LegendItem GetLegendItem(string[] keys, LegendItem lip) { if (keys.Count() == 0) return null; if (keys.Count() == 1 && lip.LegendText == keys[0]) return lip; foreach (LegendItem li in lip.LegendItems) { if (li.LegendText == keys[0]) { if (keys.Count() == 1) return li; else { string[] k = keysPop(keys); return GetLegendItem(k, li); } } } return null; }
private string LegItemOnCache(ref LegendItem li) { Size sz = li.GetLegendSymbolSize(); Bitmap b = new Bitmap(sz.Width+1, sz.Height+1); Graphics g = Graphics.FromImage(b); li.LegendSymbol_Painted(g,new Rectangle(0,0,sz.Width,sz.Height)); string name = Guid.NewGuid().ToString(); MemoryStream MS = new MemoryStream(); b.Save(MS, System.Drawing.Imaging.ImageFormat.Png); byte[] buffer = MS.ToArray(); HttpContext.Current.Cache.Insert(name, buffer, null, Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(15)); g.Dispose(); b.Dispose(); return name; }