2016-07-20 4 views
0

Ich habe versucht, viele Fragen über die Dropdownliste durchzusehen und noch immer mein Problem zu lösen.Dropdown-Liste ausgewählter Wert wird auf den ersten Eintrag zurückgesetzt

Ich habe eine Dropdown-Liste und eine Submit-Taste. Wenn auf die Schaltfläche Senden geklickt wird, nachdem der Wert ausgewählt wurde, sollte der Label-Text mit dem ausgewählten Wert der Dropdown-Liste aktualisiert werden. Was jedoch geschah, war jedes Mal, wenn der Wert aus der Dropdown-Liste ausgewählt wurde, er aktualisierte die Seite und der erfasste Wert war der erste Eintrag in der Dropdown-Liste. Wie erfasse ich den ausgewählten Wert korrekt, bevor er aktualisiert wird?

Bin am wits Ende, nicht sicher, wo schief gelaufen ist.

* Alle Einträge in der Dropdownliste sind einmalig. Keine Vervielfältigung.

Meine Codes:

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> 

-Code hinter

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

Antwort

0

Probieren Sie es ohne die "Autopostback = True" auf der Dropdownlist ... die Art und Weise Ihr Code geschrieben, bewirkt es, dass die Seite jedes Mal aktualisiert wird, wenn sich der DropDownList-Wert ändert. Was Sie wollen, ist ein Postback, wenn Sie auf "Senden" klicken.

+0

es stoppt die Aktualisierung, aber immer noch den ersten Index im Dropdown erfasst, obwohl ich einen anderen Wert gewählt habe. – mellissa

+0

Was füllt ddlCode? Wenn es sich um eine Liste von Strings handelt, brauchen Sie vielleicht nur den Wert ddlCode [ddlCode.SelectedIndex] .Substring (0,4) (ohne .Text) oder Sie verwenden einfach ddlCode.SelectedItem.Substring (0,4). –

+0

Denken Sie auch daran, dass ASP.Net statusfrei ist - es sei denn, Sie setzen eine Sitzungsvariable. Wenn Sie auf submit klicken, ist dieser Wert möglicherweise verschwunden. Sie können dies überprüfen, indem Sie einen Haltepunkt festlegen und den Wert von ddlSelectedIndex betrachten einstellen. Warum sollte man diesen Code nicht einfach in SubmitBtn_Click einfügen und zu diesem Zeitpunkt das verwenden, was gerade in der Dropdown-Liste ausgewählt ist? –