2016-06-21 43 views
1

我在我的asp.net網頁上有一個CheckBoxList,列表項硬編碼到HTML中(所以在回放時沒有回發/數據綁定問題)。當有人點擊提交按鈕時,我遍歷CheckBoxList中的項目並創建一個逗號分隔的任何選中值的字符串。但是,問題是無論如何,列表項的.Selected屬性總是爲false。我發現的所有解決方案必須聲明檢查!Page.IsPostBack確保數據沒有被擦除,但a)我已經檢查過,並且b)它不是一個真正的問題,因爲我沒有動態加載列表控件。下面是我的代碼:CheckBoxList ListItem.Selected沒有運行

標記

<asp:CheckBoxList id="chkGenderList" runat="server" data-paramname="genders"> 
    <asp:ListItem Value="M" Text="Male" /> 
    <asp:ListItem Value="F" Text="Female" /> 
    <asp:ListItem Value="" Text="Unknown" /> 
</asp:CheckBoxList> 

代碼隱藏

private string GetCheckBoxListValues(CheckBoxList chkList) 
{ 
    StringBuilder sb = new StringBuilder(); 
    foreach (ListItem lst in chkList.Items) { 
     if (lst.Selected) 
      sb.Append (lst.Value).Append (","); 
    } 
    if(sb.Length > 0) 
     sb.Remove (sb.Length - 1, 1); 
    return sb.ToString(); 
} 

我可以逐步和遍歷列表。我肯定有checkboxlist中的項目傳入方法,但每個ListItem,.Selected都是false。有任何想法嗎?

+1

你爲什麼要使用CheckBoxList的?你真的希望用戶在這裏選擇多個值嗎?或者這只是你想要做的一個例子? –

+0

你什麼時候調用這個方法?在哪個階段的頁面生命週期? – Andrei

+0

當我在點擊按鈕的事件處理程序中測試代碼時,它完美地工作。 – ConnorsFan

回答

0

如果我有一個空白的.aspx頁面,我將下面的代碼粘貼到它中,它就可以工作。

嘗試做同樣的事情來解決你的問題 - 從一個空白頁開始,將下面的代碼複製到它,然後慢慢開始添加任何額外的控制\功能\ ajax \ JavaScript文件,直到代碼停止工作,然後你會知道是什麼導致你的問題。

有可能是有一塊JavaScript沒有選中所有的複選框或類似的東西。

.ASPX:

<asp:CheckBoxList ID="chkGenderList" runat="server" data-paramname="genders"> 
     <asp:ListItem Value="M" Text="Male" /> 
     <asp:ListItem Value="F" Text="Female" /> 
     <asp:ListItem Value="" Text="Unknown" /> 
    </asp:CheckBoxList> 
    <asp:Button ID="btnSave" runat="server" Text="Save" OnClick="btnSave_Click" /> 

後面的代碼:

protected void Page_Load(object sender, EventArgs e) 
{ 

} 

protected void btnSave_Click(object sender, EventArgs e) 
{ 
    string values = this.GetCheckBoxListValues(chkGenderList); 
} 

private string GetCheckBoxListValues(CheckBoxList chkList) 
{ 
    StringBuilder sb = new StringBuilder(); 
    foreach (ListItem lst in chkList.Items) 
    { 
     if (lst.Selected) 
      sb.Append(lst.Value).Append(","); 
    } 
    if (sb.Length > 0) 
     sb.Remove(sb.Length - 1, 1); 
    return sb.ToString(); 
} 

輸出:

CheckBoxList in ASP.NET web forms

+0

感謝您的信息!我有一種感覺,它可能是包裝這個控件的更新面板。我會試驗一下,看看我能否找到衝突。再次感謝。 –