public DataTable GetRelations(CardRelationField relation) { var card = relation.Card; var constraint = relation.Constraint; bool isCreate = false; //если режим создания объекта if (card.EntityInstance == null) { isCreate = true; FillEntityInstance(card, ""); } else if (string.IsNullOrEmpty(card.EntityInstance.EntityInstanceID)) { isCreate = true; } card.DependencyRelations = new DependencyRelations(constraint, card.EntityInstance); var tableTitleAttributes = new Dictionary <string, string>(); tableTitleAttributes.Add(constraint.ConstraintName, relation.Value); card.DependencyRelations.RelationTableTitleAttributes = tableTitleAttributes; DataTable ReferenceTableDataSource = card.DependencyRelations.SetRelationColumnsValue_GetReferenceTable(true, isCreate); return(ReferenceTableDataSource); }
public int GetInstanceID(CardRelationField filledRelation) { var card = filledRelation.Card; var constrant = card.EntityInstance.Constraints.First(con => con.ConstraintName == filledRelation.SystemName); var relationColValues = card.EntityInstance.RelationColumnsValue.Where(col => col.ConstraintName == constrant.ConstraintName); var colValList = new List <string>(); foreach (var item in relationColValues) { if (item.Value != null && item.Value.ToString() != "") { var colVal = string.Format("{0} = {1}", item.RefCol, item.Value); colValList.Add(colVal); } } var columnsValue = string.Join(" and ", colValList); var query = new StringBuilder("SELECT [objID] FROM ["). Append(filledRelation.Entity.SystemName).Append("] WHERE ").Append(columnsValue); var table = Storage.GetDataTable(query.ToString()); //if (table.Rows.Count == 1) return(Convert.ToInt32(table.Rows[0][0])); //else // throw new NotImplementedException("Не знаю почему сработал метод OpenRelationHandler(object sender, EventArgs e), надо разобраться "); }
private Button CreateRelationEditedButton(CardRelationField relation) { var b = new Button { Text = "\u21D3", ToolTip = "Выбрать значение", CommandArgument = relation.SystemName, CommandName = relation.Card.Entity.ID.ToString() }; b.ApplyStyle(OpenRelatedListButtonStyle); b.Click += new EventHandler(RelationEditedButton_Click); return(b); }
public void FillEntityInstance(Card card, string entityInstanceID) { var entity = Storage.Select <Entity>(card.Entity.ID); EntityInstance entityInstance = new EntityInstance(entityInstanceID, entity.SystemName, true); entityInstance.Constraints = entity.Constraints; entityInstance.SetRelationColumnsValue(); card.EntityInstance = entityInstance; #if Viktor //заполнить констраинт, если создаем списковый объект из ссылочного объекта if (card.ConstraintID != null && card.InstanceID != null) { var constraint = entityInstance.Constraints.FirstOrDefault(con => con.ConstraintObjID == card.ConstraintID.ToString()); if (constraint != null) { CardRelationField relation = new CardRelationField(constraint, card); var dt = GetRelations(relation); var rows = dt.Select(string.Format("objID = {0}", Convert.ToInt32(card.InstanceID))); var row = rows.First(); var titles = new StringBuilder(); for (int i = 1; i < row.ItemArray.Count(); i++) { var cell = row.ItemArray[i]; titles.Append(cell).Append(" ~ "); } card.DependencyRelations.RelationTableTitleAttributes[constraint.ConstraintName] = titles.ToString(); FillRelation(relation, card.InstanceID); } } #endif }
public void FillRelation(CardRelationField relation, int?instanceID) { var card = relation.Card; bool isCreate = false; if (string.IsNullOrEmpty(card.EntityInstance.EntityInstanceID)) { isCreate = true; } #if Viktor card.DependencyRelations.NewEntityInstanceID = instanceID.ToString(); #else if (instanceID == -1) { card.DependencyRelations.NewEntityInstanceID = ""; } else { card.DependencyRelations.NewEntityInstanceID = instanceID.ToString(); } #endif card.DependencyRelations.SetRelationColumnsValue_GetReferenceTable(false, isCreate); foreach (var field in card.Fields.Where(f => f is CardRelationField).OfType <CardRelationField>()) { var title = field.Card.EntityInstance.RelationColumnsValue.Where(columnVal => columnVal.ConstraintName == field.SystemName).FirstOrDefault().TitleAttribute; field.Value = title; } }
public RelationClickedEventArgs(CardRelationField relation) { Relation = relation; }