public override System.Data.DataSet GetList(Guid treeNodeID, Guid userID, OrderExpression order, List<SearchExpression> searchExpression, PagingInfo pagingInfo)
 {
     Query.Query query = new Query.CustomClassificationQuery(this);
     //query.ClassificationTreeID = treeNodeID;
     query.Columns = this.GetUserProperties(userID, treeNodeID, FieldPlaceHolder.Grid);
     query.UserFields = this.GetUserFields(userID, treeNodeID, FieldPlaceHolder.Grid);
     query.OrderExpression = order;
     query.SearchExpression = this.ValidateSearchExpression(query.Columns, query.UserFields, searchExpression);
     string sql = query.BuildListQuery(treeNodeID);
     using (CommonDataProvider provider = new CommonDataProvider())
     {
         if (pagingInfo.Enabled)
         {
             StringBuilder cursor = new StringBuilder();
             cursor.AppendLine("DECLARE @handle int, @rows int;");
             cursor.AppendLine("EXEC sp_cursoropen @handle OUT,");
             cursor.AppendFormat("'{0}',", sql.Replace("'", "''"));
             cursor.AppendLine("1,1,@rows OUT SELECT @rows;");
             cursor.AppendFormat("EXEC sp_cursorfetch @handle, 16, {0}, {1}\n", pagingInfo.Start + 1, pagingInfo.Limit);
             cursor.AppendLine("EXEC sp_cursorclose @handle;");
             return provider.ExecuteCommand(cursor.ToString());
         }
         else
         {
             return provider.ExecuteCommand(sql);
         }
     }
 }
 public override string getQuery(Guid treeNodeID, Guid userID, OrderExpression order, List<SearchExpression> searchExpression)
 {
     Query.Query query = new Query.CustomClassificationQuery(this);
     //query.ClassificationTreeID = treeNodeID;
     query.Columns = this.GetUserProperties(userID, treeNodeID, FieldPlaceHolder.Grid);
     query.UserFields = this.GetUserFields(userID, treeNodeID, FieldPlaceHolder.Grid);
     query.OrderExpression = order;
     query.SearchExpression = this.ValidateSearchExpression(query.Columns, query.UserFields, searchExpression);
     string sql = query.BuildListQuery(treeNodeID);
     return sql;
 }