Example #1
0
        private void service_GetTableDataCompleted(object sender, GetTableDataCompletedEventArgs e)
        {
            Refresh.IsEnabled = true;
            this.Busy.IsBusy = false;

            if (e.Error != null)
            {
                e.Error.ShowError();
                return;
            }
                

            if (e.Result != null)
            {
                working = true;

                var tableData = e.Result.ToList();

                var tableName = e.UserState as string;
                if (string.IsNullOrEmpty(tableName))
                    ListGridTab.Items.Clear();

                foreach (var table in tableData.OrderBy(t => t.TableName))
                {
                    //数据
                    var data = new List<Dictionary<string, string>>();
                    //数据量
                    //var count = 0;
                    //把所有数据库的数据组合在一起,如果跨库可能就会有多个数据
                    foreach (var t in table.Tables)
                    {
                        data.AddRange(t.Data);
                        //count += t.TotalCount;
                    }
                    //字典变为动态类型集合
                    var enties = (data as IEnumerable<Dictionary<string, string>>).ToDataSource();
                    if (enties != null)
                    {
                        //是否传入了表名,在异步调用方法的时候作为状态信息传入的参数
                        if (string.IsNullOrEmpty(tableName))
                        {
                            var tab = new TabItem
                            {
                                Header = table.TableName,
                                Tag = table.TableName,
                            };
                            if (data.Count > 0)
                            {
                                var panel = new StackPanel
                                {
                                    Orientation = Orientation.Vertical,
                                };
                                var pager2Panel = new StackPanel
                                {
                                    Orientation = Orientation.Horizontal,
                                    HorizontalAlignment = System.Windows.HorizontalAlignment.Right,
                                };
                                var pagershow = new TextBlock
                                {
                                    Text = "第 1 页",
                                    VerticalAlignment = System.Windows.VerticalAlignment.Center,
                                };
                                var pagertop = new Button
                                {
                                    Content = "首页",
                                    Tag = table.TableName,
                                    IsEnabled = false,
                                    Margin = new Thickness(20, 0, 0, 0),
                                };
                                var pagerup = new Button
                                {
                                    Content = "上一页",
                                    Tag = table.TableName,
                                    Margin = new Thickness(20, 0, 0, 0),
                                    IsEnabled = false,
                                };
                                var pagerdown = new Button
                                {
                                    Content = "下一页",
                                    Tag = table.TableName,
                                    Margin = new Thickness(20, 0, 0, 0),
                                };

                                pager2Panel.Children.Add(pagershow);
                                pager2Panel.Children.Add(pagertop);
                                pager2Panel.Children.Add(pagerup);
                                pager2Panel.Children.Add(pagerdown);

                                pagerdown.Click += new RoutedEventHandler(pagerdown_Click);
                                pagerup.Click += new RoutedEventHandler(pagerup_Click);
                                pagertop.Click += new RoutedEventHandler(pagertop_Click);

                                var grid = new DataGrid()
                                {
                                    AutoGenerateColumns = true,
                                    ItemsSource = enties,
                                    SelectionMode = DataGridSelectionMode.Single,
                                    Tag = table,
                                    IsReadOnly = false,
                                    MaxColumnWidth = 600,
                                    MaxHeight = 600,
                                };
                                grid.BeginEdit();

                                //再是表格
                                panel.Children.Add(grid);
                                //最后是下面的分页
                                panel.Children.Add(pager2Panel);
                                tab.Content = panel;
                            }
                            ListGridTab.Items.Add(tab);
                        }
                        //查看到最后一页时,提示并使按键灰掉
                        else
                        {
                            if (data.Count == 0)
                            {
                                MessageBox.Show("已是最后一页");
                                var tab = ListGridTab.Items.Cast<TabItem>().FirstOrDefault(t => (string)t.Tag == tableName.ToString());
                                var panel = tab.Content as StackPanel;
                                panel.Children.OfType<StackPanel>().ToList().ForEach(member =>
                                {
                                    member.Children.OfType<Button>().ToList().ForEach(a =>
                                    {
                                        if (a.Content.ToString() == "下一页")
                                        {
                                            a.IsEnabled = false;
                                        }
                                        if (pageIndex[tableName] == 1)
                                        {
                                            if (a.Content.ToString() == "首页")
                                            {
                                                a.IsEnabled = false;
                                            }
                                            if (a.Content.ToString() == "上一页")
                                            {
                                                a.IsEnabled = false;
                                            }
                                        }
                                    });
                                });
                                pageIndex[tableName] = pageIndex[tableName] - 1;
                            }
                            else
                            {    
                                //找到标签页
                                var tab = ListGridTab.Items.Cast<TabItem>().FirstOrDefault(t => (string)t.Tag == table.TableName);
                                //找到原先的翻页索引号
                                var index = 0;
                                if (!string.IsNullOrEmpty(table.TableName) && pageIndex.ContainsKey(table.TableName))
                                    index = pageIndex[table.TableName];
                                var panel = tab.Content as StackPanel;
                                if (panel != null)
                                {
                                    //分页控件的状态重置为原先选择的
                                    panel.Children.OfType<StackPanel>().SelectMany(p => p.Children).OfType<DataPager>()
                                        .ToList().ForEach(p => p.PageIndex = index);
                                    //数据重新绑定
                                    var grid = panel.Children.OfType<DataGrid>().FirstOrDefault();
                                    if (grid != null)
                                    {
                                        grid.ItemsSource = enties;
                                        grid.Tag = table;
                                    }

                                    //显示页码
                                    panel.Children.OfType<StackPanel>().ToList().ForEach(member =>
                                    {
                                        member.Children.OfType<TextBlock>().ToList().ForEach(a =>
                                        {
                                            a.Text = string.Format("第 {0} 页", pageIndex[tableName] + 1);
                                        });
                                    });
                                }

                            }
                        }
                    }
                }

                ListGridTab.SelectedIndex = tabIndex;
                working = false;
            }

            if (SearchCondition.SelectedTableName != null)
            {
                var tab = ListGridTab.Items.OfType<TabItem>().FirstOrDefault(t => t.Tag.ToString() == SearchCondition.SelectedTableName);
                if (tab != null) ListGridTab.SelectedItem = tab;
            }
        }
