/// <summary> /// 绑定Grid数据 /// </summary> private void BindTreeList() { treeList1.Nodes.Clear(); StructureRule rule = new StructureRule(); //DataTable dt =rule.RShow(" ORDER BY ParentID,Code", ProcessTreeList.GetQueryField(treeList1)); DataTable dt = SysUtils.Fill("EXEC USP1_Data_Stucture_Get"); ProcessTreeList.BindTreeList(dt, treeList1, "ID", "ParentID", 7, true); }
/// <summary> /// 保存 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnSave_Click(object sender, EventArgs e) { try { if (txtCode.Text.Trim() == "") { this.ShowMessage("请输入编码"); txtCode.Focus(); return; } if (txtName.Text.Trim() == "") { this.ShowMessage("请输入名称"); txtName.Focus(); return; } StructureRule rule = new StructureRule(); Structure entity = new Structure(); if (m_StructureID > 0) { entity.ID = m_StructureID; entity.SelectByID(); } entity.Code = txtCode.Text.Trim(); entity.Name = txtName.Text.Trim(); switch (m_StructureTypeID) { case 1: rule.RAdd(entity); StructureID = entity.ID; break; case 2: entity.ParentID = m_ParentID; rule.RAdd(entity); StructureID = entity.ID; break; case 3: rule.RUpdate(entity); break; } this.ShowInfoMessage("设置成功!"); this.Close(); } catch (Exception E) { this.ShowMessage(E.Message); } }
public BaseStructure GetStructures(CodeBlock block, out ParseError error) { StructureRule rule = Rules.Find(p => p.Target == block.ParentDirective.Target); if (!rule.AllowedInnerInstructions && block.RawLines.Count != 0) { error = new ParseError(ParseErrorType.Directives_InnerInstructionsAreNotAllowed, block.ParentDirective.LineIndex, block.ParentDirective.FileName); return(null); } AccessModifier accessModifier = AccessModifier.Default; List <Modifier> modifiers = new List <Modifier>(); List <BaseStructure> childs = null; if (block.ParentDirective.Parameters != null) { foreach (var modifier in block.ParentDirective.Parameters) { var modifierParts = modifier.Split(':'); var modifierName = modifierParts[0]; var modifierValue = string.Join(":", modifierParts.Skip(1)); Modifier Modifier = rule.Modifiers.Find(p => p.Name == modifierName); if (Modifier == null && !AccessModifiers.Contains(modifier)) { error = new ParseError(ParseErrorType.Directives_UnknownModifier, block.ParentDirective.LineIndex, block.ParentDirective.FileName); return(null); } if (AccessModifiers.Contains(modifier)) { if (rule.AvailableAccsessModifiersStrings.Contains(modifier)) { accessModifier = rule.AvailableAccsessModifiers.Find( p => p.ToString().ToLower() == modifier); } else { error = new ParseError(ParseErrorType.Directives_NotAllowedAccessModifier, block.ParentDirective.LineIndex, block.ParentDirective.FileName); return(null); } continue; } if (Modifier.ValueRequired && string.IsNullOrEmpty(modifierValue)) { error = new ParseError(ParseErrorType.Directives_ModifierValueRequired, block.ParentDirective.LineIndex, block.ParentDirective.FileName); return(null); } modifiers.Add(new Modifier(Modifier, modifierValue)); } } if (!rule.Modifiers.FindAll(p => p.IsRequired).All(p => modifiers.Exists(j => j.Name == p.Name))) { error = new ParseError(ParseErrorType.Directives_SomeRequiredModifiersAreMissing, block.ParentDirective.LineIndex, block.ParentDirective.FileName); return(null); } childs = new List <BaseStructure>(); foreach (var child in block.ChildBlocks) { if (!rule.AllowedChilds.Contains(child.ParentDirective.Target)) { error = new ParseError(ParseErrorType.Directives_WrongChildTarget, child.ParentDirective.LineIndex, child.ParentDirective.FileName); return(null); } childs.Add(GetStructures(child, out error)); if (error != null) { return(null); } } error = null; return(new BaseStructure() { Name = block.ParentDirective.Name, AccessModifier = accessModifier, Modifiers = modifiers, Childs = childs, RawLines = block.RawLines, Target = rule.Target, Directive = block.ParentDirective }.Cast()); }