Sir,
Having a gridview with a multiple columns. Among those cols 1 column has dropdownlist. It has to fill with Session year of last five years as "--Select--", "2016-2017", "2017-2018", "2018-2019", "2019-2020", "2020-2021" (also with same values as items). 
Dropdownlist having selectedValue property that binded with database.
it's giving error on binding as 
"System.ArgumentOutOfRangeException: 'dropdownyear' has a SelectedValue which is invalid because it does not exist in the list of items. "
 HTML: 
<asp:GridView ID="gridviewfees" ShowHeaderWhenEmpty="true" runat="server" DataKeyNames="id" runat="server" AutoGenerateColumns="False" ShowFooter="true" HeaderStyle-Font-Size="14px" HeaderStyle-Font-Bold="true" PageSize="5" Width="100%" OnRowDataBound="gridviewfees_RowDataBound">
    <FooterStyle CssClass="feegridviewfooter" />
     
     <Columns>
       <asp:TemplateField>
         <HeaderTemplate>                                                                    
           <tr class="gvHeader">
              <th>Year</th>
              <th colspan="4"><font color="Red">Primary</font></th>                       
              <th colspan="4"><font color="Red">Middle</font></th>
              <th colspan="4"><font color="Red">Secondary</font></th>
              <th colspan="4"><font color="Red">Higher Secondary</font></th>
              <th></th>
           </tr>
           <tr class="gvHeader">
             <th></th>                                                       
             <th>Tution Fee<br/>(Rs.)</th>
             <th>Annual Fee<br/>(Rs.)</th>
             <th>Transport Fee<br/>(Rs.)</th>
             <th>Other Fee<br/>(Rs.)</th>
 
             <th>Tution Fee<br/>(Rs.)</th>
             <th>Annual Fee<br/>(Rs.)</th>
             <th>Transport Fee<br/>(Rs.)</th>
             <th>Other Fee<br/>(Rs.)</th>
              
             <th>Tution Fee<br/>(Rs.)</th>
             <th>Annual Fee<br/>(Rs.)</th>
             <th>Transport Fee<br/>(Rs.)</th>
             <th>Other Fee<br/>(Rs.)</th>
              
             <th>Tution Fee<br/>(Rs.)</th>
             <th>Annual Fee<br/>(Rs.)</th>
             <th>Transport Fee<br/>(Rs.)</th>
             <th>Other Fee<br/>(Rs.)</th>
              
             <th></th>
           </tr>
         </HeaderTemplate>
         <ItemTemplate>
             <tr class="gvHeader">
              
           <td>
               <asp:DropDownList ID="dropdownyear" runat="server" Enabled="false" SelectedValue='<%#  Server.HtmlEncode(Eval("for_year").ToString())%>' Width="130px">
                   <%--<asp:ListItem Value="0">--Select--</asp:ListItem>
                    
                   <asp:ListItem Value="2015-2016">2015-2016</asp:ListItem>
                   <asp:ListItem Value="2016-2017">2016-2017</asp:ListItem>
                   <asp:ListItem Value="2017-2018">2017-2018</asp:ListItem>
                   <asp:ListItem Value="2018-2019">2018-2019</asp:ListItem>
                   <asp:ListItem Value="2019-2020">2019-2020</asp:ListItem>--%>
               </asp:DropDownList>
           </td>
           
           <td><asp:Label ID="textboxptu" runat="server" Text='<%#  Server.HtmlEncode(Eval("p_tutionfee").ToString())%>'></asp:Label></td>
           <td><asp:Label ID="textboxpa" runat="server" Text='<%#  Server.HtmlEncode(Eval("p_annualfee").ToString())%>'></asp:Label></td>
           <td><asp:Label ID="textboxptr" runat="server" Text='<%# Server.HtmlEncode(Eval("p_transportfee").ToString())%>'></asp:Label></td>
           <td><asp:Label ID="textboxpo" runat="server" Text='<%#  Server.HtmlEncode(Eval("p_otherfee").ToString())%>'></asp:Label></td>
 
           <td><asp:Label ID="textboxmtu" runat="server" Text='<%# Server.HtmlEncode(Eval("m_tutionfee").ToString())%>'></asp:Label></td>
           <td><asp:Label ID="textboxma" runat="server" Text='<%#  Server.HtmlEncode(Eval("m_annualfee").ToString())%>'></asp:Label></td>
           <td><asp:Label ID="textboxmtr" runat="server" Text='<%# Server.HtmlEncode(Eval("m_transportfee").ToString())%>'></asp:Label></td>
           <td><asp:Label ID="textboxmo" runat="server" Text='<%#  Server.HtmlEncode(Eval("m_otherfee").ToString())%>'></asp:Label></td>
 
           <td><asp:Label ID="textboxstu" runat="server" Text='<%# Server.HtmlEncode(Eval("s_tutionfee").ToString())%>'></asp:Label></td>
           <td><asp:Label ID="textboxsa" runat="server" Text='<%#  Server.HtmlEncode(Eval("s_annualfee").ToString())%>'></asp:Label></td>
           <td><asp:Label ID="textboxstr" runat="server" Text='<%# Server.HtmlEncode(Eval("s_transportfee").ToString())%>'></asp:Label></td>
           <td><asp:Label ID="textboxso" runat="server" Text='<%#  Server.HtmlEncode(Eval("s_otherfee").ToString())%>'></asp:Label></td>
            
           <td><asp:Label ID="textboxhtu" runat="server" Text='<%# Server.HtmlEncode(Eval("h_tutionfee").ToString())%>'></asp:Label></td>
           <td><asp:Label ID="textboxha" runat="server" Text='<%# Server.HtmlEncode(Eval("h_annualfee").ToString())%>'></asp:Label></td>
           <td><asp:Label ID="textboxhtr" runat="server" Text='<%# Server.HtmlEncode(Eval("h_transportfee").ToString())%>'></asp:Label></td>
           <td><asp:Label ID="textboxho" runat="server" Text='<%#  Server.HtmlEncode(Eval("h_otherfee").ToString())%>'></asp:Label></td>
           <td><asp:Button ID="btnfeeedit" CommandName="Edit" runat="server" Text="Edit"></asp:Button></td>
             </tr>
         </ItemTemplate>
 
         <EditItemTemplate>
           <tr>
            <td>
               <asp:DropDownList ID="dropdownedityear" Enabled="false" runat="server" SelectedValue='<%#  Server.HtmlEncode(Eval("for_year").ToString())%>' Width="130px">
                   <%--<asp:ListItem Value="0">--Select--</asp:ListItem>
                   <asp:ListItem Value="2015-2016">2015-2016</asp:ListItem>
                   <asp:ListItem Value="2016-2017">2016-2017</asp:ListItem>
                   <asp:ListItem Value="2017-2018">2017-2018</asp:ListItem>
                   <asp:ListItem Value="2018-2019">2018-2019</asp:ListItem>
                   <asp:ListItem Value="2019-2020">2019-2020</asp:ListItem>--%>
               </asp:DropDownList> 
           </td>
           <td>
               <asp:Button ID="btnfeeupdate" CommandName="Update" runat="server" Text="Update" ValidationGroup="editfee"></asp:Button> 
               <asp:Button ID="btnfeecancel" CommandName="Cancel" runat="server" Text="Cancel" CausesValidation="false"></asp:Button>
           </td>
          </tr>
         </EditItemTemplate>
         <FooterTemplate>
          <tr>
           <td>
               <asp:DropDownList ID="dropdowninsyear" runat="server" Width="130px">
                   <%--<asp:ListItem Value="0">Select</asp:ListItem>
                    
                   <asp:ListItem Value="2015-2016">2015-2016</asp:ListItem>
                   <asp:ListItem Value="2016-2017">2016-2017</asp:ListItem>
                   <asp:ListItem Value="2017-2018">2017-2018</asp:ListItem>
                   <asp:ListItem Value="2018-2019">2018-2019</asp:ListItem>
                   <asp:ListItem Value="2019-2020">2019-2020</asp:ListItem>--%>
                     
                   <%--<asp:ListItem Value="2020-2021">2020-2021</asp:ListItem>--%>
               </asp:DropDownList>
               <asp:RequiredFieldValidator ID="RequiredFieldValidator1dropdowninsyear" ControlToValidate="dropdowninsyear" runat="server" ErrorMessage="*Required" CssClass="errmsg" Display="Dynamic" SetFocusOnError="true"></asp:RequiredFieldValidator>                 
           </td>
          </tr>            
         </FooterTemplate>
       </asp:TemplateField>
     </Columns>
   </asp:GridView>
 
