private void AppendItemsToList(DictionaryDataItem parent, DictionaryDataItemCollection dataItems, List<DictionaryDataItem> list) { if (dataItems.Count > 0) { DictionaryDataItem child; for (int i = 0; i < dataItems.Count; i++) { child = dataItems[i]; list.Add(child); if (child.Children.Count>0) { AppendItemsToList(child, child.Children, list); } } } }
private void InitDictionaryDataItem(DictionaryDataItem dataItem, Type modelType, object modelInstance, string valueFieldName, string descriptionFieldName, string selectedFieldName ) { MemberInfo[] members = modelType.GetMembers(BindingFlags.Public | BindingFlags.Instance); for (int i = 0; i < members.Length; i++) { switch (members[i].MemberType) { case MemberTypes.Property: if (valueFieldName != null && members[i].Name.Equals(valueFieldName)) { // 忽略值属性 } else if (descriptionFieldName != null && members[i].Name.Equals(descriptionFieldName)) { dataItem.Description = Convert.ToString(((PropertyInfo)members[i]).GetValue(modelInstance, null)); } else if (selectedFieldName != null && members[i].Name.Equals(selectedFieldName)) { dataItem.Selected = Convert.ToBoolean(((PropertyInfo)members[i]).GetValue(modelInstance, null)); } else { dataItem.ExtendProperties.Add(members[i].Name, ((PropertyInfo)members[i]).GetValue(modelInstance, null)); } break; case MemberTypes.Field: if (valueFieldName != null && members[i].Name.Equals(valueFieldName)) { // 忽略值属性 } else if (descriptionFieldName != null && members[i].Name.Equals(descriptionFieldName)) { dataItem.Description = Convert.ToString(((FieldInfo)members[i]).GetValue(modelInstance)); } else if (selectedFieldName != null && members[i].Name.Equals(selectedFieldName)) { dataItem.Selected = Convert.ToBoolean(((FieldInfo)members[i]).GetValue(modelInstance)); } else { dataItem.ExtendProperties.Add(members[i].Name, ((FieldInfo)members[i]).GetValue(modelInstance)); } break; default: break; } } }
internal void SetRelation(DictionaryData owner, DictionaryDataItem parent, DictionaryDataItemCollection children) { this.owner = owner; this.parent = parent; this.children = children; }