好的伙计们,所以我读到了这个: How to set SelectedValue of DropDownList in 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>
这是GridView的(删节)SQLDataSource:
<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>
最后,我的例外:
DataBinding:'System.Data.DataRowView' 不包含属性 名称'PlantMaterial_FoodID'。
我对通过GridView编辑模板的数据绑定工作方式知之甚少,但我能够看到正确的值通过OnRowCommand事件处理程序进行更新。如何在不获取NULL的情况下将这些值传播到SQLDataSource?
现在,我想任何关于如何使用GridView模板进行数据绑定的解释都是有益的。谢谢!
答案 0 :(得分:2)
这不是问题的答案,而是一种解决方法......但它适用于我。
我将PlantMaterial_FoodID作为隐藏列添加到GridView中,并更改了DropDownList上的SelectedValue绑定以引用此新列,如下所示。
新专栏
<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>
...这是新的绑定
<asp:DropDownList ID="FoodCodeDropDownList" runat="server"
DataSourceID="Plant_Carton_Food_List" DataTextField="Food_Description"
DataValueField="PlantMaterial_FoodID" SelectedValue='<%# Bind("Food_ID") %>'
</asp:DropDownList>
这有效地将选定的下拉列表索引设置为正确的值。
答案 1 :(得分:0)
您是否检查过PlantMaterial_FoodID
拼写与SqlDataSource SelectCommand完全相同?