2011-01-26 27 views
5

Olayıolayına nasıl basarım? OnSelectedIndexChanged olayları tetiklemeden önce?OnSelectedIndexChanged olayından önceki önceki öğeyi nasıl alabilirim?

Örnek: Öğeleri ("John", "Mark") olarak adlandırılan bir DropDownList vardı. Varsayılan olarak SelectedIndex "John" dur. Endeksini değiştirip "İşaretle" yi seçtikten sonra olay OnSelectedIndexChanged tetiklenecektir. ddlName.SelectedIndex'u kullandığımda, sadece "Mark" için almak istediğim dizin "John" dizgesidir.

cevap

4

Değişiklikten önce bir olay yakalayamazsınız, ancak önceki değeri bir değişkene kolayca kaydedebilirsiniz. SelectedIndexChanged her defasında, önceki değeri kullanın ve ardından yeni dizine (olayın bir sonraki başlatması için) ayarlayın. Yeni bir seçim olduğunda (varsayılan değerden) durumu ele almak için, sayfa yüklendiğinde değişkeni ayarlayabilir veya boş bırakabilir ve yeni bir seçim olduğu konusunda sizi uyarırsınız. nasıl istersen). Burada

+0

teşekkürler bilgi DRHARRIS için. –

3
<asp:DropDownList ID="ddlName" runat="server" AutoPostBack="true" 
     onselectedindexchanged="ddlName_SelectedIndexChanged"> 
     <asp:ListItem Text="John" Value="1"></asp:ListItem> 
     <asp:ListItem Text="Mark" Value="2"></asp:ListItem> 
     <asp:ListItem Text="Jim" Value="3"></asp:ListItem> 
    </asp:DropDownList> 

.cs dosyası kodu:

public static int PreviousIndex; 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       ddlName.AppendDataBoundItems = true; 
       ddlName.Items.Add(new ListItem("Other", "4")); 
       PreviousIndex = ddlName.SelectedIndex; 
      } 

     } 

     protected void ddlName_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      string GetPreviousValue = ddlName.Items[PreviousIndex].Text; 
      Response.Write("This is Previously Selected Value"+ GetPreviousValue); 
      //Do selected change event here. 

      PreviousIndex = ddlName.SelectedIndex; 

     } 
1

Sen e.OldValues özelliğini kullanabilirsiniz.

<asp:DropDownList ID="esDropDownList" runat="server" DataSourceID="SqlDataSourceddlEnrolmentStatus" DataTextField="EnrolmentStatusDescription" DataValueField="EnrolmentStatusID" SelectedValue='<%# Bind("StudentEnrolmentStatus") %>'> 
</asp:DropDownList> 
<asp:SqlDataSource ID="SqlDataSourceddlEnrolmentStatus" runat="server" 
ConnectionString="<%$ ConnectionStrings:ATCNTV1ConnectionString %>" SelectCommand="SELECT [EnrolmentStatusID], [EnrolmentStatusDescription] FROM [tblEnrolmentStatuses] ORDER BY [EnrolmentStatusID]"> 
</asp:SqlDataSource> 

Ve (bir formview bulunduğuna dair DropDownList varsayarak) kodu arkasında

...

protected void FormView1_ItemUpdated(object sender, FormViewUpdatedEventArgs e) 
    { 
.. 
      String msg = "This is the new value " + e.NewValues["StudentEnrolmentStatus"].ToString()+ " and this is the old value " + e.OldValues["StudentEnrolmentStatus"].ToString(); 
.. 
    }