/// <summary> /// 递归查询设备所属的设备类型编码 /// </summary> /// <param name="smodel"></param> /// <returns></returns> private string GetEquTypeCode(SomeHierarchyViewModel smodel) { if (smodel != null) { if (smodel.Parent != null) { SomeHierarchyViewModel shv = smodel.Parent; ComBoxTreeModel cbtModel = (shv.obj as TreeNode).Target as ComBoxTreeModel; if (cbtModel.Type.Equals(IoConfigParam.Type_EquType)) { return(cbtModel.Code); } else { return(GetEquTypeCode(shv)); } } else { return(string.Empty); } } else { return(string.Empty); } }
public static List<SomeHierarchyViewModel> RetornaListaCodMaeNulo(List<CM_CTABM> ListaTodosItens, List<SomeHierarchyViewModel> list) { List<SomeHierarchyViewModel> outerItems = new List<SomeHierarchyViewModel>(); bool _addEmptyLevel = true; foreach (CM_CTABM c in ListaTodosItens.Where(p => p.CodMae == "")) { //Cria um item primeiro nível vazio, caso o usuário não deseje selecionar nada if (_addEmptyLevel) { CM_CTABM cm = new CM_CTABM(); cm.Texto = " "; cm.CodMae = ""; cm.CodInt = 0; cm.Codigo = "0"; SomeHierarchyViewModel s = new SomeHierarchyViewModel(cm.Texto, null); s.ItemAtual = cm; s.CodInt = cm.CodInt; outerItems.Add(s); list.Add(s); _addEmptyLevel = false; } SomeHierarchyViewModel o = new SomeHierarchyViewModel(c.Texto, null); o.ItemAtual = c; o.CodInt = c.CodInt; outerItems.Add(o); list.Add(o); } return outerItems; }
/// <summary> /// 下拉树选择改变事件 /// </summary> private void comboBoxTree_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (e.AddedItems != null && e.AddedItems.Count > 0) { SomeHierarchyViewModel model = e.AddedItems[0] as SomeHierarchyViewModel; var obj = model.obj as TreeNode; ComBoxTreeModel treeModel = obj.Target as ComBoxTreeModel; this.equCodeTextBox.Text = treeModel.Code; if (EquConfig != null) { EquConfig.Type = treeModel.Type; } } }
//public static List<SomeHierarchyViewModel> ReturnItemsHierarchy(int tabG) //{ // ComboTreeGenericVM vm = new ComboTreeGenericVM(tabG); // if (vm.Items != null) // return vm.Items.OrderBy(p => p.ItemAtual.CodMae + p.ItemAtual.Codigo).ToList(); // else // return new List<SomeHierarchyViewModel>(); //} /// <summary> /// Retorna todos todos os itens pai do objeto, na ordem da hierarquia. /// </summary> /// <param name="sh"></param> /// <param name="tabm"></param> public static void ReturnMae(SomeHierarchyViewModel sh, List<CM_CTABM> tabm) { if (tabm == null) tabm = new List<CM_CTABM>(); if (sh != null && sh.ItemAtual != null && sh.ItemAtual.CodInt > 0) { tabm.Insert(0, sh.ItemAtual); if (sh.Parent != null) ReturnMae(sh.Parent, tabm); } }
private static List <SomeHierarchyViewModel> RetornaListaCodMaeNulo(List <CM_CTABM> ListaTodosItens) { List <SomeHierarchyViewModel> outerItems = new List <SomeHierarchyViewModel>(); foreach (CM_CTABM c in ListaTodosItens.Where(p => p.CodMae == "")) { SomeHierarchyViewModel o = new SomeHierarchyViewModel(c.Texto, null); o.ItemAtual = c; o.CodInt = c.CodInt; o.IsChecked = c.Checked; outerItems.Add(o); Items.Add(o); } return(outerItems); }
public static SomeHierarchyViewModel RetornaItemDaTree(List<SomeHierarchyViewModel> list, int codint) { if (list == null) return null; var x = list.Where(p => p.CodInt == codint).FirstOrDefault(); SomeHierarchyViewModel z = null; if (x != null) return x; else { foreach (var y in list) { if (y.Children.Count <= 0) continue; z = RetornaItemDaTree(y.Children, codint); if (z != null) return z; } } return null; // if (list != null) // { // foreach (SomeHierarchyViewModel sh in list) // { // if (codint == 360) // { // } // if (sh.ItemAtual.CodInt == codint) // return sh; // else // { // if (sh.Children != null && sh.Children.Count > 0) // return RetornaItemDaTree(codint, sh.Children); // } // } // } // return null; }
public static void RetornaListaFilhosRecursivo(List<CM_CTABM> ListaTodosItens, SomeHierarchyViewModel s) { List<CM_CTABM> ls = ListaTodosItens.Where(p => p.CodMae == s.ItemAtual.CodMae + s.ItemAtual.Codigo).ToList(); if (s.Children == null) s.Children = new List<SomeHierarchyViewModel>(); foreach (CM_CTABM m in ls) { //Cria um objeto de hirarquia falando quem é o pai do mesmo para quando ele for selecionado //achar sua hierarquia certa SomeHierarchyViewModel hierarchy = new SomeHierarchyViewModel(m.Texto, null, s); hierarchy.ItemAtual = m; hierarchy.CodInt = m.CodInt; s.Children.Add(hierarchy); RetornaListaFilhosRecursivo(ListaTodosItens, hierarchy); } }
public static void ReturnAllChildren(SomeHierarchyViewModel sh, List<CM_CTABM> tabm) { if (tabm == null) tabm = new List<CM_CTABM>(); if (sh != null && sh.Children != null && sh.ItemAtual != null && sh.ItemAtual.CodInt > 0) { tabm.Add(sh.ItemAtual); if (sh.Children != null) { foreach (SomeHierarchyViewModel s in sh.Children) { ReturnAllChildren(s, tabm); } } } }
/// <summary> /// 下拉框选择触发的事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void ComboBoxTreeView_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (e.AddedItems.Count <= 0) { return; } if (this.equConfigDataGrid.SelectedItems.Count == 1) { int rowIndex = this.equConfigDataGrid.SelectedIndex; DataGridRow row = this.equConfigDataGrid.ItemContainerGenerator.ContainerFromIndex(rowIndex) as DataGridRow; if (row != null) { SomeHierarchyViewModel smodel = ((EquConfigModel)this.equConfigDataGrid.SelectedItem).SelectedEqu; if (smodel != null) { ComBoxTreeModel cbtModel = (smodel.obj as TreeNode).Target as ComBoxTreeModel; //所选行第4列的单元格数据(赋值) TextBlock tb = this.equConfigDataGrid.Columns[5].GetCellContent(row) as TextBlock; if (tb != null) { tb.Text = cbtModel.Code; } //值在界面不需要显示,故而可只给属性赋值,如果要界面显示,则此处后面注释掉的代码打开即可 (row.Item as EquConfigModel).Type = cbtModel.Type.Equals(IoConfigParam.Type_EquType) ? "设备类型" : "设备"; if (cbtModel.Type.Equals(IoConfigParam.Type_EquType)) { (row.Item as EquConfigModel).EquTypeCode = cbtModel.Code; } else { (row.Item as EquConfigModel).EquTypeCode = GetEquTypeCode(smodel); } } } } }
public SomeHierarchyViewModel(string title, List <SomeHierarchyViewModel> children, SomeHierarchyViewModel parent = null) { this.Title = title; this.Parent = parent; this.Children = children; if (this.Children != null) { this.Children.ForEach(ch => ch.Parent = this); } }