Example #2
0
        private void service_GetTableDataCompleted(object sender, GetTableDataCompletedEventArgs e)
        {
            Refresh.IsEnabled = true;
            this.Busy.IsBusy = false;

            if (e.Error != null)
            {
                e.Error.ShowError();
                return;
            }

            if (e.Result != null)
            {
                working = true;

                var tableData = e.Result.ToList();

                var tableName = e.UserState as string;
                if (string.IsNullOrEmpty(tableName))
                    ListGridTab.Items.Clear();

                foreach (var table in tableData.OrderBy(t => t.TableName))
                {
                    //����
                    var data = new List<Dictionary<string, string>>();
                    //������
                    //var count = 0;
                    //���������ݿ�����������һ����������ܾͻ��ж������
                    foreach (var t in table.Tables)
                    {
                        data.AddRange(t.Data);
                        //count += t.TotalCount;
                    }
                    //�ֵ��Ϊ��̬���ͼ���
                    var enties = (data as IEnumerable<Dictionary<string, string>>).ToDataSource();
                    if (enties != null)
                    {
                        //�Ƿ����˱��������첽���÷�����ʱ����Ϊ״̬��Ϣ����IJ���
                        if (string.IsNullOrEmpty(tableName))
                        {
                            var tab = new TabItem
                            {
                                Header = table.TableName,
                                Tag = table.TableName,
                            };
                            if (data.Count > 0)
                            {
                                var panel = new StackPanel
                                {
                                    Orientation = Orientation.Vertical,
                                };
                                var pager2Panel = new StackPanel
                                {
                                    Orientation = Orientation.Horizontal,
                                    HorizontalAlignment = System.Windows.HorizontalAlignment.Right,
                                };
                                var pagershow = new TextBlock
                                {
                                    Text = "�� 1 ҳ",
                                    VerticalAlignment = System.Windows.VerticalAlignment.Center,
                                };
                                var pagertop = new Button
                                {
                                    Content = "��ҳ",
                                    Tag = table.TableName,
                                    IsEnabled = false,
                                    Margin = new Thickness(20, 0, 0, 0),
                                };
                                var pagerup = new Button
                                {
                                    Content = "��һҳ",
                                    Tag = table.TableName,
                                    Margin = new Thickness(20, 0, 0, 0),
                                    IsEnabled = false,
                                };
                                var pagerdown = new Button
                                {
                                    Content = "��һҳ",
                                    Tag = table.TableName,
                                    Margin = new Thickness(20, 0, 0, 0),
                                };

                                pager2Panel.Children.Add(pagershow);
                                pager2Panel.Children.Add(pagertop);
                                pager2Panel.Children.Add(pagerup);
                                pager2Panel.Children.Add(pagerdown);

                                pagerdown.Click += new RoutedEventHandler(pagerdown_Click);
                                pagerup.Click += new RoutedEventHandler(pagerup_Click);
                                pagertop.Click += new RoutedEventHandler(pagertop_Click);

                                var grid = new DataGrid()
                                {
                                    AutoGenerateColumns = true,
                                    ItemsSource = enties,
                                    SelectionMode = DataGridSelectionMode.Single,
                                    Tag = table,
                                    IsReadOnly = false,
                                    MaxColumnWidth = 600,
                                    MaxHeight = 600,
                                };
                                grid.BeginEdit();

                                //���DZ��
                                panel.Children.Add(grid);
                                //���������ķ�ҳ
                                panel.Children.Add(pager2Panel);
                                tab.Content = panel;
                            }
                            ListGridTab.Items.Add(tab);
                        }
                        //�鿴�����һҳʱ,��ʾ��ʹ�����ҵ�
                        else
                        {
                            if (data.Count == 0)
                            {
                                MessageBox.Show("�������һҳ");
                                var tab = ListGridTab.Items.Cast<TabItem>().FirstOrDefault(t => (string)t.Tag == tableName.ToString());
                                var panel = tab.Content as StackPanel;
                                panel.Children.OfType<StackPanel>().ToList().ForEach(member =>
                                {
                                    member.Children.OfType<Button>().ToList().ForEach(a =>
                                    {
                                        if (a.Content.ToString() == "��һҳ")
                                        {
                                            a.IsEnabled = false;
                                        }
                                        if (pageIndex[tableName] == 1)
                                        {
                                            if (a.Content.ToString() == "��ҳ")
                                            {
                                                a.IsEnabled = false;
                                            }
                                            if (a.Content.ToString() == "��һҳ")
                                            {
                                                a.IsEnabled = false;
                                            }
                                        }
                                    });
                                });
                                pageIndex[tableName] = pageIndex[tableName] - 1;
                            }
                            else
                            {
                                //�ҵ���ǩҳ
                                var tab = ListGridTab.Items.Cast<TabItem>().FirstOrDefault(t => (string)t.Tag == table.TableName);
                                //�ҵ�ԭ�ȵķ�ҳ������
                                var index = 0;
                                if (!string.IsNullOrEmpty(table.TableName) && pageIndex.ContainsKey(table.TableName))
                                    index = pageIndex[table.TableName];
                                var panel = tab.Content as StackPanel;
                                if (panel != null)
                                {
                                    //��ҳ�ؼ���״̬����Ϊԭ��ѡ���
                                    panel.Children.OfType<StackPanel>().SelectMany(p => p.Children).OfType<DataPager>()
                                        .ToList().ForEach(p => p.PageIndex = index);
                                    //�������°�
                                    var grid = panel.Children.OfType<DataGrid>().FirstOrDefault();
                                    if (grid != null)
                                    {
                                        grid.ItemsSource = enties;
                                        grid.Tag = table;
                                    }

                                    //��ʾҳ��
                                    panel.Children.OfType<StackPanel>().ToList().ForEach(member =>
                                    {
                                        member.Children.OfType<TextBlock>().ToList().ForEach(a =>
                                        {
                                            a.Text = string.Format("�� {0} ҳ", pageIndex[tableName] + 1);
                                        });
                                    });
                                }

                            }
                        }
                    }
                }

                ListGridTab.SelectedIndex = tabIndex;
                working = false;
            }

            if (SearchCondition.SelectedTableName != null)
            {
                var tab = ListGridTab.Items.OfType<TabItem>().FirstOrDefault(t => t.Tag.ToString() == SearchCondition.SelectedTableName);
                if (tab != null) ListGridTab.SelectedItem = tab;
            }
        }
