Assuming your grades have a limit to how high they can go could you use an isnull in your orderby and set a default high value for null occurences and a tie breaker for when two values have the same rank (e.g 35)
e.g
CREATE VIEW [dbo].[test]
AS
SELECT distinct
CC.Grades,
CC.Term,
FROM CanadianCrudes CC
CROSS APPLY (SELECT TOP 3 Grades
FROM CanadianCrudes iCC
WHERE CC.Term = iCC.Term
ORDER BY isnull(iCC.Grades, 150), ID