2016-07-20 3 views
0

Я попытался просмотреть множество вопросов о выпадающем списке и еще не решил проблему.Выпадающее выбранное значение сбрасывается до первого элемента

У меня есть раскрывающийся список и кнопка отправки. Когда кнопка Отправить нажата после выбранного значения, она должна обновить текст метки с выбранным значением в раскрывающемся списке. Однако, что произошло, каждый раз значение выбирается из раскрывающегося списка, оно обновляет страницу, и значение, которое было захвачено, было первым элементом в раскрывающемся списке. Как правильно сохранить выбранное значение перед его обновлением?

Am at wits end, не уверен, где поступил не так.

* Все элементы в раскрывающемся списке уникальны. Нет дублирования.

Мои коды:

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; 
} 

ответ

0

Попробуйте без "AutoPostBack = True" на DropDownList ... так что ваш код написанное, оно заставляет страницу обновляться в любое время, когда изменяется значение DropDownList. То, что вы хотите, - это обратная передача при нажатии кнопки отправки.

+0

он останавливает обновление, но все же захватывает первый индекс в раскрывающемся списке, хотя я выбрал другое значение. – mellissa

+0

Что заполняет ddlCode? Если это список строк, возможно, вам просто нужно значение ddlCode [ddlCode.SelectedIndex] .Substring (0,4) (без .Text), или вы можете просто использовать ddlCode.SelectedItem.Substring (0,4). –

+0

Кроме того, помните, что ASP.Net является безстоящим - если вы не задаете переменную сеанса, это значение может исчезнуть к моменту нажатия кнопки «Отправить» - вы можете убедиться, что, установив точку останова и глядя на значение ddlSelectedIndex, когда метка получает задавать. Почему бы просто не включить этот код в SubmitBtn_Click и использовать то, что в данный момент выбрано в раскрывающемся списке? –