private void ReflectFieldType(ViewItem vi, ViewItemCollection vic) { if (!vi.HasValidated) { if (vi.IsVirtual) { HandleOtherField(vi); } else { switch (this.BusinessObject.GetType().GetField(vi.FieldName).FieldType.Name) { case "BoolField": vi.SetFieldType(ViewItemDisplayType.CheckBox); break; case "DateField": vi.SetFieldType(ViewItemDisplayType.DateTime); break; default: HandleOtherField(vi); break; } } vi.HasValidated = true; } vic.Add(vi); }
private void HandleOtherField(ViewItem vi) { // Check FK if (vi.IsVirtual) { // vi.SetFieldType(ViewItemDisplayType.SingleObject); // vi.FKFieldName = vi.FieldName; } else { object[] fks = this.BusinessObject.GetType().GetField(vi.FieldName).GetCustomAttributes(typeof(ForeignKeyAttribute), false); if (fks.Length > 0) { if ((fks as ForeignKeyAttribute[])[0].TableName == "Dictionary" && vi.TreeObjectName != string.Empty) { // Use TreePicker vi.SetFieldType(ViewItemDisplayType.TreeObject); vi.FKFieldName = (fks as ForeignKeyAttribute[])[0].MappingName; } else { // Use GridPicker vi.SetFieldType(ViewItemDisplayType.SingleObject); vi.FKFieldName = (fks as ForeignKeyAttribute[])[0].MappingName; } } else { // 有些表的外键可能未确定,没有ForeignKeyAttribute // 例如BusinessReceiptData表,FK_Project可能是每日工作汇报或者不定期市场调查 // 由于外键表不确定,所以FKFieldName不赋值 // 2006-5-17 Tony Zhang if (vi.FKDefaultViewName != string.Empty) { // Use GridPicker vi.SetFieldType(ViewItemDisplayType.SingleObject); vi.FKFieldName = string.Empty; } else { vi.SetFieldType(ViewItemDisplayType.Literal); } } } }