将嵌套下拉列表的DataValueField传递给Update SQL命令

时间:2014-07-31 09:21:42

标签: c# asp.net formview sqlparameters

我有一个嵌套在FormView的编辑模式下的动态下拉列表。用户可以从DDL中选择一个值,然后单击“更新”按钮以更新数据库中的行。

  <EditItemTemplate>
 <asp:DropDownList ID="priorityLanguage_DDL" runat="server" DataSourceID="SqlDataSource_Languages" DataTextField="language" DataValueField="ID_language" selectedvalue='<%# Eval("priorityLanguage") %>'>        
 </asp:DropDownList> 

<asp:LinkButton class="btn btn-default" ID="UpdateButton" runat="server" CausesValidation="True" CommandName="Update" Text="Update" onclick="UpdateButton_click"/>
</EditItemTemplate>

<asp:SqlDataSource ID="SqlDataSource_membersDetails" runat="server" 
    ConnectionString="<%$ ConnectionStrings:DefaultConnection %>" 
           SelectCommand="SELECT * FROM [editorDetail] WHERE [IDuser]= @IDowner" 
    UpdateCommand="UPDATE [priorityLanguage] = @priorityLanguage_ddl_par WHERE [ID_editorDetail] = @ID_editorDetail">

<UpdateParameters>
                  <asp:Parameter Name="priorityLanguage_ddl_par" Type="Int32" />
               </UpdateParameters>
</asp:SqlDataSource>

我的问题是我如何将DDL的DataValueField传递给Update Command。我试图直接在内容页面上传递值,但我不能导致DDL嵌套在FormView中,因此controlID不能是foud。

我也尝试过代码,但我没有设法将int32传递给参数DefaultValue。

protected void UpdateButton_click(object sender, EventArgs e)
    {   

        DropDownList priorityLanguage_DDL = FormView3.FindControl("priorityLanguage_DDL") as DropDownList;
        SqlDataSource_membersDetails.UpdateParameters["priorityLanguage_ddl_par"].DefaultValue = (priorityLanguage_DDL.DataValueField);               

    }   

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您需要dropdownlist.SelectedValuedropdownlist.SelectedItem.Value而不是priorityLanguage_DDL.DataValueField DataValueField用于将数据源的列名称分配给DataValue字段。它将为您提供列名,但是从下拉列表中为所选项提供该列的值。