Protected Sub gridviewfees_RowDataBound(sender As Object, e As GridViewRowEventArgs)
    Dim startyear As Integer = Now.Year - 5
    Dim endyear As Integer = Now.Year
    If (e.Row.RowType = DataControlRowType.Footer Or e.Row.RowType = DataControlRowType.DataRow) Then
 
        'Find the DropDownList in the Row
 
        Dim ddlYears As DropDownList = CType(e.Row.FindControl("dropdownyear"), DropDownList)
        Dim EditddlYears As DropDownList = CType(e.Row.FindControl("dropdownedityear"), DropDownList)
        Dim FooterddlYears As DropDownList = CType(e.Row.FindControl("dropdowninsyear"), DropDownList)
        'EditddlYears.Items.Clear()
        'FooterddlYears.Items.Clear()
 
        Dim str As String = Nothing
        Dim list As New List(Of String)
        For i As Integer = 0 To 4
            str = startyear & "-" & startyear + 1
            ddlYears.Items.Add(str)
            ddlYears.Items(i).Value = str
            EditddlYears.Items.Add(str)
            EditddlYears.Items(i).Value = str
            FooterddlYears.Items.Add(str)
            FooterddlYears.Items(i).Value = str
        Next i
 
 
        ''Add Default Item in the DropDownList
        EditddlYears.Items.Insert(0, New ListItem("--Select--"))
        FooterddlYears.Items.Insert(0, New ListItem("--Select--"))
 
    End If
