/**
  * @param string $strName
  * @param string $mixValue
  * @throws QCallerException
  * @throws QInvalidCastException
  */
 public function __set($strName, $mixValue)
 {
     switch ($strName) {
         case "SortColumnId":
             try {
                 $this->strSortColumnId = QType::Cast($mixValue, QType::String);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case "SortColumnIndex":
             try {
                 $intIndex = QType::Cast($mixValue, QType::Integer);
                 if ($intIndex < 0) {
                     $intIndex = 0;
                 }
                 if ($intIndex < count($this->objColumnArray)) {
                     $objColumn = $this->objColumnArray[$intIndex];
                 } elseif (count($this->objColumnArray) > 0) {
                     $objColumn = end($this->objColumnArray);
                 } else {
                     // no columns
                     $objColumn = null;
                 }
                 if ($objColumn && $objColumn->OrderByClause) {
                     $this->strSortColumnId = $objColumn->Id;
                 }
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
             break;
         case "SortDirection":
             try {
                 $this->intSortDirection = QType::Cast($mixValue, QType::Integer);
                 if ($this->intSortDirection != self::SortDescending) {
                     $this->intSortDirection = self::SortAscending;
                     // make sure its only one of two values
                 }
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case "SortInfo":
             // restore the SortInfo obtained from the getter
             try {
                 if (isset($mixValue['id']) && isset($mixValue['dir'])) {
                     $this->intSortDirection = QType::Cast($mixValue['dir'], QType::Integer);
                     $this->strSortColumnId = QType::Cast($mixValue['id'], QType::String);
                 }
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         default:
             try {
                 parent::__set($strName, $mixValue);
                 break;
             } catch (QCallerException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
     }
 }
 public function __set($strName, $mixValue)
 {
     switch ($strName) {
         case 'AutoWidth':
             try {
                 $this->blnAutoWidth = QType::Cast($mixValue, QType::Boolean);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'autoWidth', $this->blnAutoWidth);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'DeferRender':
             try {
                 $this->blnDeferRender = QType::Cast($mixValue, QType::Boolean);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'deferRender', $this->blnDeferRender);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'Info':
             try {
                 $this->blnInfo = QType::Cast($mixValue, QType::Boolean);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'info', $this->blnInfo);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'JQueryUI':
             try {
                 $this->blnJQueryUI = QType::Cast($mixValue, QType::Boolean);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'jQueryUI', $this->blnJQueryUI);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'LengthChange':
             try {
                 $this->blnLengthChange = QType::Cast($mixValue, QType::Boolean);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'lengthChange', $this->blnLengthChange);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'Ordering':
             try {
                 $this->blnOrdering = QType::Cast($mixValue, QType::Boolean);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'ordering', $this->blnOrdering);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'Paging':
             try {
                 $this->blnPaging = QType::Cast($mixValue, QType::Boolean);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'paging', $this->blnPaging);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'Processing':
             try {
                 $this->blnProcessing = QType::Cast($mixValue, QType::Boolean);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'processing', $this->blnProcessing);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'ScrollX':
             try {
                 $this->blnScrollX = QType::Cast($mixValue, QType::Boolean);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'scrollX', $this->blnScrollX);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'ScrollY':
             try {
                 $this->strScrollY = QType::Cast($mixValue, QType::String);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'scrollY', $this->strScrollY);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'Searching':
             try {
                 $this->blnSearching = QType::Cast($mixValue, QType::Boolean);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'searching', $this->blnSearching);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'ServerSide':
             try {
                 $this->blnServerSide = QType::Cast($mixValue, QType::Boolean);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'serverSide', $this->blnServerSide);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'StateSave':
             try {
                 $this->blnStateSave = QType::Cast($mixValue, QType::Boolean);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'stateSave', $this->blnStateSave);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'Ajax':
             $this->mixAjax = $mixValue;
             $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'ajax', $mixValue);
             break;
         case 'Data':
             try {
                 $this->arrData = QType::Cast($mixValue, QType::ArrayType);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'data', $this->arrData);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'CreatedRow':
             try {
                 $this->mixCreatedRow = QType::Cast($mixValue, 'QJsClosure');
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'createdRow', $this->mixCreatedRow);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'DrawCallback':
             try {
                 $this->mixDrawCallback = QType::Cast($mixValue, 'QJsClosure');
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'drawCallback', $this->mixDrawCallback);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'FooterCallback':
             try {
                 $this->mixFooterCallback = QType::Cast($mixValue, 'QJsClosure');
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'footerCallback', $this->mixFooterCallback);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'FormatNumber':
             try {
                 $this->mixFormatNumber = QType::Cast($mixValue, 'QJsClosure');
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'formatNumber', $this->mixFormatNumber);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'HeaderCallback':
             try {
                 $this->mixHeaderCallback = QType::Cast($mixValue, 'QJsClosure');
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'headerCallback', $this->mixHeaderCallback);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'InfoCallback':
             try {
                 $this->mixInfoCallback = QType::Cast($mixValue, 'QJsClosure');
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'infoCallback', $this->mixInfoCallback);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'InitComplete':
             try {
                 $this->mixInitComplete = QType::Cast($mixValue, 'QJsClosure');
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'initComplete', $this->mixInitComplete);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'PreDrawCallback':
             try {
                 $this->mixPreDrawCallback = QType::Cast($mixValue, 'QJsClosure');
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'preDrawCallback', $this->mixPreDrawCallback);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'RowCallback':
             try {
                 $this->mixRowCallback = QType::Cast($mixValue, 'QJsClosure');
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'rowCallback', $this->mixRowCallback);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'StateLoadCallback':
             try {
                 $this->mixStateLoadCallback = QType::Cast($mixValue, 'QJsClosure');
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'stateLoadCallback', $this->mixStateLoadCallback);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'StateLoaded':
             try {
                 $this->mixStateLoaded = QType::Cast($mixValue, 'QJsClosure');
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'stateLoaded', $this->mixStateLoaded);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'StateLoadParams':
             try {
                 $this->mixStateLoadParams = QType::Cast($mixValue, 'QJsClosure');
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'stateLoadParams', $this->mixStateLoadParams);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'StateSaveCallback':
             try {
                 $this->mixStateSaveCallback = QType::Cast($mixValue, 'QJsClosure');
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'stateSaveCallback', $this->mixStateSaveCallback);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'StateSaveParams':
             try {
                 $this->mixStateSaveParams = QType::Cast($mixValue, 'QJsClosure');
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'stateSaveParams', $this->mixStateSaveParams);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'DeferLoading':
             $this->mixDeferLoading = $mixValue;
             $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'deferLoading', $mixValue);
             break;
         case 'Destroy':
             try {
                 $this->blnDestroy = QType::Cast($mixValue, QType::Boolean);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'destroy', $this->blnDestroy);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'DisplayStart':
             try {
                 $this->intDisplayStart = QType::Cast($mixValue, QType::Integer);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'displayStart', $this->intDisplayStart);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'Dom':
             try {
                 $this->strDom = QType::Cast($mixValue, QType::String);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'dom', $this->strDom);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'LengthMenu':
             try {
                 $this->arrLengthMenu = QType::Cast($mixValue, QType::ArrayType);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'lengthMenu', $this->arrLengthMenu);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'Order':
             try {
                 $this->arrOrder = QType::Cast($mixValue, QType::ArrayType);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'order', $this->arrOrder);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'OrderCellsTop':
             try {
                 $this->blnOrderCellsTop = QType::Cast($mixValue, QType::Boolean);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'orderCellsTop', $this->blnOrderCellsTop);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'OrderClasses':
             try {
                 $this->blnOrderClasses = QType::Cast($mixValue, QType::Boolean);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'orderClasses', $this->blnOrderClasses);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'OrderFixed':
             $this->mixOrderFixed = $mixValue;
             $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'orderFixed', $mixValue);
             break;
         case 'OrderMulti':
             try {
                 $this->blnOrderMulti = QType::Cast($mixValue, QType::Boolean);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'orderMulti', $this->blnOrderMulti);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'PageLength':
             try {
                 $this->intPageLength = QType::Cast($mixValue, QType::Integer);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'pageLength', $this->intPageLength);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'PagingType':
             try {
                 $this->strPagingType = QType::Cast($mixValue, QType::String);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'pagingType', $this->strPagingType);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'Renderer':
             $this->mixRenderer = $mixValue;
             $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'renderer', $mixValue);
             break;
         case 'Retrieve':
             try {
                 $this->blnRetrieve = QType::Cast($mixValue, QType::Boolean);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'retrieve', $this->blnRetrieve);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'ScrollCollapse':
             try {
                 $this->blnScrollCollapse = QType::Cast($mixValue, QType::Boolean);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'scrollCollapse', $this->blnScrollCollapse);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'Search':
             $this->mixSearch = $mixValue;
             $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'search', $mixValue);
             break;
         case 'SearchCols':
             try {
                 $this->arrSearchCols = QType::Cast($mixValue, QType::ArrayType);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'searchCols', $this->arrSearchCols);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'SearchDelay':
             try {
                 $this->intSearchDelay = QType::Cast($mixValue, QType::Integer);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'searchDelay', $this->intSearchDelay);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'StateDuration':
             try {
                 $this->intStateDuration = QType::Cast($mixValue, QType::Integer);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'stateDuration', $this->intStateDuration);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'StripeClasses':
             try {
                 $this->arrStripeClasses = QType::Cast($mixValue, QType::ArrayType);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'stripeClasses', $this->arrStripeClasses);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'TabIndex':
             try {
                 $this->intTabIndex = QType::Cast($mixValue, QType::Integer);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'tabIndex', $this->intTabIndex);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'ColumnDefs':
             try {
                 $this->arrColumnDefs = QType::Cast($mixValue, QType::ArrayType);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'columnDefs', $this->arrColumnDefs);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'Columns':
             try {
                 $this->arrColumns = QType::Cast($mixValue, QType::ArrayType);
                 $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'columns', $this->arrColumns);
                 break;
             } catch (QInvalidCastException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
         case 'Language':
             $this->mixLanguage = $mixValue;
             $this->AddAttributeScript($this->getJqSetupFunction(), 'option', 'language', $mixValue);
             break;
         default:
             try {
                 parent::__set($strName, $mixValue);
                 break;
             } catch (QCallerException $objExc) {
                 $objExc->IncrementOffset();
                 throw $objExc;
             }
     }
 }