Dropdownlist选择的值重置为第一项

时间:2016-07-20 00:25:53

标签: c# asp.net drop-down-menu

我试图查看有关下拉列表的许多问题,但仍未解决我的问题。

我有一个下拉列表和一个提交按钮。在选择值后单击“提交”按钮时,它应使用下拉列表的选定值更新“标签”文本。但是,发生的事情是从下拉列表中选择每个时间值,它刷新页面并且捕获的值是下拉列表中的第一个项目。如何在刷新之前正确捕获所选值?

我的智慧结束了,不知道哪里出了问题。

*下拉列表中的所有项目都是唯一的。没有重复。

我的代码:

ASP.NET

<form id="form1" runat="server">
        <asp:DropDownList ID="ddlCode" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlCode_SelectedIndexChanged"/>
        <br />
        <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true"/>
        <asp:UpdateProgress ID="updProgress" AssociatedUpdatePanelID="UpdatePanel1" runat="server">
            <ProgressTemplate>
                <img alt="progress" src="img/loading.gif"/><br /><h2>Loading...</h2> 
            </ProgressTemplate>
        </asp:UpdateProgress>

        <br />
        <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" >
            <ContentTemplate>

                <asp:Button ID="submitBtn" runat="server" cssclass="btn btn-success" OnClick="submitBtn_Click" Text="Submit"/>
                <asp:Label ID="lblCode" runat="server"/>
            </ContentTemplate>
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="ddlCode" EventName="SelectedIndexChanged"/>
            </Triggers>
        </asp:UpdatePanel>
    </form>

背后的代码

string ddlSelectedIndex = "";   

protected void Page_Load(object sender, EventArgs e)
{
   if (!IsPostBack)
   {
      //This is to load code into dropdownlist which works fine. 
      LoadCode();
   }
}

protected void ddlCode_SelectedIndexChanged(object sender, EventArgs e)
{ 
     ddlSelectedIndex =(ddlCode.Items[ddlCode.SelectedIndex].Text).Substring(0, 4);
}


protected void submitBtn_Click(object sender, EventArgs e)
{
     lblCode.Text = ddlSelectedIndex;
}

1 个答案:

答案 0 :(得分:0)

尝试在DropDownList上没有“AutoPostBack = True”...编写代码的方式,它会导致页面在DropDownList值更改时刷新。你想要的是点击提交时的回发。