// Token: 0x0600470D RID: 18189 RVA: 0x00142340 File Offset: 0x00140540
        private void OnAnyMouseLeftButtonDown(MouseButtonEventArgs e)
        {
            bool isKeyboardFocusWithin = base.IsKeyboardFocusWithin;
            bool flag = (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control;

            if (isKeyboardFocusWithin && !flag && !e.Handled && this.IsSelected)
            {
                DataGrid dataGridOwner = this.DataGridOwner;
                if (dataGridOwner != null)
                {
                    dataGridOwner.HandleSelectionForCellInput(this, false, true, false);
                    if (!this.IsEditing && !this.IsReadOnly)
                    {
                        dataGridOwner.BeginEdit(e);
                        e.Handled = true;
                        return;
                    }
                }
            }
            else if (!isKeyboardFocusWithin || !this.IsSelected || flag)
            {
                if (!isKeyboardFocusWithin)
                {
                    base.Focus();
                }
                DataGrid dataGridOwner2 = this.DataGridOwner;
                if (dataGridOwner2 != null)
                {
                    dataGridOwner2.HandleSelectionForCellInput(this, Mouse.Captured == null, true, true);
                }
                e.Handled = true;
            }
        }
Example #2
0
        /// <summary>
        ///     The left mouse button was pressed
        /// </summary>
        ///
        private void OnAnyMouseLeftButtonDown(MouseButtonEventArgs e)
        {
            bool focusWithin      = IsKeyboardFocusWithin;
            bool isCtrlKeyPressed = (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control;

            if (focusWithin && !isCtrlKeyPressed && !e.Handled && IsSelected)
            {
                // The cell is focused and there are no other special selection gestures,
                // enter edit mode.
                DataGrid dataGridOwner = DataGridOwner;
                if (dataGridOwner != null)
                {
                    // The cell was clicked, which means that other cells may
                    // need to be de-selected, let the DataGrid handle that.
                    dataGridOwner.HandleSelectionForCellInput(this, /* startDragging = */ false, /* allowsExtendSelect = */ true, /* allowsMinimalSelect = */ false);

                    if (!IsEditing && !IsReadOnly)
                    {
                        // Enter edit mode
                        dataGridOwner.BeginEdit(e);
                        e.Handled = true;
                    }

                    // Please note that unselecting rows is not really considered a
                    // handlable operation. Please see Dev11 bug#245510 about
                    // this issue.
                    //e.Handled = true;
                }
            }
            else if (!focusWithin || !IsSelected || isCtrlKeyPressed)
            {
                if (!focusWithin)
                {
                    // The cell should receive focus on click
                    Focus();
                }

                DataGrid dataGridOwner = DataGridOwner;
                if (dataGridOwner != null)
                {
                    // Let the DataGrid process selection
                    dataGridOwner.HandleSelectionForCellInput(this, /* startDragging = */ Mouse.Captured == null, /* allowsExtendSelect = */ true, /* allowsMinimalSelect = */ true);
                }

                e.Handled = true;
            }
#if PUBLIC_ONINPUT
            else
            {
                SendInputToColumn(e);
            }
#endif
        }
Example #3
0
        private static void OnDataGridRowMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            DataGridRow row = sender as DataGridRow;

            if (null == row)
            {
                return;
            }

            DataGridControl datagrid = VisualTreeHelperExtended.GetAncestor(row, typeof(DataGridControl)) as DataGridControl;

            if (null == datagrid)
            {
                return;
            }

            if (CollectionView.NewItemPlaceholder == row.Item)
            {
                ControlTemplate template = GetTemplate(datagrid);
                if (row.Template == template)
                {
                    row.Template = GetDefaultTemplate(datagrid);
                    row.UpdateLayout();

                    datagrid.CurrentItem = row.Item;

                    // 3/23/2010 - Get the first non-read only column (http://www.actiprosoftware.com/Support/Forums/ViewForumTopic.aspx?ForumTopicID=4710)
                    DataGridColumn column = datagrid.Columns.FirstOrDefault(col => !col.IsReadOnly);
                    if (column != null)
                    {
                        DataGridCell cell = VisualTreeHelperExtended.GetAncestor(column.GetCellContent(row), typeof(DataGridCell)) as DataGridCell;

                        if (cell != null)
                        {
                            cell.Focus();
                        }
                    }

                    datagrid.BeginEdit();
                }
            }
        }
 internal bool BeginEdit()
 {
     return(DataGrid.BeginEdit());
 }
Example #5
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 #6
0
        private void service_GetTableDataByContextIdCompleted(object sender, GetTableDataByContextIdCompletedEventArgs e)
        {
            this.Busy.IsBusy = false;

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

            if (e.Result != null)
            {
                var tableData = e.Result.Where(t => t.Tables.Count > 0).OrderBy(t => t.Tables.First().DatabaseName).ToList();

                foreach (var table in tableData)
                {
                    var data = table.Tables.First();
                    if (data.Data.Count == 0) continue;
                    var enties = (data.Data as IEnumerable<Dictionary<string, string>>).ToDataSource();
                    if (enties != null)
                    {
                        var tab = new TabItem
                        {
                            Header = data.DatabasePrefix,
                            Tag = data.DatabaseName,
                        };
                        if (data.Data.Count > 0)
                        {
                            var panel = new StackPanel
                            {
                                Orientation = Orientation.Vertical,
                            };

                            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);
                            tab.Content = panel;
                        }
                        ListGridTab.Items.Add(tab);
                    }

                }

            }
        }
Example #7
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;
            }
        }