将嵌套下拉列表的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);
}
我做错了什么???
您需要下拉列表。SelectedValue或下拉列表。SelectedItem.Value而不是priorityLanguage_DDL.DataValueField
DataValueField用于将数据源的列名分配给DataValue字段。它将为您提供列名,但为下拉列表中所选项目提供该列的值。