0

を作成するボタンがありますCheckBoxList。の項目はCheckBoxList、ユーザーの現在の通知サブスクリプションに基づいて選択されます。選択したアイテムの真または偽の値を保存しています。

ユーザーがのチェックボックスをオンまたはオフにしてサブスクリプションを変更した後、CheckBoxList別のボタンをクリックして通知サブスクリプションを更新します。ポストバックで変更された選択と比較Viewstate["PREV"]し、変更に基づいていくつかの関数を実行する必要があります。

ArrayList list = new ArrayList();
for (int i = 0; i < checkBoxList1.Items.Count; i++)
{
    list.Add(checkBoxList1.Items[i].Selected.ToString());
}
ViewState["PREV"] = list;

の値は表示されませんがResponse.Write、デバッグでウォッチを追加すると、ViewStateの値は正しくなります。

私が抱えている問題は、比較を行うために次のステップにどのようにアプローチするかです。これが私が達成したいことです:

            for (int i = 0; i < checkBoxList1.Items.Count; i++)
        {
            //if checkbox state goes from false to true, subscribe to topic
               //mySubscribeMethod
            //else if checkbox state goes from true to false, unsubscribe to topic
               //myUnsubscribeMethod
            //else if checkbox state is unchanged, do nothing
        }
4

1 に答える 1

0

このようなものを試すことができます

ArrayList list =  ViewState["PREV"] as ArrayList;
for (int i = 0; i < checkBoxList1.Items.Count; i++)
{
     if (checkBoxList1.Items[i].Selected == true && Convert.ToBoolean(list[i]) == false)
       {
           // Subscribe Method
       }   
     if (checkBoxList1.Items[i].Selected == false && Convert.ToBoolean(list[i]) == true)       
       {
           // Unsubscribe Method
       }
     else
       {
           // Continue to loop
       } 
}
于 2013-01-09T16:41:16.430 に答える