Below is a function that can be helpful in making a grid in the Silverstripe CMS. Providing css clases to mark columns and rows. What you need is the following setup: one or more Parent Pages, each with a bunch of ChildPages. The function below will return a data object set with the parent pages and the child pages with a a few extra variables that can be used in classes in your template.
static $number_of_items_per_row = 3;
function GridDataObjectSet() {
      $dos = new DataObjectSet();
      //get parents
      $parentDos = DataObject::get("ParentPageClassName");
      if($parentDos) {
         foreach($parentDos as $parentPage) {
            //get children
            $children = DataObject::get("ChildPageClassName", "`ParentID` = ".$parentPage->ID);
            //set children
            $parentPage->ChildPages = new DataObjectSet();
            if($children) {
               //work out row counts
               $parentPage->ChildCount = $children->count();
               $parentPage->ChildCount = $children->count();
               $parentPage->NumberOfRows = ceil($parentPage->ChildCount/ self::$number_of_items_per_row);
               $count = 0;
               foreach($children as $child) {
                  $count++;
                  //work out column position
                  $child->ColumnPosition = "middleColumn";
                  if(!(($count) % self::$number_of_items_per_row)) {
                     $child->ColumnPosition = "lastColumn";
                  }
                  elseif(!(($count - 1) % self::$number_of_items_per_row)) {
                     $child->ColumnPosition= "firstColumn";
                  }
                  //work out row position
                  $child->RowNumber = ceil($count / self::$number_of_items_per_row);
                  if($child->RowNumber == 1) {
                     $child->FirstRowLastRow = "onFirstRow";
                  }
                  elseif($child->RowNumber == $parentPage->NumberOfRows) {
                     $child->FirstRowLastRow = "onLastRow";
                  }
                  $parentPage->ChildPages->push($child);
               }
            }
            $dos->push($parentPage);
         }
      }
      return $dos;
   }
here is the template code that goes with it:
<% if GridDataObjectSet %><% control GridDataObjectSet %>
<h2>$Title</h2>
<ul>
   <% control ChildPages %>
   <li>
      <a href="$Link">$Title</a>
   </li>
   <% end_control %>
</ul>
<% end_control %><% end_if %>
number_of_logos_per_row