Erreur: SelectedValue qui n'est pas valide car il n'existe pas dans la liste des articles

J'ai un Gridview qui se lie à un ObjectDataSource (objStudentDetails). Dans éditer/modifier le mode d'insertion de la Gridview l'un des champs est un DropDownList qui arrive c'est la liste de sélection options à partir d'une table de recherche. J'ai cette DropDownList de liaison à un autre contrôle ObjectDataSource (objStateList), qui représente la table de recherche. Il fonctionne très bien aussi longtemps que la valeur de la objStudentDetails ObjectDataSource correspond à une des valeurs dans la objStateList ObjectDataSource, au moins dans le cas d'un non vide de la chaîne de valeur de toute façon.

La objStateList a ces valeurs (à partir de la procédure stockée qui le charge - ID#6 est une chaîne vide "):

StateId     State
----------- -----
6             
4           AL
1           GA
3           KY
2           TN

La objStudentDetails a ces valeurs (à partir de la procédure stockée qui le charge):

FirstName   LastName   State
----------- ---------- -----
tone        smith      TN

Ou il pourrait avoir cet ensemble de résultats (de l'État est une chaîne vide - "):

FirstName   LastName   State
----------- ---------- -----
jenny       johnson     

Dans la première objStudentDetails resultset l'état DropDownList dans le EditItemTemplate montre jusqu'à fin. Dans le deuxième jeu de résultats, cependant, j'ai cette erreur:

'ddlEditState' has a SelectedValue which is invalid because it does not exist in the list of items.
Parameter name: value 

Je pense que depuis mon tableau de recherche a une valeur à une chaîne vide, le objStudentDetails valeur avec une chaîne vide pour l'etat serait de match, mais quelque chose ne fonctionne pas de la façon dont je suis l'attend.

Voici mon EditItemTemplate code de la Gridview:

<EditItemTemplate>
  <asp:Panel ID="panEditState" runat="server">
    <asp:DropDownList ID="ddlEditState" runat="server" CssClass="GridviewDropdownlist"
      DataSourceID="objStateList" DataTextField="State" DataValueField="State"      
      SelectedValue='<%# Bind("State") %>'
      Width="50px">
</asp:DropDownList>
</asp:Panel>
</EditItemTemplate>

Et la objStateList, qui appelle une méthode passage d'un paramètre dont la table de recherche pour la requête:

<asp:ObjectDataSource ID="objStateList" runat="server" SelectMethod="GetDropdownData"     TypeName="AIMLibrary.BLL.DropdownData">
<SelectParameters>
<asp:Parameter Name="itemsToGet" DefaultValue="state" />
</SelectParameters>
</asp:ObjectDataSource>

Des idées?

OriginalL'auteur Tone | 2009-08-22