Exemplo n.º 1
0
        private void TablesComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var selectedItem           = TablesComboBox.SelectedItem as ComboBoxItem;
            RailwaysEntities context   = RailwaysData.sharedContext;
            string           tableName = selectedItem.Tag as string;

            if (tableName != null)
            {
                curTableName = tableName;
                editingType  = context.GetType().GetProperty(tableName).PropertyType.GetGenericArguments()[0];
                dynamic query = context.GetType().GetProperty(tableName).GetValue(context, null);
                DataTab.ItemsSource = null;
                object collection = TypesConverter.CreateGenericList(editingType);

                MethodInfo mListAdd = collection.GetType().GetMethod("Add");
                foreach (dynamic q in query)
                {
                    mListAdd.Invoke(collection, new object[] { q });
                }

                DataTab.ItemsSource = (IEnumerable)collection;
                DataTab.DataContext = context.GetType().GetProperty(tableName).GetValue(context, null);

                int numberOfDomains = RailwaysDBQueries.GetNumberOfDomainsInTable(tableName);

                for (int i = DataTab.Columns.Count - 1; i >= numberOfDomains; --i)
                {
                    DataTab.Columns.RemoveAt(i);
                }

                columnsOriginalHeaders.Clear();
                foreach (DataGridColumn column in DataTab.Columns)
                {
                    column.IsReadOnly = curTableName == "TICKETS" || curTableName == "LOGTABLE" ||
                                        curTableName == "LOGGINGACTIONS" || (column.Header as string) == "ID";
                    columnsOriginalHeaders.Add((string)column.Header);
                    column.Header = TypesConverter.GetResource(curTableName + "_" + (column.Header as string));
                }

                if (curTableName != "LOGTABLE" && curTableName != "LOGGINGACTIONS")
                {
                    LoggingManager.LogAction(3, curTableName);
                }
            }
        }