End Sub
Sub loadfees()
    Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("dsejConnectionString").ConnectionString)
        Try
            Using cmda As New SqlDataAdapter("usp_commandtosps", conn)
                cmda.SelectCommand.CommandType = CommandType.StoredProcedure
                cmda.SelectCommand.Parameters.AddWithValue("@flag", vdata.remove_bad_words(20))
                cmda.SelectCommand.Parameters.AddWithValue("@ip", Session("ip").ToString())
                cmda.SelectCommand.Parameters.AddWithValue("@regid", vdata.remove_bad_words(Session("regid")))
                conn.Close()
                conn.Open()
                Dim ds As New DataSet
                cmda.Fill(ds)
                If ds.Tables(0).Rows.Count > 0 Then
                    If ds.Tables(0).Rows(0)("regid").ToString = "0" Then
                        'ds.Tables(0).Rows.Add(ds.Tables(0).NewRow())
                        gridviewfees.DataSource = ds
                        gridviewfees.DataBind()
                        gridviewfees.Rows(0).Visible = False
                    Else
                        gridviewfees.DataSource = ds.Tables(0).DefaultView
                        gridviewfees.DataBind()
                    End If
 
                Else
                    ds.Tables(0).Rows.Add(ds.Tables(0).NewRow())
                    gridviewfees.DataSource = ds
                    gridviewfees.DataBind()
                    gridviewfees.Rows(0).Visible = False
                End If
            End Using
        Catch ex As Exception
            Response.Write(ex.ToString())
        Finally
            If ConnectionState.Open Then
                conn.Close()
            End If
        End Try
    End Using
End Sub