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

本文关键字:UpdateSQL 命令 DataValueField 嵌套 下拉列表 | 更新日期: 2023-09-27 18:15:57

我在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命令。我试图直接在内容页上传递该值,但由于DDL嵌套在FormView中,因此无法创建controlID。

我也尝试了代码隐藏,但没能将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);               
    }   

我做错了什么???

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

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