/// <summary>
        /// 加载用户自定义设置(如未加载则返回false)
        /// </summary>
        /// <param name="grid"></param>
        /// <returns></returns>
        public static bool LoadGridSettingsByXml(CustomGridControl grid)
        {
            if (!File.Exists(CurrentApplicationDirectory))
            {
                return(false);
            }
            //IContextService context = new ContextService();
            //var userAccount = context.GetUser().Account;
            //todo:临时处理
            var userAccount = "admin";
            var doc         = new XmlDocument();

            doc.Load(CurrentApplicationDirectory);
            var exist = ExistAccount(userAccount, grid, doc) ?? ExistAccount("mainDefalut", grid, doc);

            if (exist == null)
            {
                return(false);
            }
            var columns = grid.Columns;

            //加上BeginInit,EndInit为了修复自定义列顺序无效问题
            grid.BeginInit();
            foreach (var column in columns)
            {
                var eleCol = (XmlElement)exist.SelectSingleNode(string.Format("./Column[@Name='{0}']", column.FieldName));
                if (eleCol != null)
                {
                    column.Width        = double.Parse(eleCol.GetAttribute("Width"));
                    column.VisibleIndex = string.IsNullOrEmpty(eleCol.GetAttribute("VisibleIndex")) ? column.VisibleIndex : int.Parse(eleCol.GetAttribute("VisibleIndex"));
                }
            }
            grid.EndInit();
            return(true);
        }
        public static bool ExistCustomerSetting(CustomGridControl grid)
        {
            //IContextService context = new ContextService();
            //var userAccount = context.GetUser().Account;
            //todo:临时处理
            var userAccount = "admin";
            var doc         = new XmlDocument();

            if (!File.Exists(CurrentApplicationDirectory))
            {
                return(false);
            }
            doc.Load(CurrentApplicationDirectory);
            var existUser = doc.DocumentElement.SelectSingleNode(string.Format("//User[@Account='{0}']", userAccount));

            if (existUser == null)
            {
                return(false);
            }
            var existGrid = existUser.SelectSingleNode(string.Format("./Grid[@UniqueName='{0}']", grid.UniqueName));

            if (existGrid == null)
            {
                return(false);
            }
            return(true);
        }
        private void OnCustomersViewGetCustomGridPreview(object sender, GetGridPreviewEventArgs e)
        {
            GridControl gridPreview = new CustomGridControl();
            ColumnView  view        = new CustomGridView(gridPreview);

            gridPreview.MainView   = view;
            gridPreview.DataSource = CustomersBindingSource;
            e.GridPreview          = gridPreview;
            view.Columns.AddVisible("ID");
            e.GroupColumn = view.Columns.AddVisible("Name");
        }
        public void InitViewStylesTest()
        {
            CustomGridControl gc = new CustomGridControl();

            gc.ForceInitialize();
            gc.MainView = new CustomGridView(gc);
            GridColumn col = ((ColumnView)gc.MainView).Columns.AddField("Column");

            using (CustomGridViewPrinting cgvp = new CustomGridViewPrinting(gc, col)) {
                cgvp.InitFrame(gc.MainView, "GridView", new Bitmap(16, 16));
                typeof(CustomGridViewPrinting).InvokeMember("InitViewStyles", BindingFlags.Instance |
                                                            BindingFlags.NonPublic | BindingFlags.InvokeMethod, null, cgvp, new object[0]);
            }
        }
            public GridExpander(CustomGridControl grid, IMassInputListViewModel viewModel)
            {
                if (grid == null)
                {
                    throw new ArgumentNullException("grid");
                }

                if (viewModel == null)
                {
                    throw new ArgumentNullException("viewModel");
                }

                _grid      = grid;
                _viewModel = viewModel;
            }
        private void AddExpander(CustomGridControl grid)
        {
            var ctx = (IMassInputListViewModel)grid.DataContext;

            if (ctx == null)
            {
                return;
            }

            GridExpander expander;

            if (_gridExpanders.TryGetValue(grid, out expander))
            {
                expander.StopObserving();
                _gridExpanders.Remove(grid);
            }

            expander             = new GridExpander(grid, ctx);
            _gridExpanders[grid] = expander;
            expander.StartObserving();
        }
        private static XmlNode ExistAccount(string account, CustomGridControl grid, XmlDocument doc)
        {
            if (!File.Exists(CurrentApplicationDirectory))
            {
                return(null);
            }
            doc.Load(CurrentApplicationDirectory);
            var existUser = doc.DocumentElement.SelectSingleNode(string.Format("//User[@Account='{0}']", account));

            if (existUser == null)
            {
                return(null);
            }
            var existGrid = existUser.SelectSingleNode(string.Format("./Grid[@UniqueName='{0}']", grid.UniqueName));

            if (existGrid == null)
            {
                return(null);
            }
            return(existGrid);
        }
示例#8
0
        private void SelectGridItem(CustomGridControl grid)
        {
            if (grid == null)
            {
                return;
            }

            grid.UnselectAll();

            var model = GetModel();

            if (model == null || model.EditValue == null)
            {
                return;
            }

            var itemsSource = grid.ItemsSource as IList;

            if (itemsSource == null)
            {
                return;
            }

            Func <object, string, WMSBusinessObject, bool> compareFunc = (val, valMember, row) =>
            {
                if (row == null)
                {
                    return(false);
                }
                if (string.IsNullOrEmpty(valMember))
                {
                    return(val.Equals(row.GetKey()));
                }
                return(val.Equals(row.GetProperty(valMember)));
            };

            try
            {
                grid.BeginSelection();
                var index = -1;
                for (var i = 0; i < grid.RowsCount; i++)
                {
                    var obj = grid.GetRow(i) as WMSBusinessObject;
                    if (compareFunc(model.EditValue, model.ValueMember, obj))
                    {
                        index = i;
                        break;
                    }
                }

                if (index < 0)
                {
                    return;
                }

                grid.SelectItem(index);
                var tableView = grid.View as TableView;
                if (tableView != null)
                {
                    tableView.FocusedRowHandle = index;
                    tableView.MoveFocusedRow(tableView.FocusedRowHandle);
                }
            }
            finally
            {
                grid.EndSelection();
            }
        }
        private void SelectGridItem(CustomGridControl grid)
        {
            if (grid == null)
            {
                return;
            }

            var selectionItems = grid.SelectedItems;
            var itemsSource    = grid.ItemsSource as IList;

            if (itemsSource == null || selectionItems == null)
            {
                return;
            }

            var tableView = grid.View as TableView;

            if (tableView == null)
            {
                return;
            }

            // если ничего не выбрано - нужно сбрасывать focus (в противном случае при сортировках записи скачут)
            if (selectionItems.Count == 0)
            {
                var mv = DataContext as IListViewModel;
                if (mv != null && mv.IsSelectedFirstItem)
                {
                    grid.UnselectAll();
                    grid.SelectItem(0);
                    MoveFocusedRow(tableView, 0);
                    return;
                }

                tableView.FocusedRowHandle = -1;
                return;
            }

            try
            {
                grid.BeginSelection();
                grid.UnselectAll();

                foreach (var item in selectionItems)
                {
                    var ikh = item as IKeyHandler;
                    if (ikh == null)
                    {
                        continue;
                    }

                    var index = grid.IndexOf(ikh.GetKey());
                    if (index < 0)
                    {
                        continue;
                    }

                    grid.SelectItem(index);
                    MoveFocusedRow(tableView, index);
                }
            }
            finally
            {
                grid.EndSelection();
            }
        }