2013-05-17 71 views
1

我有一個簡單的複選框列表,我使用for語句將選定的值檢索到一個字符串中。這必須很簡單,但是當它評估它是否被選中時,一切都返回false。複選框列表評估所有複選標記爲假

ASP代碼

<asp:CheckBoxList runat="server" ID="ckblInterests" ClientIDMode="Static" RepeatColumns="2" /> 

ASP.NET代碼:

string interests = ""; 

for (int i = 0; i < ckblInterests.Items.Count; i++) 
{ 
    if (ckblInterests.Items[i].Selected) 
     { 
      interests += ckblInterests.Items[i].Value + ", "; 
     } 
    } 
} 

內部if陳述爲假,每次評估它遍歷。它在列表中正確計數了10個項目。我很難過這麼簡單。有人可以幫助我確定可能導致if語句返回false的原因嗎?

+0

C#.NET是代碼。我將改變 – phadaphunk

+0

僅供參考'string.Join',它將有助於創建分隔列表的東西,但不包含所有字符串連接,並且還可避免代碼的尾隨分隔符。 – Servy

+0

您確定選中了「CheckBoxList」中的任何項目嗎? –

回答

1

你有代碼將頁面加載(或其他事件)中的複選框動態添加到列表中。這會導致這些複選框的狀態在每次回發中被清除並重新添加。您的頁面加載應該可能在該部分周圍有if(!page.ispostback),以便您不清除內容。

-2

我認爲你需要檢查CHECKED屬性,而不是SELECTED。

+0

當我編輯if語句'ckblInterests.Items [i] .Checked'時,它會拋出一個錯誤,說明ListItem不包含'checked' –

0

用下面的代碼(大部分你)

.aspx的

<div> 
     <asp:CheckBoxList runat="server" ID="ckblInterests" ClientIDMode="Static" RepeatColumns="2"> 
      <asp:ListItem>Awesome</asp:ListItem> 
      <asp:ListItem>Tasty</asp:ListItem> 
      <asp:ListItem>Terrible</asp:ListItem> 
     </asp:CheckBoxList> 
    </div> 
    <asp:Button runat="server" ID="test" OnClick="test_Click" /> 
    <asp:Label runat="server" ID="label"></asp:Label> 

C#

protected void test_Click(object sender, EventArgs e) 
    { 

     string interests = ""; 

     for (int i = 0; i < ckblInterests.Items.Count; i++) 
     { 
      if (ckblInterests.Items[i].Selected) 
      { 
       interests += ckblInterests.Items[i].Value + ", "; 
      } 
     } 

     this.label.Text = interests; 

    } 

我是能夠產生以下。這當然是在點擊按鈕之後。

Output

你結合你還沒有提到一個數據源?

0

確保同時結合在頁面加載的CheckBoxList在設置了此檢查,如果(!Page.IsPostBack){...綁定您的數據}

這應該做的伎倆