public static Ui.DataGrid GetProjectPublicGridList(List <int> ParentProjectIDList, List <int> ParentIDList, string Keywords, string orderBy, long startRowIndex, int pageSize, int UserID = 0)
        {
            long totalRows = 0;
            List <SqlParameter> parameters = new List <SqlParameter>();
            List <string>       conditions = new List <string>();

            conditions.Add("1=1");
            string sortorder = string.Empty;
            var    cmdlist   = new List <string>();

            if (!string.IsNullOrEmpty(Keywords))
            {
                parameters.Add(new SqlParameter("@LikeKeywords", "%" + Keywords + "%"));
                conditions.Add("([Name] like @LikeKeywords)");
            }
            if (ParentProjectIDList.Count > 0)
            {
                cmdlist = ViewRoomFeeHistory.GetPublicProjectIDListConditions(ParentProjectIDList, RoomIDName: "[ParentProjectID]", UserID: UserID);
            }
            if (ParentIDList.Count > 0)
            {
                cmdlist = ViewRoomFeeHistory.GetPublicParentIDListConditions(ParentIDList, RoomIDName: "[ID]", UserID: UserID);
            }
            if (cmdlist.Count > 0)
            {
                conditions.Add(string.Join(" or", cmdlist.ToArray()));
            }
            string fieldList = "A.* ";
            string Statement = " from (select [Project_Public].*,[Project].FullName as ProjectFullName from [Project_Public] left join [Project] on [Project].ID=[Project_Public].ParentProjectID)A where  " + string.Join(" and ", conditions.ToArray());
            var    list      = GetList <Project_PublicDetail>(fieldList, Statement, parameters, orderBy, startRowIndex, pageSize, out totalRows).ToArray();

            DataAccess.Ui.DataGrid dg = new Ui.DataGrid();
            dg.rows  = list;
            dg.total = totalRows;
            dg.page  = pageSize;
            return(dg);
        }