I've not checked it, but I think the problem is as the Page_load time, there's actually no selectditem. I would suggest trying to bind the labels in the prerender event, where dropdowns should actually have selected items (the first one if you didn't specify anything else)
EDIT :
you should do that for your prerender event :
Protected Sub Page_PreRender(sender As Object, e As EventArgs) Handles Me.Load
Dim strDataCollection As String = ddlDataCollection.Text
Dim strYear As String = DdlYear.Text
Dim strSubject As String = DdlSubject.Text
Dim strTeachingGroup As String = DdlTeachingGroup.Text
Dim strSubgroup As String = ddlSubgroup.SelectedItem.Text
lblHeaderYear.Text = "Year " & strYear
lblHeaderDataCollection.Text = " " & strDataCollection
lblHeaderSubject.Text = " " & strSubject
lblHeaderTeachingGroup.Text = " " & strTeachingGroup
lblHeaderSubroup.Text = " " & strSubgroup
End Sub
Note the "Handles Me.Load" after your PreRender event declaration. This is how you actually override the page's PreRender event , exactly as you do it for your PageLoad. You should then remove all prerender event on your labels in you aspx page.
Please note that you can also make use of the AutoEventWireup Page attribute :
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
This will allow you, for Page events only, to tell .NET to automatically override page events if a method with the same name is defined in your codebehind. In other words, you'd be able to remove the "Handles Me.xxx" after event declaration.