2011-09-26 64 views
0

我有一個在頁面加載時填充的下拉列表,默認情況下,所選索引爲0,並將其設置爲emty字符串。在頁面加載時,如果我們更改選定的值,則選定的索引方法不會觸發。已選擇的索引已更改不會觸發

if(!page.isPostback) 
    { 
     this.ddl.DataSource = list; 
     this.ddl.DataValueField = "Id"; 
     this.ddl.DataTextField = "Name"; 
     this.ddl.DataBind(); 
     this.ddl.Items.Insert(0, String.Empty); 

     if (Request.QueryString != null) 
     { 
      string name = Request.QueryString["name"]; 
      long Id = list.Where(item => item.Name == name).Select(item =>item.Id).SingleOrDefault(); 
      this.selectedIndex = 1; 
      this.ddl.SelectedValue = Id.ToString(); 
     } 

    } 
+1

是'AutoPostback'設置爲true? –

+0

正如巴拉R建議,我會確保'AutoPostBack'是真實的。另外,這是幹什麼的?:'this.selectedIndex = 1'它是否設置了DropDown的選定索引?它應該是'this.ddl.SelectedIndex = 1'嗎? –

+0

查看答案,與autopostback無關。問題是隻有在客戶端發生事件時纔會觸發事件。 –

回答

1

這是因爲它應該是。如果您想要從事件和/或頁面加載執行某些邏輯,請將該邏輯放在單獨的方法中,以便在頁面加載時輕鬆調用該邏輯。

0
private void BindList() 
     { 
       this.ddl.Items.Clear(); 
       this.ddl.DataSource = list; 
       this.ddl.DataValueField = "Id"; 
       this.ddl.DataTextField = "Name"; 
       this.ddl.DataBind(); 
       this.ddl.Items.Insert(0, String.Empty); 
       this.ddl.Items.SelectedIndex = 0; 
     } 

if(!page.isPostback) 
    { 

     BindList(); 
     if (Request.QueryString != null) 
     { 
      string name = Request.QueryString["name"]; 
      long Id = list.Where(item => item.Name == name).Select(item =>item.Id).SingleOrDefault(); 
      this.ddl.Items.ClearSelection(); 
      this.ddl.Items.FindByValue(Id.ToString()).Selected = true; 
     } 

    } 
相關問題