Ok chicos, por lo que he leído esto:
Cómo establecer SelectedValue de DropDownList en GridView EditTemplate

y estoy teniendo el mismo problema. Sin embargo, no quiero enlazar el valor seleccionado para la muestra de texto, pero en lugar de los valores. Son diferentes atributos seleccionados de un SQLDataSource. Aquí está mi código de DDL con su 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>

Aquí es el (abreviada) SQLDataSource del 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>

Y, por último, mi excepción:

DataBinding: «Del Sistema.De datos.DataRowView’
no contiene una propiedad con el
nombre ‘PlantMaterial_FoodID’.

Realmente no tengo mucho conocimiento sobre cómo el enlace de datos a través del GridView Editar las plantillas de trabajo, pero yo era capaz de ver que los valores correctos pasar a través de la OnRowCommand controlador de eventos para las actualizaciones. ¿Cómo puedo propagar estos valores a la SQLDataSource sin llegar NULL?

Ahora mismo, supongo que cualquier explicación sobre cómo el enlace de datos con GridView plantillas de trabajo en general sería beneficioso también. Gracias!

  • pegar el origen de datos también.
  • tanto el origen de datos de la lista desplegable y para el GridView.
  • y el origen de datos / tabla de unión gridview? PlantMaterial_FoodID no estar presente allí. por favor, pegue que también
InformationsquelleAutor BradV | 2011-06-09

2 Comentarios

  1. 2

    Esta no es realmente una respuesta a la pregunta, pero en lugar de una solución… pero a mí me funciona.

    He añadido PlantMaterial_FoodID como una columna oculta en el GridView y cambiado el SelectedValue de unión en el DropDownList para hacer referencia a esta nueva columna, como se muestra a continuación.

    Nueva Columna

    <asp:TemplateField HeaderText="Food ID" SortExpression="Food_ID">
        <EditItemTemplate>
            <asp:Label ID="FoodIDLabel" runat="server" Text='<%# Eval("Food_ID") %>'</asp:Label>
        </EditItemTemplate>
        <ItemTemplate>
            <asp:Label ID="FoodIDLabel" runat="server" Text='<%# Bind("Food_ID") %>'</asp:Label>
        </ItemTemplate>
    </asp:TemplateField>

    …y aquí está el nuevo enlace

    <asp:DropDownList ID="FoodCodeDropDownList" runat="server"
        DataSourceID="Plant_Carton_Food_List" DataTextField="Food_Description"
        DataValueField="PlantMaterial_FoodID" SelectedValue='<%# Bind("Food_ID") %>'
    </asp:DropDownList>

    De esta forma, se establece el seleccionado dropdownlist índice con el valor correcto.

  2. 0

    Ha comprobado que PlantMaterial_FoodID escrito exactamente como en el SqlDataSource SelectCommand?

    • Sí, se escribe de la misma, gracias @mika. He comprobado Seleccionar, Actualizar e Insertar los parámetros y todas las GridView referencias y todo parece coherente, tan lejos como la ortografía se refiere.

Dejar respuesta

Please enter your comment!
Please enter your name here