private void PrintHierarchy(IIfcObjectDefinition o, XTreeNode parentNode) { //textBox1.Text += ($"{GetIndent(level)}{o.Name} [{o.GetType().Name}]"); var spatialElement = o as IIfcSpatialStructureElement; if (spatialElement != null) { var containedElements = spatialElement.ContainsElements.SelectMany(rel => rel.RelatedElements); foreach (var element in containedElements) { parentNode.ChildNodes.Add(CreateObject(element)); //textBox1.Text += ($"{GetIndent(level)} ->{element.Name} [{element.GetType().Name}]"); } } foreach (var item in o.IsDecomposedBy.SelectMany(r => r.RelatedObjects)) { spatialElement = item as IIfcSpatialStructureElement; if (spatialElement != null) { XTreeNode childNode = CreateObject(item); parentNode.ChildNodes.Add(childNode); PrintHierarchy(item, childNode); } } }
/// <summary> /// 刷新树节点并重设选中节点 /// </summary> private void RefreshTreeNode() { XTreeNode myItem = t_tvw_Module.SelectedItem as XTreeNode; string myTag = string.Empty; string parentTag = string.Empty; if (myItem == null && m_MQuery != null) { myTag = m_MQuery.BillType; } else { myTag = myItem.Tag.ToString(); if (myItem.Parent != null) { parentTag = myItem.Parent.Tag.ToString(); } } BindTreeNode(); SetSelected(t_tvw_Module.Nodes, myTag, parentTag); if (myItem == null && m_MQuery != null) { QueryMethod(); } }
/// <summary>Update the tree node bound to an entity. If no tree node is bound, then a new one is bound.</summary> /// <param name="xelement">The entity to be updated.</param> private void UpdateEntity(EntityBase entity) { EntityBase visibleEntity = entity.GetVisibleAncestor(); if (visibleEntity == null) { // Then the top would be the session element ClearTreeNodes(treeView1.Nodes); AddChildTreeNodes(treeView1.Nodes, model.session.Entity); } else { TreeNode entityNode = visibleEntity.GetValue(EntityTreeNodeProperty); if (entityNode == null) { entityNode = new XTreeNode(visibleEntity); visibleEntity.SetValue(EntityTreeNodeProperty, entityNode); } else { Debug.Assert(visibleEntity.DataElement.Annotation <XTreeNode>() == entityNode, "Somehow the element's tree node annotation got out of sync with the entity."); // A tree node instance already exists, we'll need to rebind ClearTreeNodes(entityNode.Nodes); } BindTreeNode(visibleEntity); AddChildTreeNodes(entityNode.Nodes, visibleEntity); } }
public XTreeNode CreateProjectHierarchy(IfcProject project) { XTreeNode projectNode = null; if (project != null) { projectNode = CreateObject(project); PrintHierarchy(project, projectNode); } return(projectNode); }
private EntityBase GetSelectedEntity() { XTreeNode treenode = (XTreeNode)treeView1.SelectedNode; if (treenode != null) { return(treenode.DataEntity); } else { return(null); } }
/// <summary> /// 右键点击前事件 /// </summary> /// <param name="sender">事件对象</param> /// <param name="e">事件参数</param> private void t_pgg_Bill_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e) { try { ArrayList statusList = new ArrayList(); statusList.Add("已入库"); statusList.Add("回收站"); statusList.Add("归档"); XTreeNode myItem = t_tvw_Module.SelectedItem as XTreeNode; string myTag = string.Empty; string parentTag = string.Empty; if (myItem == null && m_MQuery != null) { myTag = m_MQuery.BillType; } else { myTag = myItem.Tag.ToString(); if (myItem.Parent != null) { parentTag = myItem.Parent.Tag.ToString(); } } string billStatus = string.Empty; if (myTag == "Q" || parentTag == "Q") { PT_B_Quotation myModel = (PT_B_Quotation)t_pgg_Bill.SelectedItem; statusList.Remove(SetBillStatus(myModel.Bill_Status)); billStatus = "Q"; } else { PT_B_Project myModel = (PT_B_Project)t_pgg_Bill.SelectedItem; statusList.Remove(SetBillStatus(myModel.Bill_Status)); billStatus = "P"; } t_tsb_ChangeState.Items.Clear(); foreach (string status in statusList) { MenuItem item = new MenuItem(); item.Header = status; item.Tag = billStatus; item.Click += Item_Click; t_tsb_ChangeState.Items.Add(item); } } catch (Exception ex) { XMessageBox.Exception(ex); } }
/// <summary> /// 表格行鼠标双击事件 /// </summary> /// <param name="sender">事件对象</param> /// <param name="e">事件参数</param> private void t_pgg_Bill_MouseDoubleClick(object sender, MouseButtonEventArgs e) { try { if (t_pgg_Bill.SelectedItem == null) { return; } XTreeNode myItem = t_tvw_Module.SelectedItem as XTreeNode; string myTag = string.Empty; string parentTag = string.Empty; if (myItem == null && m_MQuery != null) { myTag = m_MQuery.BillType; } else { myTag = myItem.Tag.ToString(); if (myItem.Parent != null) { parentTag = myItem.Parent.Tag.ToString(); } } if (myTag == "Q" || parentTag == "Q") { PT_B_Quotation myModel = (PT_B_Quotation)t_pgg_Bill.SelectedItem; FrmQuotation myForm = new FrmQuotation(); myForm.PTBQuotation = myModel; myForm.ShowDialog(); m_Entities.Dispose(); m_Entities = new ProjectTrackingEntities(); RefreshTreeNode(); } else { PT_B_Project myModel = (PT_B_Project)t_pgg_Bill.SelectedItem; FrmProject myForm = new FrmProject(); myForm.PTBProject = myModel; myForm.ShowDialog(); m_Entities.Dispose(); m_Entities = new ProjectTrackingEntities(); RefreshTreeNode(); } } catch (Exception ex) { XMessageBox.Exception(ex); } }
private void Clear() { if (model.xdocument != null) { foreach (XElement x in model.xdocument.Descendants()) { XTreeNode treenode = x.Annotation <XTreeNode>(); if (treenode != null) { treenode.Remove(); x.RemoveAnnotations <XTreeNode>(); } } } }
private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { XTreeNode node = (XTreeNode)e.Node; if (e.Button == MouseButtons.Left) { // If the entity is already selected in the tree // but not in the model.selection context, then force // it to be selected if (node == treeView1.SelectedNode && model.selection.current.SelectedEntity != node.DataEntity) { model.selection.Update(this, node.DataEntity); } } else if (e.Button == MouseButtons.Right) { PopupMenu.ShowContextMenu(contextMenuStrip1, node.DataEntity); } }
XTreeNode CreateObject(IIfcObjectDefinition project) { XTreeNode projectNode = new XTreeNode(project.Name, project.GlobalId); return(projectNode); }
/// <summary> /// 加载业务数据 /// </summary> private void LoadBusinessData() { XTreeNode myItem = t_tvw_Module.SelectedItem as XTreeNode; if (myItem == null) { return; } string billStatus = myItem.Tag.ToString(); DateTime date = new DateTime(); if (myItem.Nodes.Count == 0) { XTreeNode myParent = myItem.Parent as XTreeNode; string parentStatus = myParent.Tag.ToString(); if (parentStatus == "Q") { if (m_CurrentTypes != DateFilterTypes.Custom) { date = GetFilterDate(); var temp = from p in m_Entities.PT_B_Quotation where p.Bill_Status == billStatus && p.Quotation_Date > date orderby p.Quotation_No select p; GirdStyleConfig.ItemsSource = temp.ToList(); } else { var temp = from p in m_Entities.PT_B_Quotation where p.Bill_Status == billStatus && p.Quotation_Date >= t_dtp_StartDate.Value && p.Quotation_Date <= t_dtp_EndDate.Value orderby p.Quotation_No select p; GirdStyleConfig.ItemsSource = temp.ToList(); } t_pgg_Bill.SelectedIndex = -1; t_pgg_Bill.StyleConfig = GirdStyleConfig; t_pgg_Bill.SelectedIndex = 0; } else if (parentStatus == "P") { if (m_CurrentTypes != DateFilterTypes.Custom) { date = GetFilterDate(); var temp = from p in m_Entities.PT_B_Project where p.Bill_Status == billStatus && p.Quotation_Date > date orderby p.Project_No select p; ProjectGirdStyleConfig.ItemsSource = temp.ToList(); } else { var temp = from p in m_Entities.PT_B_Project where p.Bill_Status == billStatus && p.Quotation_Date >= t_dtp_StartDate.Value && p.Quotation_Date <= t_dtp_EndDate.Value orderby p.Project_No select p; ProjectGirdStyleConfig.ItemsSource = temp.ToList(); } t_pgg_Bill.SelectedIndex = -1; t_pgg_Bill.StyleConfig = ProjectGirdStyleConfig; t_pgg_Bill.SelectedIndex = 0; } } else { if (billStatus == "Q") { if (m_CurrentTypes != DateFilterTypes.Custom) { date = GetFilterDate(); var temp = from p in m_Entities.PT_B_Quotation where p.Quotation_Date > date orderby p.Quotation_No select p; GirdStyleConfig.ItemsSource = temp.ToList(); } else { var temp = from p in m_Entities.PT_B_Quotation where p.Quotation_Date >= t_dtp_StartDate.Value && p.Quotation_Date <= t_dtp_EndDate.Value orderby p.Quotation_No select p; GirdStyleConfig.ItemsSource = temp.ToList(); } t_pgg_Bill.SelectedIndex = -1; t_pgg_Bill.StyleConfig = GirdStyleConfig; t_pgg_Bill.SelectedIndex = 0; } else if (billStatus == "P") { if (m_CurrentTypes != DateFilterTypes.Custom) { date = GetFilterDate(); var temp = from p in m_Entities.PT_B_Project where p.Quotation_Date > date orderby p.Quotation_No select p; ProjectGirdStyleConfig.ItemsSource = temp.ToList(); } else { var temp = from p in m_Entities.PT_B_Project where p.Quotation_Date >= t_dtp_StartDate.Value && p.Quotation_Date <= t_dtp_EndDate.Value orderby p.Quotation_No select p; ProjectGirdStyleConfig.ItemsSource = temp.ToList(); } t_pgg_Bill.SelectedIndex = -1; t_pgg_Bill.StyleConfig = ProjectGirdStyleConfig; t_pgg_Bill.SelectedIndex = 0; } } }
/// <summary> /// 绑定树节点方法 /// </summary> private void BindTreeNode() { //计算报价单各状态节点数量 CalculateQuotationCount(); List <XTreeNode> myCollect = new List <XTreeNode>(); XTreeNode myModel = new XTreeNode(); myModel.Text = "报价单" + "[" + TreeNodeDictionary["Q"] + "]"; myModel.NormalImage = "/Resources/CloseFloder.png"; myModel.ExpandedImage = "/Resources/OpenFloder.png"; myModel.Tag = "Q"; myModel.Nodes = new List <XTreeNode>(); myCollect.Add(myModel); XTreeNode mySub = new XTreeNode(); mySub.Text = "已入库" + "[" + TreeNodeDictionary["1"] + "]"; mySub.NormalImage = "/Resources/Info.png"; mySub.ExpandedImage = "/Resources/Info.png"; mySub.Tag = "1"; myModel.Nodes.Add(mySub); XTreeNode mySub2 = new XTreeNode(); mySub2.Text = "回收站" + "[" + TreeNodeDictionary["R"] + "]"; mySub2.NormalImage = "/Resources/Info.png"; mySub2.ExpandedImage = "/Resources/Info.png"; mySub2.Tag = "R"; myModel.Nodes.Add(mySub2); XTreeNode mySub3 = new XTreeNode(); mySub3.Text = "归档" + "[" + TreeNodeDictionary["A"] + "]"; mySub3.NormalImage = "/Resources/Info.png"; mySub3.ExpandedImage = "/Resources/Info.png"; mySub3.Tag = "A"; myModel.Nodes.Add(mySub3); //计算项目单各状态节点数量 CalculateProjectCount(); myModel = new XTreeNode(); myModel.Text = "项目单" + "[" + TreeNodeProjectDic["P"] + "]"; myModel.NormalImage = "/Resources/CloseFloder.png"; myModel.ExpandedImage = "/Resources/OpenFloder.png"; myModel.Tag = "P"; myModel.Nodes = new List <XTreeNode>(); myCollect.Add(myModel); mySub = new XTreeNode(); mySub.Text = "已入库" + "[" + TreeNodeProjectDic["1"] + "]"; mySub.NormalImage = "/Resources/Info.png"; mySub.ExpandedImage = "/Resources/Info.png"; mySub.Tag = "1"; myModel.Nodes.Add(mySub); mySub2 = new XTreeNode(); mySub2.Text = "回收站" + "[" + TreeNodeProjectDic["R"] + "]"; mySub2.NormalImage = "/Resources/Info.png"; mySub2.ExpandedImage = "/Resources/Info.png"; mySub2.Tag = "R"; myModel.Nodes.Add(mySub2); mySub3 = new XTreeNode(); mySub3.Text = "归档" + "[" + TreeNodeProjectDic["A"] + "]"; mySub3.NormalImage = "/Resources/Info.png"; mySub3.ExpandedImage = "/Resources/Info.png"; mySub3.Tag = "A"; myModel.Nodes.Add(mySub3); t_tvw_Module.BindTreeView(myCollect); SetNodeExpandedState(t_tvw_Module, true); }
/// <summary> /// 删除按钮事件 /// </summary> /// <param name="sender">事件对象</param> /// <param name="e">事件参数</param> private void t_btn_Delete_Click(object sender, RoutedEventArgs e) { try { if (t_pgg_Bill.SelectedItem == null) { XMessageBox.Warning("未选中一条单据!", this); return; } XTreeNode myItem = t_tvw_Module.SelectedItem as XTreeNode; string myTag = string.Empty; string parentTag = string.Empty; if (myItem == null && m_MQuery != null) { myTag = m_MQuery.BillType; } else { myTag = myItem.Tag.ToString(); if (myItem.Parent != null) { parentTag = myItem.Parent.Tag.ToString(); } } if (myTag == "Q" || parentTag == "Q") { PT_B_Quotation myModel = (PT_B_Quotation)t_pgg_Bill.SelectedItem; if (myModel.Bill_Status != "R") { MessageResult myResult = XMessageBox.Ask("确认删除当前选中的单据?", this); if (myResult == MessageResult.Yes) { myModel.Bill_Status = "R"; m_Entities.SaveChanges(); RefreshTreeNode(); } } else { MessageResult myResult = XMessageBox.Ask("确认彻底删除当前选中的单据?", this); if (myResult == MessageResult.Yes) { m_Entities.PT_B_Quotation.Remove(myModel); m_Entities.SaveChanges(); RefreshTreeNode(); } } } else { PT_B_Project myModel = (PT_B_Project)t_pgg_Bill.SelectedItem; if (myModel.Bill_Status != "R") { MessageResult myResult = XMessageBox.Ask("确认删除当前选中的单据?", this); if (myResult == MessageResult.Yes) { myModel.Bill_Status = "R"; m_Entities.SaveChanges(); RefreshTreeNode(); } } else { MessageResult myResult = XMessageBox.Ask("确认彻底删除当前选中的单据?", this); if (myResult == MessageResult.Yes) { m_Entities.PT_B_Project.Remove(myModel); m_Entities.SaveChanges(); RefreshTreeNode(); } } } } catch (Exception ex) { XMessageBox.Exception(ex); } }
/// <summary> /// 当前日期范围单选按钮选中状态改变时调用的方法 /// </summary> /// <param name="sender">事件对象</param> /// <param name="e">事件参数</param> private void OnDateFilterCheckedChanged(object sender, RoutedEventArgs e) { XRadioButton myControl = sender as XRadioButton; if (myControl == null) { return; } if (myControl.IsChecked == false) { return; } string type = string.Empty; switch (myControl.Name) { case "t_rdo_Today": type = "Today"; break; case "t_rdo_Week": type = "Week"; break; case "t_rdo_Month": type = "Month"; break; case "t_rdo_All": type = "All"; break; case "t_rdo_Custom": type = "Custom"; break; } m_CurrentTypes = (DateFilterTypes)Enum.Parse(typeof(DateFilterTypes), type, true); if (m_CurrentTypes == DateFilterTypes.Custom) { t_dtp_StartDate.IsEnabled = true; t_dtp_EndDate.IsEnabled = true; } else { t_dtp_StartDate.IsEnabled = false; t_dtp_EndDate.IsEnabled = false; } XTreeNode myItem = t_tvw_Module.SelectedItem as XTreeNode; string myTag = string.Empty; string parentTag = string.Empty; BindTreeNode(); if (myItem == null && m_MQuery != null) { myTag = m_MQuery.BillType; SetSelected(t_tvw_Module.Nodes, myTag, parentTag); } else if (myItem != null) { myTag = myItem.Tag.ToString(); if (myItem.Parent != null) { parentTag = myItem.Parent.Tag.ToString(); } SetSelected(t_tvw_Module.Nodes, myTag, parentTag); } }