public function getRowUrl($item)
    {
        if (!$item instanceof Varien_Object) {
            return parent::getRowUrl($item);
        }

        $rowUrlRoute = trim($this->getRowUrlRoute());
        if (empty($rowUrlRoute)) {
            return parent::getRowUrl($item);
        }

        $params = [];

        $rowUrlParams = $this->getRowUrlParams();
        $rowUrlParams = (is_array($rowUrlParams) ? $rowUrlParams : explode(',', $rowUrlParams));
        $rowUrlParams = array_filter(array_map('trim', $rowUrlParams));
        foreach ($rowUrlParams as $key => $value) {
            if (strpos($value, '{{') === 0 && strrpos($value, '}}') === (strlen($value) - 2)) {
                $value = $item->getDataUsingMethod(substr($value, 2, -2));
            }

            $params[$key] = $value;
        }

        $rowUrlQueryParams = $this->getRowUrlQueryParams();
        $rowUrlQueryParams = (is_array($rowUrlQueryParams) ? $rowUrlQueryParams : explode(',', $rowUrlQueryParams));
        $rowUrlQueryParams = array_filter(array_map('trim', $rowUrlQueryParams));
        foreach ($rowUrlQueryParams as $key => $value) {
            if (strpos($value, '{{') === 0 && strrpos($value, '}}') === (strlen($value) - 2)) {
                $value = $item->getDataUsingMethod(substr($value, 1, -1));
            }
            $params['_query'][$key] = $value;
        }

        return $this->getUrl($rowUrlRoute, $params);
    }