private List <object> GenerateData(object entity, string gridName, List <SoaDataGridColumn> columns)
        {
            Dictionary <string, object> dict;

            using (GridDataConvert dp = new GridDataConvert())
            {
                dict = dp.Process(entity, gridName);
            }

            List <object> ret = new List <object>();

            foreach (SoaDataGridColumn col in columns)
            {
                if (dict.ContainsKey(col.Name))
                {
                    ret.Add(dict[col.Name]);
                }
                else
                {
                    object o = null;
                    try
                    {
                        o = EntityScript.GetPropertyValue(entity, col.Name);
                    }
                    catch (Exception)    // 不一定有这个属性,例如大写金额
                    {
                    }
                    ret.Add(o);
                }
            }

            return(ret);
        }
        internal static IList <Dictionary <string, object> > InternalGetItems(string winTabName, NameValueCollection nvc)
        {
            if (!Utils.AuthHelper.CheckAuthentication())
            {
                return(null);
            }

            ISearchManager sm       = Feng.Server.Utils.ServiceHelper.GetSearchManagerFromWindowTab(winTabName);
            var            smParams = Utils.WebHelper.GetSearchManagerParameters(sm, nvc);
            var            se       = smParams.Item1;
            var            so       = smParams.Item2;

            sm.FillSearchAdditionals(ref se, ref so);
            IEnumerable list = sm.GetData(se, so);

            WindowTabInfo tabInfo       = ADInfoBll.Instance.GetWindowTabInfo(winTabName);
            bool          includeDetail = false;

            if (!string.IsNullOrEmpty(nvc["detail"]))
            {
                includeDetail = Feng.Utils.ConvertHelper.ToBoolean(nvc["detail"]).Value;
            }
            using (GridDataConvert dp = new GridDataConvert(!includeDetail))
            {
                IList <Dictionary <string, object> > r = dp.Process(list, tabInfo.GridName);

                return(r);
            }
        }