如何在OnSelectedIndexChanged触发事件之前获取DropDownList上的上一项

OnSelectedIndexChanged触发事件之前,如何在DropDownList上获取上一项?

示例:我有一个DropDownList ,其名称为其项目(“John”,“Mark”)。 默认情况下, SelectedIndex是“John”。 在更改其索引并选择“标记”后,将触发事件OnSelectedIndexChanged 。 当我使用ddlName.SelectedIndex ,它将只返回“Mark”的索引,我想得到的是“John”的索引。

您无法在更改之前捕获事件,但可以轻松地将先前值存储在变量中。 每次触发SelectedIndexChanged时,使用前一个值,然后将其设置为新索引(下次事件触发时)。 要处理新选择时的情况(默认情况下),您可以在页面加载时设置变量,或者允许它为空,并提醒您它是一个新的选择(然后您可以处理它)但你喜欢)。

      

.cs文件代码在这里:

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

您可以使用e.OldValues属性。

     

在后面的代码中(假设你的下拉列表在formview中)……

  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(); .. }