Хорошо, ребята, так что я прочитал это:
Как установить SelectedValue DropDownList в GridView EditTemplate
и у меня та же проблема. Однако я не хочу привязывать выбранное значение к отображаемому тексту, а вместо этого к значениям. Это разные атрибуты, выбранные из источника SQLDataSource. Вот мой код DDL с его источником 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>
Вот (сокращенный) SQLDataSource 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>
И, наконец, мое исключение:
Привязка данных: 'System.Data.DataRowView'
не содержит свойство с
имя 'PlantMaterial_FoodID'.
Я действительно не очень разбираюсь в том, как работает привязка данных через шаблоны редактирования GridView, но я смог убедиться, что правильные значения проходят через обработчик событий OnRowCommand для обновлений. Как передать эти значения в SQLDataSource, не получая NULL?
Прямо сейчас, я полагаю, что любое объяснение того, как связывание данных с шаблонами GridView в целом работает, также было бы полезно. Спасибо!