2012-03-28 1 views
0

こんにちは、foreachループ内にいくつかのチェックボックスを設定し、それらをページコントロールに追加しました。私はまた、彼らに1つのイベントハンドラを割り当てて、自分のパラメータを渡しました。foreachループ内の特定のコントロールに対してのみイベントハンドラを起動する方法

チェックボックスのcheckedchangedイベントが発生すると、追加したすべてのチェックボックスに対してそのイベントハンドラが呼び出されます。これは、イベントが発生するたびにイベントハンドラを内部ループに割り当てるためです。すべてのチェックボックスに対して発生します。チェックが変更されたチェックボックスの場合にのみ、一度だけ起動するようにします。

私は問題 コードスニペットは、あなたが

CheckBox checkboxtemp; 

foreach (SPListItem item in list.Items) 
     { 
      checkboxtemp = new CheckBox(); 
      checkboxtemp.ID = "CheckBoxId" + item.ID; 
      checkboxtemp.Text = item.Title; 
      checkboxtemp.AutoPostBack = true; 
      checkboxtemp.CheckedChanged += new EventHandler((sender, e) => checkboxtemp_CheckedChanged(sender, e, checkboxtemp.Text)); 
      Controls.Add(checkboxtemp); 
     } 

を理解することに役立つことがあり、すべてのチェックボックスのためにトリガーされますイベントハンドラは

protected void checkboxtemp_CheckedChanged(object sender, EventArgs e, string fieldName) 
    { 
     Label1.Text = fieldName; 
    } 

ようで解決することができますどのように私を助けてくださいどんなチェックボックスがチェックされても問題ありません。私は常にcheckboxtemp_CheckChangedイベントハンドラのfieldNameパラメータの中で最後のチェックボックステキスト値を取得します。これまでのいずれかのチェックボックスの状態が変更された場合、すなわち、foreachループでのイベントハンドラは、各項目のために呼び出されます。.. 私はイムが何か間違ったことを知っているが、

をそれを把握するカント

+0

はアイテム固有です。 –

+0

はいitem.IDはアイテムごとに一意です –

答えて

0

この

を試してみてください助けてください削除

CheckBox checkboxtemp;
foreach (SPListItem item in list.Items) 
     { 

      var checkboxtemp = new CheckBox(); 
関連する問題