diff --git a/mod/assign/gradingtable.php b/mod/assign/gradingtable.php
index db4432dadea..1ebd44dad78 100644
--- a/mod/assign/gradingtable.php
+++ b/mod/assign/gradingtable.php
@@ -340,8 +340,8 @@ class assign_grading_table extends table_sql implements renderable {
             $link = $this->output->action_link($url, $icon);
             $separator = $this->output->spacer(array(), true);
         }
-
-        $grade = $this->display_grade($row->grade, $this->quickgrading, $row->userid, $row->timemarked);
+        $gradingdisabled = $this->assignment->grading_disabled($row->id);
+        $grade = $this->display_grade($row->grade, $this->quickgrading && !$gradingdisabled, $row->userid, $row->timemarked);
 
         //return $grade . $separator . $link;
         return $link . $separator . $grade;
diff --git a/mod/assign/locallib.php b/mod/assign/locallib.php
index aa53202b2b9..4d7c6239c02 100644
--- a/mod/assign/locallib.php
+++ b/mod/assign/locallib.php
@@ -2169,15 +2169,14 @@ class assign {
     private function gradebook_item_update($submission=NULL, $grade=NULL) {
 
         if($submission != NULL){
-
             $gradebookgrade = $this->convert_submission_for_gradebook($submission);
-
-
         }else{
-
-
             $gradebookgrade = $this->convert_grade_for_gradebook($grade);
         }
+        // Grading is disabled, return.
+        if ($this->grading_disabled($gradebookgrade['userid'])) {
+            return false;
+        }
         $assign = clone $this->get_instance();
         $assign->cmidnumber = $this->get_course_module()->id;
 
@@ -2591,6 +2590,9 @@ class assign {
             }
             if ($current->grade != $modified->grade) {
                 // grade changed
+                if ($this->grading_disabled($modified->userid)) {
+                    continue;
+                }
                 if ((int)$current->lastmodified > (int)$modified->lastmodified) {
                     // error - record has been modified since viewing the page
                     return get_string('errorrecordmodified', 'assign');
@@ -2768,7 +2770,7 @@ class assign {
      * @param int $userid - The student userid
      * @return bool $gradingdisabled
      */
-    private function grading_disabled($userid) {
+    public function grading_disabled($userid) {
         global $CFG;
 
         $gradinginfo = grade_get_grades($this->get_course()->id, 'mod', 'assign', $this->get_instance()->id, array($userid));
@@ -2856,14 +2858,20 @@ class assign {
         } else {
             // use simple direct grading
             if ($this->get_instance()->grade > 0) {
-                $mform->addElement('text', 'grade', get_string('gradeoutof', 'assign',$this->get_instance()->grade));
+                $gradingelement = $mform->addElement('text', 'grade', get_string('gradeoutof', 'assign',$this->get_instance()->grade));
                 $mform->addHelpButton('grade', 'gradeoutofhelp', 'assign');
                 $mform->setType('grade', PARAM_TEXT);
+                if ($gradingdisabled) {
+                    $gradingelement->freeze();
+                }
             } else {
                 $grademenu = make_grades_menu($this->get_instance()->grade);
                 if (count($grademenu) > 0) {
-                    $mform->addElement('select', 'grade', get_string('grade').':', $grademenu);
+                    $gradingelement = $mform->addElement('select', 'grade', get_string('grade').':', $grademenu);
                     $mform->setType('grade', PARAM_INT);
+                    if ($gradingdisabled) {
+                        $gradingelement->freeze();
+                    }
                 }
             }
         }
@@ -3115,6 +3123,9 @@ class assign {
         if (empty($CFG->enableoutcomes)) {
             return;
         }
+        if ($this->grading_disabled($userid)) {
+            return;
+        }
 
         require_once($CFG->libdir.'/gradelib.php');
 
@@ -3175,12 +3186,14 @@ class assign {
             $grade = $this->get_user_grade($userid, true);
             $gradingdisabled = $this->grading_disabled($userid);
             $gradinginstance = $this->get_grading_instance($userid, $gradingdisabled);
-            if ($gradinginstance) {
-                $grade->grade = $gradinginstance->submit_and_get_grade($formdata->advancedgrading, $grade->id);
-            } else {
-                // handle the case when grade is set to No Grade
-                if (isset($formdata->grade)) {
-                    $grade->grade= grade_floatval(unformat_float($formdata->grade));
+            if (!$gradingdisabled) {
+                if ($gradinginstance) {
+                    $grade->grade = $gradinginstance->submit_and_get_grade($formdata->advancedgrading, $grade->id);
+                } else {
+                    // handle the case when grade is set to No Grade
+                    if (isset($formdata->grade)) {
+                        $grade->grade = grade_floatval(unformat_float($formdata->grade));
+                    }
                 }
             }
             $grade->grader= $USER->id;