2012-03-06 17 views
0

私はCheckBoxCheckBoxのリストを私のWebページに持っています。 CheckBoxが選択されている場合
CheckBoxList内のすべてのCheckBoxesは選択を取得する必要があり、かつCheckBoxがオフになっている場合に、CheckBoxでも同様に全てのCheckBoxesは(チェック)選択解除する必要があります。CheckBoxListのすべてのチェックボックスを選択してください

<asp:CheckBoxList ID="CheckBoxList1" runat="server" 
      RepeatDirection="Horizontal" RepeatLayout="Flow"> 
      <asp:ListItem>Item A</asp:ListItem> 
      <asp:ListItem>Item B</asp:ListItem> 
      <asp:ListItem>Item C</asp:ListItem> 
      <asp:ListItem Selected="True">Item D</asp:ListItem> 
      <asp:ListItem>Item E</asp:ListItem> 
      <asp:ListItem>Item F</asp:ListItem> 
      <asp:ListItem>Item G</asp:ListItem> 
     </asp:CheckBoxList> 
<asp:CheckBox ID="allChkBox" Text="Select all" runat="server" 
       oncheckedchanged="allChkBox_CheckedChanged" /> 

.aspxのコードは、私はこのようなsomehtingを実行してみましたが、それは仕事didb't:私はASPに手を出してきたので、それはしばらくしている

bool prevSelection = false; 
protected void allChkBox_CheckedChanged(object sender, EventArgs e) 
    { 
if (!prevSelection) 
     { 
      foreach (ListItem chkitem in CheckBoxList1.Items) 
      { 
       chkitem.Selected = true; 
      } 
     } 
     else 
     { 
      foreach (ListItem chkitem in CheckBoxList1.Items) 
      { 
       chkitem.Selected = false; 
      } 
     } 
     prevSelection = !prevSelection; 
} 
+0

はあなたのaspxコードを提供してもらえますか? –

+0

@Thit Lwin Oo: – Cipher

+0

を追加しました。他にも回答がありました。私はお勧めします..あなたはクライアントのjavascriptでこれを行う必要がありますポストバック。 –

答えて

4

私はクライアントスクリプトを使用することを好みますそれが可能であるならば、このようなもののためので、あなたのページのdoesntのは、ポストバック

をしなければならない何か

<script type="text/javascript"> 
checked=false; 
function checkedAll (frm1) { 
    var aa= document.getElementById('frm1'); 
    if (checked == false) 
      { 
      checked = true 
      } 
     else 
      { 
      checked = false 
      } 
    for (var i =0; i < aa.elements.length; i++) 
    { 
      if(aa.elements[i].type == 'checkbox') { 
      aa.elements[i].checked = checked; 
      } 
    } 
} 
</script> 

よう
+1

htmlの入力タイプを確認する必要があります。aa.elements [i] .type == 'checkbox' –

+0

ありがとうございます@ThitLwinOo - 更新 – jaySF

+0

ボタンの代わりにチェックボックスを使用して、すべてのチェックボックスをオン/オフにします。しかし、 'CheckBoxAll'は' CheckBox'がチェックされていない/チェックされているかどうかを検出できるクライアント側の機能を持っていないようです。 'CheckBoxAll'がチェックされている場合、' checkbox'を使ってそれを行うことができますか?それは自動的に他のチェックボックスをすべてチェックします。 – Cipher

1

を。 NETの場合、prevSelectionフィールドはそれぞれのリクエストごとにfalseに初期化されます。その値は要求間で保持されません。だから、あなたのいずれかは、ビューステートまたはキャッシュに保管して、イベントハンドラで、そこからそれをロードする、または、より良い、このような何かにあなたの方法を変更する必要があります。

protected void allChkBox_CheckedChanged(object sender, EventArgs e) 
{ 
    foreach (ListItem chkitem in CheckBoxList1.Items) 
    { 
     chkitem.Selected = allChkBox.Selected; 
    } 
} 
0

の代わりに使用して...ループや選択を行うには、クリックでJavaScript機能を発射してみてください関数の外にある変数、チェックボックスの使い方はどうですか? tself:

protected void allChkBox_CheckedChanged(object sender, EventArgs e) 
{ 
    CheckBox chkbox = sender; 

    foreach (ListItem chkitem in CheckBoxList1.Items) 
    { 
     chkitem.Selected = chkbox.Selected; 
    } 
} 
0

あなたは私が要件権利を理解しているどのようにこのIIFについては、この

var allChecked = (from ListItem item in CheckBoxList1.Items 
           where item.Selected 
           select int.Parse(item.Value)).ToList(); 


    var all = (from ListItem item in CheckBoxList1.Items 

            select int.Parse(item.Value)).ToList(); 
0
function CheckUnCheckAll() 
    { 
     var list = document.getElementById("<%=DataList1.ClientID%>") ; 
     var chklist = list.getElementsByTagName("input"); 
     for (var i=0;i<chklist.length;i++) 
     { 
      if (chklist[i].type=="checkbox") 
      { 
       chklist[i].checked = checkoruncheck; 
      } 
     } 
    } 
0

のようなLINQでそれを行うことができますか)!?それがレンダリングするとき、これはデフォルトでCheckBoxListコントロール内のすべての項目selectedを行います:

protected void Page_Load(object sender, EventArgs e) 
 
{ 
 
    if (Page.IsPostBack) return; 
 
    LoadCountryList(); 
 
} 
 

 

 
private void LoadCountryList() 
 
{ 
 
    _ctx = new PayLinxDataContext(); 
 

 
    chkCountries.DataSource = _ctx.Countries.OrderBy(c => c.Name); 
 
    chkCountries.DataBind(); 
 

 
    foreach (ListItem item in chkCountries.Items) 
 
    { 
 
    item.Selected = true; 
 
    } 
 
}

関連する問題