2011-06-09 89 views
1

玉傢伙,所以我這樣說的: How to set SelectedValue of DropDownList in GridView EditTemplate綁定的DropDownList的SelectedValue到DataValueField爲GridView控件更新

和我有同樣的問題。但是,我不想將選定的值綁定到顯示的文本,而是將值綁定。它們是從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> 

最後,我的例外:

數據綁定:' System.Data.DataRowView' 不包含名稱爲'PlantMaterial_FoodID'的 屬性。

我真的沒有太多的關於如何通過GridView編輯模板進行數據綁定的知識,但我能夠看到正確的值通過OnRowCommand事件處理程序進行更新。如何將這些值傳播到SQLDataSource而不會獲得NULL?

現在,我想任何關於如何使用GridView模板進行數據綁定的解釋都是有益的。謝謝!

+0

也粘貼您的數據源。 – naveen 2011-06-10 03:15:31

+0

@naveen - 爲下拉菜單和GridView添加了DataSource。 – BradV 2011-06-10 04:26:19

+0

和datasource/table綁定gridview? PlantMaterial_FoodID不會出現在那裏。請貼太 – naveen 2011-06-10 04:33:39

回答

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> 

這有效地將所選擇的下拉列表索引到正確的值。

0

您是否檢查過PlantMaterial_FoodID的拼寫與SqlDataSource SelectCommand中的拼寫完全相同?

+0

是的,他們拼寫相同,謝謝@ mika。我檢查了選擇,更新和插入參數以及所有的GridView引用,就拼寫而言,一切看起來都是一致的。 – BradV 2011-06-09 23:39:33

相關問題