public function executeWrite(AgaviParameterHolder $rd)
 {
     if ($rd->getParameter('xaction', false) == 'create' || $rd->getParameter('xaction', false) == 'update' || $rd->getParameter('xaction', false) == 'destroy') {
         $rows = json_decode($rd->getParameter('rows', array()));
         if (!is_array($rows)) {
             $rows = array($rows);
         }
         $c = array();
         foreach ($rows as $category) {
             try {
                 if ($rd->getParameter('xaction', false) == 'destroy') {
                     if (isset($category->catid)) {
                         $this->categories->deleteCategoryRecord($category->catid);
                     }
                 } else {
                     $this->categories->createCategory((array) $category);
                     $c[] = (array) $category;
                 }
             } catch (Doctrine_Exception $e) {
             }
         }
         $this->setAttributeByRef('categories', $c);
         return $this->getDefaultViewName();
     }
     return $this->executeRead($rd);
 }