从ASP.NET DropDownList控件读取错误的值

时间:2018-07-23 20:20:36

标签: asp.net webforms html-select postback

我在ASP.NET网络表单上的DropDownList控件(请参阅下文)遇到问题。

<asp:DropDownList ID="DropDownList_Approved" runat="server">
    <asp:ListItem Value="No">No</asp:ListItem>
    <asp:ListItem Value="Yes">Yes</asp:ListItem>
    <asp:ListItem Value"NA">n/a</asp:ListItem>
</asp:DropDownList>

我从数据库中读取控件的值,它是“是”,“否”或“ NA”(保存在核准文本中),然后使用以下命令将该值设置为控件中的“选定”值以下代码:

DropDownList_Approved.SelectedIndex = DropDownList_Approved.Items.IndexOf (DropDownList_Approved.Items.FindByValue (approvedText));

我使用以下代码读取控件的选定值以将其保存到数据库中

string approved = DropDownList_Approved.SelectedValue;

问题在于,此时,无论选择了哪个下拉选项,第一项(“否”)都是保存回数据库的内容。但这仅在我在PageLoad的下拉列表中设置所选项目时才会发生。如果我不使用“ DropDownList_Approved.SelectedIndex”代码,则保存到数据库的值为下拉的SelectedValue。

我在代码中做错什么了?

谢谢。

1 个答案:

答案 0 :(得分:0)

您需要在if(!Page.IsPostBack)块的Page_Load中设置下拉列表值。

if(!Page.IsPostBack)
{
    // Set dropdown value from database
}

每当调用按钮单击事件时,它都会先调用Page_Laod,以便它将当前选定的值重置为数据库从页面加载时设置的值。