internal bool DataBind() { this.Keys.EnsureDbKeysValue(); SqlQuery query = this.CreateSelectQuery(); RecordTableMetaDataProvider metaDataProvider = new RecordTableMetaDataProvider(this.Template); IEntityMetaData metaData = metaDataProvider.CreateEntityMetaData(); FilterCriteriaList filters = new FilterCriteriaList(this.card.Factory.ParameterPrefix); IEnumerable<PropertyMetaData> keySchemas = metaData.OfKeys(true);//Order a göre geldiği için böyle. IEnumerator<DbKey> keys = this.Keys.GetEnumerator(); foreach (PropertyMetaData keyProperty in keySchemas) { keys.MoveNext(); filters.Add(keyProperty, ConditionOperator.Equals, keys.Current.Value); } char tableAlias = this.TableName[0]; string tableNameOp = tableAlias + "."; query.Combine(filters.ToQuery(tableNameOp)); bool readed = false; Record record = this.Template.NewRecord(); using (IDataReader dr = this.card.Factory.DataAccess.CreateDataReader(query, CommandBehavior.SingleRow)) { if (readed = dr.Read()) { int length = dr.FieldCount; for (int j = 0; j < length; ++j) { string columnName = dr.GetName(j); object dbValue = dr[j]; if (dbValue == DBNull.Value) dbValue = null; record[columnName] = dbValue; } } } if (readed) { using (Binding binding = new Binding(record, metaDataProvider, this.Controls)) { binding.DataBind(); } } else { foreach (IEntityControl ctrl in this.Controls) ctrl.Clear(); } return readed; }
internal FormRecordValidationResult ValidateInputs() { FormRecordValidationResult ret = new FormRecordValidationResult(); RecordTable template = this.Template; Record newRecord = template.NewRecord(); RecordTableMetaDataProvider provider = new RecordTableMetaDataProvider(template); using (Binding binding = new Binding(newRecord, provider, this.Controls)) { if (binding.ReadValues()) { ret.Validated = true; ret.ValidatedRecord = newRecord; ret.MetaDataProvider = provider; } } return ret;//if validation fails returns null. }
internal void Init() { RecordTable template = this.Template; RecordTableMetaDataProvider metaDataProvider = new RecordTableMetaDataProvider(template); using (Binding binding = new Binding(template.NewRecord(),metaDataProvider, this.Controls)) { binding.Init(); } }