2011-10-13 13 views
1

おはよう、2つのチェックボックスリストを相互に排他的にする

チェックボックスリスト内の2つのチェックボックスまたはチェックボックスを相互排他的にする方法を知っておく必要があります。 私の質問は、それとは少し異なっているしかし、希望は、スタックオーバーフローからいくつかの助けを得るために、

さて、次のように私は、2つのチェックボックスのリストを持っており、データセットテーブルから、私は、チェックボックスの値を取得しています、

CheckBoxlist1 - Checkbox_selectColumns

if (IsDataSetNotEmpty(ds)) 
{ 
    CheckBox_selectColumns.Items.Clear(); 
    foreach (DataRow row in ds.Tables[0].Rows) 
    { 
    CheckBox_selectColumns.Items.Add(row[0].ToString()); 
    } 

} 

CheckBoxlist2 - Checkbox_selectFields

if (IsDataSetNotEmpty(ds)) 
{ 
    Checkbox_selectFields.Items.Clear(); 
    foreach (DataRow row in ds.Tables[1].Rows) 
    { 
    CheckBox_selectColumns.Items.Add(row[0].ToString()); 
    } 

} 

私はfollを取得します各リストにチェックボックスがあります。

Checkbox_selectColumns:従業員ID、名、姓

Checkbox_selectFields:管理者ID、管理します。FName、マネージャーLNAME

どのような方法は、私はこれらの2つのチェックボックスは、相互に排他的で作ることができるあり、それはあるかIティムさんの助けを借りて、この問題に取り組ん後

+1

各リストの 'SelectedIndex'プロパティをチェックすることができます。リスト1の値が> = 0ならば、リスト2を無効にし、逆も同様です。また、1つのリストで選択が行われた後、その選択が解除された(つまり、その時点で無効なリストを再び有効にしなければならない)状況を処理する必要があります。もっと時間があれば、コードサンプルをまとめようとします。うまくいけば、これはあなたと協力する何かを与えるでしょう。 – Tim

答えて

1

CheckBox内の項目をループするのではなく、コントロールのSelectedValueプロパティを使用することをお勧めします。ポストバック(SelectedIndexはありません)(ListControl.SelectedValue Property):

protected void CheckBox_selectColumns_SelectedIndexChanged(object sender, EventArgs e)   
{    

    if (CheckBox_selectColumns.SelectedValue != "") 
    { 
     foreach (ListItem listItem in CheckBox_SelectAll.Items) 
     { 
      listItem.Selected = false; 
     } 
    } 
} 

protected void CheckBox_SelectAll_CheckChanged(object sender, EventArgs e) 
{ 

    if (CheckBox_SelectAll.SelectedValue != "") 
    { 
     foreach (ListItem listItem in CheckBox_selectColumns.Items) 
     { 
      listItem.Selected = false; 
     } 
    } 
} 
+0

完璧! great working :)この簡単なソリューションをありがとう。もう1つのクエリは、現在、両方のリストで自動ポストバックを有効にしています。しかし、リスト内のいずれかのチェクボックスを選択または選択解除すると、ページ全体がリロードされます。私は、AjaxのUpdate Panelを使用できることを知っています。それでも、ASP.netには何か問題があります。 – Jithu

+1

@Jithu - ようこそ。私はあなたが仕事の周りに何を意味しているのか分かりません - あなたがページ全体をポストバックすることを言及しているならば、私は唯一の "回避策"(そして回避策とは思わない) AJAXとUpdatePanel(ASP.NET経由)を介して認識されます。 – Tim

+0

ティム、ありがとう、私はアヤックス先に行くだろう... – Jithu

0

こんにちは...最初のリストから任意の一つ以上のチェックボックスを選択し、私は2番目のリストとその逆のいずれかのチェックボックスを選択しないでください。..

ありがとうございましたヒント、それは最後に働いた。簡単なものがあれば、解決策を提示してください。第二チェックボックスリストについて

protected void CheckBox_selectColumns_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      bool Is_select = false; 
      foreach (ListItem listItem in CheckBox_selectColumns.Items) 
      { 
       if (listItem.Selected) 
       { 
        Is_select = true; 
       } 

      } 

      if (Is_select) 
      { 
       foreach (ListItem listItem in CheckBox_SelectAll.Items) 
       { 
        if (listItem.Selected) 
        { 
         listItem.slected=false; 
        } 

       } 
      } 

     } 

この1が正常に機能します。..

 protected void CheckBox_SelectAll_CheckedChanged(object sender, EventArgs e) 
     { 
      bool Is_select = false; 
      foreach (ListItem listItem in CheckBox_SelectAll.Items) 
      { 
       if (listItem.Selected) 
       { 
        Is_select = true; 
       } 

      } 

      if (Is_select) 
      { 
       foreach (ListItem listItem in CheckBox_selectColumns.Items) 
       { 
        if (listItem.Selected) 
        { 
         listItem.slected=false; 
        } 

       } 
      } 
     } 

を反対をした、コードビットは、より洗練させる任意の提案は本当に参考になります...

関連する問題