Exemplo n.º 1
0
        public void BindGrid(bool bindFlag)
        {
            if (!bindFlag)
            {
                return;
            }

            if (_grid.DataKeyNames.Length == 0)
            {
                throw new Exception(string.Format("The data key should be specified for grid '{0}'", _grid.ID));
            }

            string fieldId = _grid.DataKeyNames[0];

            int countOfOrderByFields = _businessQuery.Query.OrderByTerms.Cast <OrderByTerm>().Count(term => term.Field.ToLower() == fieldId.ToLower());

            if (countOfOrderByFields == 0)
            {
                _businessQuery.Query.OrderByTerms.Add(new OrderByTerm(fieldId, OrderByDirection.Descending));
            }

            if (countOfOrderByFields == 2)
            {
                _businessQuery.Query.OrderByTerms.RemoveAt(1);
            }

            IList list;

            // Search functionality
            if (HttpContext.Current.Request.QueryString["SearchString"] != null)
            {
                var searchFilter = new SearchFilter
                {
                    SearchPattern = HttpContext.Current.Request.QueryString["SearchString"]
                };
                searchFilter.AppendSimpleSearchPattern(_businessQuery.Query);

                list = DataPortal.Instance.Retrieve(_businessQuery.Query);
                UpdatePagerTotalCount();
                _businessQuery.Reinitialize();
            }
            else
            {
                list = DataPortal.Instance.Retrieve(_businessQuery.Query);
            }

            _grid.DataSource = list;

            if (list.Count > 0 && list[0] is Request)
            {
                var teamCache = new TeamCache();
                teamCache.PreloadChilds(list);

                var requestersCountCache = new RequestersCountCache();
                requestersCountCache.PreloadChilds(list);
            }

            if (GridBindingStart != null)
            {
                GridBindingStart(this, new GridControllerArgs(_grid, list));
            }

            _grid.DataBind();

            SaveQuery();

            UpdateSortDirectionSign();

            if (GridBindingComplete != null)
            {
                GridBindingComplete();
            }
        }