protected override void OnSetComplete(int index, object oldValue, object newValue) { base.OnSetComplete(index, oldValue, newValue); DataBindingRuleBase dataBindingRuleBase = newValue as DataBindingRuleBase; if (dataBindingRuleBase != null && string.IsNullOrEmpty(dataBindingRuleBase.DataMember)) { dataBindingRuleBase.DataMember = DataBindingHelper.GetDataSourceDefaultDataMember(dataBindingRuleBase.DataSource); } }
public virtual void Reset() { if (this.DataSource != null) { this.DataMember = DataBindingHelper.GetDataSourceDefaultDataMember(this.DataSource); } else { this.DataMember = ""; } this.BindingField = ""; }
public static ArrayList GetDataSourceDataFields(object dataSource, string dataMember, string fieldToExclude) { ArrayList arrayList = new ArrayList(); if (dataSource != null) { try { if (dataSource.GetType().GetInterface("IDataSource") != null) { try { MethodInfo method = dataSource.GetType().GetMethod("Select"); if (method != null) { if (method.GetParameters().Length == 1) { Type type = dataSource.GetType().Assembly.GetType("System.Web.UI.DataSourceSelectArguments", true); ConstructorInfo constructor = type.GetConstructor(new Type[0]); dataSource = method.Invoke(dataSource, new object[1] { constructor.Invoke(new object[0]) }); } else { dataSource = method.Invoke(dataSource, new object[0]); } } } catch { } } DataTable dataTable = null; if (dataSource is BindingSource) { BindingSource bindingSource = (BindingSource)dataSource; string dataMember2 = bindingSource.DataMember; try { if (string.IsNullOrEmpty(dataMember)) { dataMember = DataBindingHelper.GetDataSourceDefaultDataMember(bindingSource); } bindingSource.DataMember = dataMember; foreach (PropertyDescriptor itemProperty in bindingSource.GetItemProperties(null)) { if (itemProperty.Name != fieldToExclude) { arrayList.Add(new DataFieldDescriptor(itemProperty.Name, itemProperty.PropertyType)); } } } finally { bindingSource.DataMember = dataMember2; } } else if (dataSource is DataTable) { dataTable = (DataTable)dataSource; } else if (dataSource is DataView) { dataTable = ((DataView)dataSource).Table; } else if (dataSource is DataSet && ((DataSet)dataSource).Tables.Count > 0) { dataTable = ((!string.IsNullOrEmpty(dataMember)) ? ((DataSet)dataSource).Tables[dataMember] : ((DataSet)dataSource).Tables[0]); } else if (dataSource is IDataAdapter) { DataSet dataSet = new DataSet(); dataSet.Locale = CultureInfo.CurrentCulture; DataTable[] array = ((IDataAdapter)dataSource).FillSchema(dataSet, SchemaType.Mapped); if (array.Length > 0) { dataTable = array[0]; } } else if (dataSource is IDataReader) { IDataReader dataReader = (IDataReader)dataSource; if (!dataReader.IsClosed) { DataTable schemaTable = dataReader.GetSchemaTable(); if (schemaTable != null) { foreach (DataRow row in schemaTable.Rows) { string text = (string)row["ColumnName"]; Type type2 = (Type)row["DataType"]; if (text != fieldToExclude) { arrayList.Add(new DataFieldDescriptor(text, type2)); } } } } } else if (dataSource is IDbCommand) { IDbCommand dbCommand = (IDbCommand)dataSource; IDataReader dataReader2 = null; if (dbCommand.Connection != null) { try { dbCommand.Connection.Open(); dataReader2 = dbCommand.ExecuteReader(); DataTable schemaTable2 = dataReader2.GetSchemaTable(); if (schemaTable2 != null) { foreach (DataRow row2 in schemaTable2.Rows) { string text2 = (string)row2["ColumnName"]; Type type3 = (Type)row2["DataType"]; if (text2 != fieldToExclude) { arrayList.Add(new DataFieldDescriptor(text2, type3)); } } } dataReader2.Close(); } finally { if (dbCommand.Connection != null && dbCommand.Connection.State != 0) { dbCommand.Connection.Close(); } if (dataReader2 != null && !dataReader2.IsClosed) { dataReader2.Close(); } } } } if (dataTable != null) { { foreach (DataColumn column in dataTable.Columns) { if (column.ColumnName != fieldToExclude) { arrayList.Add(new DataFieldDescriptor(column.ColumnName, column.DataType)); } } return(arrayList); } } if (arrayList.Count == 0 && dataSource is ITypedList) { { foreach (PropertyDescriptor itemProperty2 in ((ITypedList)dataSource).GetItemProperties(null)) { if (itemProperty2.PropertyType != typeof(string) && itemProperty2.Name != fieldToExclude) { arrayList.Add(new DataFieldDescriptor(itemProperty2.Name, itemProperty2.PropertyType)); } } return(arrayList); } } if (arrayList.Count == 0) { if (dataSource is IEnumerable) { IEnumerator enumerator6 = ((IEnumerable)dataSource).GetEnumerator(); enumerator6.Reset(); enumerator6.MoveNext(); { foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(enumerator6.Current)) { if (property.PropertyType != typeof(string) && property.Name != fieldToExclude) { arrayList.Add(new DataFieldDescriptor(property.Name, property.PropertyType)); } } return(arrayList); } } return(arrayList); } return(arrayList); } catch { return(arrayList); } } return(arrayList); }
public static IEnumerable GetDataSourceAsIEnumerable(object data, string dataMember, out bool closeDataReader, out IDbConnection connection) { object obj = data; closeDataReader = false; connection = null; if (obj != null) { try { if (obj is BindingSource) { BindingSource bindingSource = (BindingSource)obj; string dataMember2 = bindingSource.DataMember; try { if (string.IsNullOrEmpty(dataMember)) { dataMember = DataBindingHelper.GetDataSourceDefaultDataMember(bindingSource); } bindingSource.DataMember = dataMember; obj = bindingSource.List; } finally { bindingSource.DataMember = dataMember2; } } if (obj is IDbDataAdapter) { obj = ((IDbDataAdapter)obj).SelectCommand; } if (obj is DataSet && ((DataSet)obj).Tables.Count > 0) { obj = ((!(dataMember == string.Empty) && ((DataSet)obj).Tables.Count != 1) ? ((DataSet)obj).Tables[dataMember] : ((DataSet)obj).Tables[0]); } if (obj is DataTable) { obj = new DataView((DataTable)obj); } else if (obj is IDbCommand) { if (((IDbCommand)obj).Connection.State != ConnectionState.Open) { connection = ((IDbCommand)obj).Connection; connection.Open(); } obj = ((IDbCommand)obj).ExecuteReader(); closeDataReader = true; } else { obj = (obj as IEnumerable); } } catch (Exception innerException) { throw new ApplicationException(SR.bad_data_src, innerException); } return(obj as IEnumerable); } return(null); }