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 = "";
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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);
        }