Пример #1
0
        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);
        }
Пример #2
0
 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);
             }
         }
     }
 }