2013-04-14 82 views
2

我正在使用嚮導。並且在步驟二中,用戶可以添加關於將被存儲的位置的信息。他可以添加儘可能多的地點,他喜歡。 在第三步中,我想輸入關於特定位置的更多信息。 要選擇使用哪個位置我有ASP:當用戶輸入內容時填充的dropdownlist。 我想改變索引,但它不起作用當我嘗試調試時,它永遠不會進入函數。我正在使用標籤進行調試。ASP:Dropdownlist onselectedindexchanges函數即使在我將autopostback設置爲true時也不會觸發

當我更改所選項目時,頁面將重新加載,並且始終選擇下拉列表中的第一項,即使我選擇了其他項目。我不明白,爲什麼出現這種情況

這裏是我 ASPX文件

Select location to enter data for: 
<asp:DropDownList ID="s3_location_list" runat="server" AutoPostBack="true" OnSelectedIndexChanged="stepThree_location_list_SelectedIndexChanged"> 
       </asp:DropDownList> 
       &nbsp;&nbsp; Current location index: 
       <asp:Label ID="Label3" runat="server" Text="Label"></asp:Label> 

CS文件

/*這是我將數據添加到下拉列表

protected void stepTwo_addLocationData(object Sender, System.EventArgs e) 
    { 
     //initialize a temporary string array to get all the data from the form 

     //Console.Write("AAAAA"+ Context.Items["IsRefreshed"]); 

     Boolean refreshed = (Boolean)Context.Items["IsRefreshed"]; 
     if (!refreshed) 
     { 
      //if user is adding a new entry to the location table 

      LocationData new_location = new LocationData(); 
      //add stuff to locationData 

      if (stepTwo_locationTableIndex == -1) 
      { 
       //add the new_location element into the location_data array 
       location_data.Add(new_location); 

       //redraw the table 
       DataRow dr = dt.NewRow(); 
       dr["Location"] = new_location.City; 
       //dr["Name"] = loc; 
       dt.Rows.Add(dr); 


      } 
      else 
      { 
       location_data[stepTwo_locationTableIndex] = new_location; 
       dt.Rows[stepTwo_locationTableIndex]["Location"] = City.Text; 
      } 

      GridView1.DataSource = dt.DefaultView; 
      GridView1.DataBind(); 
      ///CreateTable(); 
      stepFive_setLocationListOptions(); 
      stepThree_setLocationListOptions(); 
      stepTwo_resetForm(); 
    } 

/*這是第3步的頁面加載

protected void stepThree_load() 
    { 
     if (!IsPostBack && Session["s_s3_locationDropdownIndex"] == null) 
     { 
      stepThree_locationDropdownIndex = s3_location_list.SelectedIndex; 
      Session["s_s3_locationDropdownIndex"] = stepThree_locationDropdownIndex; 
     } 
     else 
     { 
      stepThree_locationDropdownIndex = (int) Session["s_s3_locationDropdownIndex"]; 
     } 

     s3_location_list.SelectedIndex = stepThree_locationDropdownIndex; 
     Label3.Text = "" + s3_location_list.SelectedIndex; 

    } 

/*這是我的,我填充列表

protected void stepThree_setLocationListOptions() 
    { 
     s3_location_list.Items.Clear(); 
     int i = 0; 
     foreach (LocationData item in location_data) 
     { 
      s3_location_list.Items.Add(new ListItem(item.City, "" + i)); 
     } 
     s3_location_list.DataBind(); 
    } 

/*這是當選擇的指數變化,多數民衆贊成callled功能。

protected void stepThree_location_list_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     Label3.Text = "Hello"; 
    } 

回答

1

我認爲問題在於執行順序。您只應初始化一次DropDownList,否則將覆蓋您的SelectedIndex。例如,使用OnInit事件:

<asp:DropDownList ID="s3_location_list" 
        runat="server" 
        OnInit="s3_location_list_Init"/> 

,寫事件的方法是這樣的:

protected void s3_location_list_Init(object sender, EventArgs e) 
    if (!IsPostBack) { 
     foreach (LocationData item in location_data) 
     { 
      s3_location_list.Items.Add(new ListItem(item.City, "" + i)); 
     } 
     s3_location_list.DataBind(); 
    } 
} 
相關問題