La liaison DropDownList SelectedValue à DataValueField pour GridView mise à Jour

Ok les gars, j'ai lu ceci:
Comment définir SelectedValue de DropDownList dans GridView EditTemplate

et je vais avoir le même problème. Cependant, je ne veux pas lier la valeur sélectionnée pour le texte affiché à l'écran, mais plutôt les valeurs. Ils sont différents attributs sélectionnés à partir d'un SQLDataSource. Voici mon code DDL avec ses SQLDataSource:

<asp:DropDownList ID="FoodCodeDropDownList" runat="server"
     DataSourceID="Plant_Carton_Food_List"
     DataTextField="Food_Description"
     DataValueField="PlantMaterial_FoodID"
     SelectedValue='<%# Bind("PlantMaterial_FoodID") %>' >
</asp:DropDownList>
<asp:SqlDataSource ID="Plant_Carton_Food_List" runat="server" 
     ConnectionString="<%$ ConnectionStrings:OMSConnectionString %>" 
     SelectCommand="SELECT   P.PlantMaterial_FoodID,
               M.Material_SAP_Value + ' - ' + MD.SAP_Long_Description AS Food_Description 
          FROM Plant_Carton_Food AS P 
          LEFT OUTER JOIN Material_Descriptions AS MD 
               ON P.PlantMaterial_FoodID = MD.Material_ID 
          LEFT OUTER JOIN Materials AS M 
               ON P.PlantMaterial_FoodID = M.Material_ID">
 </asp:SqlDataSource>

Ici est l' (version abrégée) SQLDataSource de la GridView:

   <asp:SqlDataSource ID="Plant_Carton_Table" runat="server" 
        OldValuesParameterFormatString="old_{0}"
        ConnectionString="<%$ ConnectionStrings:DBConnectionString %>" 
        OnInserting="Plant_Carton_Food_Table_Inserting"
        OnInserted="Plant_Carton_Food_Table_Inserted"
        InsertCommand="spPlantCartonInsert" InsertCommandType="StoredProcedure" 
        SelectCommand="spPlantCartonSelect" SelectCommandType="StoredProcedure" 
        UpdateCommand="spPlantCartonUpdate" UpdateCommandType="StoredProcedure">
        <UpdateParameters>
            <asp:Parameter Name="Active_Case"           Type="Boolean" />
            <asp:Parameter Name="PlantMaterial_FoodID"  Type="String" />
            <asp:Parameter Name="PlantMaterial_CaseID"  Type="String" />
            ...
        </UpdateParameters>
        ...
    </asp:SqlDataSource>

Et, enfin, mon exception:

De Liaison De Données: 'Système.Les données.DataRowView'
ne contient pas de bien avec l'
nom de "PlantMaterial_FoodID'.

Je n'ai pas beaucoup de connaissances sur la façon de liaison de données par le biais de la GridView Modifier les modèles de travail, mais j'ai pu voir que les valeurs correctes passer à travers la OnRowCommand gestionnaire d'événement pour les mises à jour. Comment propager ces valeurs à la SQLDataSource sans arriver NULLE?

Droit maintenant, je suppose que toute l'explication sur la façon de liaison de données avec GridView modèles de travail en général serait bénéfique aussi bien. Merci!

  • collez votre source de données également.
  • ajouté à la fois la source de données pour la liste déroulante et pour le contrôle GridView.
  • et la source de données / table de liaison de la gridview? PlantMaterial_FoodID ne sera pas présente. veuillez coller que trop
InformationsquelleAutor BradV | 2011-06-09