Example #3
0
        private void service_GetTableDataCompleted(object sender, GetTableDataCompletedEventArgs e)
        {
            Refresh.IsEnabled = true;
            this.Busy.IsBusy  = false;

            if (e.Error != null)
            {
                e.Error.ShowError();
                return;
            }


            if (e.Result != null)
            {
                working = true;

                var tableData = e.Result.ToList();

                var tableName = e.UserState as string;
                if (string.IsNullOrEmpty(tableName))
                {
                    ListGridTab.Items.Clear();
                }

                foreach (var table in tableData.OrderBy(t => t.TableName))
                {
                    //数据
                    var data = new List <Dictionary <string, string> >();
                    //数据量
                    //var count = 0;
                    //把所有数据库的数据组合在一起,如果跨库可能就会有多个数据
                    foreach (var t in table.Tables)
                    {
                        data.AddRange(t.Data);
                        //count += t.TotalCount;
                    }
                    //字典变为动态类型集合
                    var enties = (data as IEnumerable <Dictionary <string, string> >).ToDataSource();
                    if (enties != null)
                    {
                        //是否传入了表名,在异步调用方法的时候作为状态信息传入的参数
                        if (string.IsNullOrEmpty(tableName))
                        {
                            var tab = new TabItem
                            {
                                Header = table.TableName,
                                Tag    = table.TableName,
                            };
                            if (data.Count > 0)
                            {
                                var panel = new StackPanel
                                {
                                    Orientation = Orientation.Vertical,
                                };
                                var pager2Panel = new StackPanel
                                {
                                    Orientation         = Orientation.Horizontal,
                                    HorizontalAlignment = System.Windows.HorizontalAlignment.Right,
                                };
                                var pagershow = new TextBlock
                                {
                                    Text = "第 1 页",
                                    VerticalAlignment = System.Windows.VerticalAlignment.Center,
                                };
                                var pagertop = new Button
                                {
                                    Content   = "首页",
                                    Tag       = table.TableName,
                                    IsEnabled = false,
                                    Margin    = new Thickness(20, 0, 0, 0),
                                };
                                var pagerup = new Button
                                {
                                    Content   = "上一页",
                                    Tag       = table.TableName,
                                    Margin    = new Thickness(20, 0, 0, 0),
                                    IsEnabled = false,
                                };
                                var pagerdown = new Button
                                {
                                    Content = "下一页",
                                    Tag     = table.TableName,
                                    Margin  = new Thickness(20, 0, 0, 0),
                                };

                                pager2Panel.Children.Add(pagershow);
                                pager2Panel.Children.Add(pagertop);
                                pager2Panel.Children.Add(pagerup);
                                pager2Panel.Children.Add(pagerdown);

                                pagerdown.Click += new RoutedEventHandler(pagerdown_Click);
                                pagerup.Click   += new RoutedEventHandler(pagerup_Click);
                                pagertop.Click  += new RoutedEventHandler(pagertop_Click);

                                var grid = new DataGrid()
                                {
                                    AutoGenerateColumns = true,
                                    ItemsSource         = enties,
                                    SelectionMode       = DataGridSelectionMode.Single,
                                    Tag            = table,
                                    IsReadOnly     = false,
                                    MaxColumnWidth = 600,
                                    MaxHeight      = 600,
                                };
                                grid.BeginEdit();

                                //再是表格
                                panel.Children.Add(grid);
                                //最后是下面的分页
                                panel.Children.Add(pager2Panel);
                                tab.Content = panel;
                            }
                            ListGridTab.Items.Add(tab);
                        }
                        //查看到最后一页时,提示并使按键灰掉
                        else
                        {
                            if (data.Count == 0)
                            {
                                MessageBox.Show("已是最后一页");
                                var tab   = ListGridTab.Items.Cast <TabItem>().FirstOrDefault(t => (string)t.Tag == tableName.ToString());
                                var panel = tab.Content as StackPanel;
                                panel.Children.OfType <StackPanel>().ToList().ForEach(member =>
                                {
                                    member.Children.OfType <Button>().ToList().ForEach(a =>
                                    {
                                        if (a.Content.ToString() == "下一页")
                                        {
                                            a.IsEnabled = false;
                                        }
                                        if (pageIndex[tableName] == 1)
                                        {
                                            if (a.Content.ToString() == "首页")
                                            {
                                                a.IsEnabled = false;
                                            }
                                            if (a.Content.ToString() == "上一页")
                                            {
                                                a.IsEnabled = false;
                                            }
                                        }
                                    });
                                });
                                pageIndex[tableName] = pageIndex[tableName] - 1;
                            }
                            else
                            {
                                //找到标签页
                                var tab = ListGridTab.Items.Cast <TabItem>().FirstOrDefault(t => (string)t.Tag == table.TableName);
                                //找到原先的翻页索引号
                                var index = 0;
                                if (!string.IsNullOrEmpty(table.TableName) && pageIndex.ContainsKey(table.TableName))
                                {
                                    index = pageIndex[table.TableName];
                                }
                                var panel = tab.Content as StackPanel;
                                if (panel != null)
                                {
                                    //分页控件的状态重置为原先选择的
                                    panel.Children.OfType <StackPanel>().SelectMany(p => p.Children).OfType <DataPager>()
                                    .ToList().ForEach(p => p.PageIndex = index);
                                    //数据重新绑定
                                    var grid = panel.Children.OfType <DataGrid>().FirstOrDefault();
                                    if (grid != null)
                                    {
                                        grid.ItemsSource = enties;
                                        grid.Tag         = table;
                                    }

                                    //显示页码
                                    panel.Children.OfType <StackPanel>().ToList().ForEach(member =>
                                    {
                                        member.Children.OfType <TextBlock>().ToList().ForEach(a =>
                                        {
                                            a.Text = string.Format("第 {0} 页", pageIndex[tableName] + 1);
                                        });
                                    });
                                }
                            }
                        }
                    }
                }

                ListGridTab.SelectedIndex = tabIndex;
                working = false;
            }

            if (SearchCondition.SelectedTableName != null)
            {
                var tab = ListGridTab.Items.OfType <TabItem>().FirstOrDefault(t => t.Tag.ToString() == SearchCondition.SelectedTableName);
                if (tab != null)
                {
                    ListGridTab.SelectedItem = tab;
                }
            }
        }