Exemple #1
0
        private CriterionAssociations CheckAssociations(List <CriterionAssociations> associations, string associationPath)
        {
            CriterionAssociations temp = null;

            foreach (var t in associations)
            {
                if (t.AssociationPath == associationPath)
                {
                    temp = t;
                }
            }
            if (temp == null)
            {
                temp = new CriterionAssociations(associationPath);
                associations.Add(temp);
            }
            return(temp);
        }
Exemple #2
0
        private void GetRequestParams <T>(CriterionRequest <T> criterion, params string[] keywork)
        {
            criterion.PageSize    = Convert.ToInt32(Request.Form["numPerPage"] ?? "10");
            criterion.CurrentPage = Convert.ToInt32(Request.Form["pageNum"] ?? "1");
            string orderby   = Request.Form["orderField"] ?? "";
            string direction = Request.Form["orderDirection"] ?? "";
            string keyWords  = Request.Form["keywords"] ?? "";

            ViewData["orderby"] = orderby;
            //direction = direction == "desc" ? "asc" : "desc";
            ViewData["direction"] = direction;
            ViewData["keyword"]   = keyWords;

            List <CriterionAssociations> associations = new List <CriterionAssociations>();

            if (!string.IsNullOrEmpty(keyWords))
            {
                var exp = NHibernate.Criterion.Expression.Disjunction();
                foreach (string str in keywork)
                {
                    string[] spt = str.Split('.');
                    if (spt != null && spt.Length == 2)
                    {
                        CriterionAssociations tempc = this.CheckAssociations(associations, spt[0]);
                        if (tempc.Criterias != null && tempc.Criterias.Length > 0)
                        {
                            ((NHibernate.Criterion.Disjunction)tempc.Criterias[0].Compile().Invoke()).Add(NHibernate.Criterion.Expression.Like(str, keyWords));
                        }
                        else
                        {
                            tempc.Criterias = new System.Linq.Expressions.Expression <Func <NHibernate.Criterion.ICriterion> >[] {
                                () => NHibernate.Criterion.Expression.Disjunction().Add(NHibernate.Criterion.Expression.Like(str, keyWords))
                            };
                        }
                    }
                    {
                        exp.Add(NHibernate.Criterion.Expression.Like(str, keyWords));
                    }
                }
                criterion.Criterias = new System.Linq.Expressions.Expression <Func <NHibernate.Criterion.ICriterion> >[] {
                    () => exp
                };
            }
            if (!string.IsNullOrEmpty(orderby))
            {
                string[] strt = orderby.Split('.');
                if (strt != null && strt.Length == 2)
                {
                    CriterionAssociations temp_order = this.CheckAssociations(associations, strt[0]);
                    temp_order.Orders = new System.Linq.Expressions.Expression <Func <NHibernate.Criterion.Order> >[]
                    {
                        () => direction == "asc"?NHibernate.Criterion.Order.Asc(orderby):NHibernate.Criterion.Order.Desc(orderby)
                    };
                }
                else
                {
                    criterion.Orders = new System.Linq.Expressions.Expression <Func <NHibernate.Criterion.Order> >[]
                    {
                        () => direction == "asc"?NHibernate.Criterion.Order.Asc(orderby):NHibernate.Criterion.Order.Desc(orderby)
                    };
                }
            }
            criterion.Associations = associations.ToArray();
        }