SelectedValue должно быть одним значением в вашей базе данных, например, «Весна» или «Лето». Не следует указывать целый столбец данных из вашей базы данных. Прямо сейчас он пытается привязать целую колонку. Это верно только в том случае, если ваш оператор select возвращает одну строку, но я даже не уверен, что это правильно. Вам нужно выбрать выбранное значение для нагрузки? Обычно, если у вас есть несколько элементов управления данными, где один элемент управления фильтрует второй элемент управления, вам нужно два источника данных, где у одного есть набор фильтров:
<asp:DropDownList ID="ddSemester" runat="server" DataSourceID="SemesterSrc" DataTextField="Semester" DataValueField="SemesterId">
<asp:SqlDataSource ID="SemesterSrc" runat="server" ConnectionString="<%$ ConnectionStrings:mainConnString %>" SelectCommand="SELECT DISTINCT Semester,SemesterId FROM [Semester]"></asp:SqlDataSource>
<asp:SqlDataSource ID="SemesterSrcFiltered" runat="server" ConnectionString="<%$ ConnectionStrings:mainConnString %>" SelectCommand="SELECT * FROM [Semester]" FilterExpression="Semester='{0}'">
<FilterParameters>
<asp:ControlParameter Name="Semester" ControlId="ddSemester" PropertyName="SelectedValue"/>
</FilterParameters>
</asp:SqlDataSource>
DDL установит значениеэто используется разделом FilterParameters источника данных SemesterSrcFiltered, чтобы отфильтровать данные только по этому значению. Затем вы можете использовать этот источник данных в других элементах управления (например, в виде сетки) для отображения дополнительной информации. Не следует устанавливать оба элемента управления на один источник данных и пытаться манипулировать этим источником данных на лету с помощью фильтрации, чтобы это не оказывало нежелательного влияния и на ваш DDL.