/**
  * Handles the request for an item
  * @param {GridField} $gridField Grid Field reference
  * @param {SS_HTTPRequest} $request HTTP Request
  * @return {mixed} Returns the result of handleRequest on the item request handler
  */
 public function handleItem($gridField, $request)
 {
     $controller = $gridField->getForm()->Controller();
     if (is_numeric($request->param('ID'))) {
         $record = $gridField->getList()->byId($request->param("ID"));
     } else {
         if ($request->getVar('ItemType')) {
             if ($request->getVar('ItemType') == $gridField->getModelClass() || is_subclass_of($request->getVar('ItemType'), $gridField->getModelClass())) {
                 $record = Object::create($request->getVar('ItemType'));
             } else {
                 user_error('Class ' . $request->getVar('ItemType') . ' is not a sub class of ' . $gridField->getModelClass(), E_USER_ERROR);
             }
         } else {
             user_error('No item type selected', E_USER_ERROR);
         }
     }
     $class = $this->getItemRequestClass();
     $handler = Object::create($class, $gridField, $this, $record, $controller, $this->name);
     $handler->setTemplate($this->template);
     return $handler->handleRequest($request, DataModel::inst());
 }