2013-08-30 75 views
0

我遇到了一個奇怪的問題,我做了一個Select all複選框,標記爲選中了很多複選框。選擇所有複選框,似乎已選中,但不是

這是CheckedChanged事件

protected void chkSelecionaTodasOcorrencias_CheckedChanged(object sender, EventArgs e) 
    { 
     if (chk_selecionaTodasOcorrencias.Checked) 
     { 
      foreach (ListItem c in chkBox_TiposOcorrencia.Items) 
      { 
       c.Selected = true; 
      } 
     } 
     else 
     { 
      foreach (ListItem c in chkBox_TiposOcorrencia.Items) 
      { 
       c.Selected = false; 
      } 
     } 
     chkBox_TiposOcorrencia.DataBind(); 
    } 

它會檢查所有的複選框,或取消所有。

然後我有另一種方法,將所有的複選框插入列表中。

private List<int> insertItensInListIntegers(ListItemCollection itens) 
    { 
     int value = 0; 
     List<int> queryItens = new List<int>(); 

     foreach (ListItem c in itens) 
     { 
      if (c.Selected) //<-- Here i'm getting false 
      { 
       tiposOcorrencias.TryGetValue(c.Text, out value); 
       queryItens.Add(value); 
      } 
     } 
     return queryItens; 

    } 

參數告知值爲:chkBox_TiposOcorrencia.Items

在屏幕上所有複選框都cheched,但是當我嘗試調試時,c.Selected價值false

在此先感謝。

+2

如果您填充中的下拉頁面加載,要小心你使用'!IsPostBack' –

+0

我認爲,正是在這裏我的問題......我再次調試,發現Itens與真實,並在與虛假之後,但我能做些什麼來解決這個問題? – guisantogui

回答

0

就像Freak_Droid在他的評論中描述的那樣,如果你在頁面加載中加載你的複選框,只需將你的代碼加載到if語句中檢查!ispostback。對於example--

protected void Page_Load(object sender, EventArgs e) 
{ 

    if (!IsPostBack) 
     { 
     //here is where you would put any of your code for databinding your checkboxes 


     } 
}