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