2016-06-21 5 views
1

私はasp.net Webページ上にCheckBoxListを持っています。リストアイテムはHTMLにハードコードされているので(ポストバック/データバインディングの問題はありません)誰かがSubmitボタンをクリックすると、CheckBoxListの項目を繰り返し処理し、チェックされた値のコンマで区切られた文字列を作成します。ただし、リストアイテムの.Selectedプロパティは常にfalseです。私が見つけたすべての解決策は、データを消去していないことを確認するためにPage.IsPostBackをチェックする必要がありますが、a)既にチェックしています。b)動的にロードしていないので、リストコントロール。私はステップスルーして、リストを反復処理することができますCheckBoxList ListItem.Selected NotFunctioning

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(); 
} 

の後ろ

マークアップ

<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> 

コード:以下の私のコードです。私は確かに私がメソッドに渡しているチェックボックスのリストに項目を持っているが、すべての単一ListItem、.Selectedはfalseです。何か案は?

+1

なぜあなたは、CheckBoxListのを使用していますか?あなたは本当にユーザーがここで複数の値を選択すると期待していますか?それとも、あなたがしようとしていることの一例ですか? –

+0

いつこのメソッドを呼び出しますか?ページライフサイクルのどの段階ですか? – Andrei

+0

ボタンクリックのイベントハンドラでコードをテストすると、完全に機能します。 – ConnorsFan

答えて

0

空白の.aspxページがあり、その下にコードを貼り付けると機能します。

空白のページから開始して下のコードをコピーしてから、コードが機能しなくなるまで、追加のcontrols \ functionality \ 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

情報ありがとう!このコントロールをラップする更新パネルかもしれないという気持ちがあります。私はそれを試して、私が紛争を見つけることができるかどうかを見てみましょう。再度、感謝します。 –

関連する問題