0

ASP.NET を使用して SharePoint の Web パーツを作成しています。

クリックするたびにページがリロードされ、2 つのテーブルに異なる ID を持つチェックボックスのリストと、CheckedChanged イベントを処理するイベントを追加します (すべて同じです)。

さらに、autopostback は true に設定されています。

実行して最初のチェックボックスをクリックすると、すべてが正常に機能すると考えられます。同じテーブルの次のチェックボックスをクリックすると、eventReceiver 2 に入ります。イベント - 最初は正しいもので、その後チェックボックスがクリックされました。

クリックするボックスと同じ数のチェックボックスがイベントを発生させます (以前に使用した場合)。

2 つのテーブルの違いのみです。ここで、最初のテーブルをクリックしても問題ありません。2 番目のテーブルをクリックしても問題ありません...その後、各テーブルは同じ効果を持ちます。最初のテーブルをもう一度クリックすると、2 つのイベントが処理されます。2 番目のテーブルをクリックすると、これら 2 つのイベントが処理されます。

何が問題なのかわかりません。

ここにいくつかのコードがあります

CheckBox eMailNotifikation = new CheckBox() { TextAlign = TextAlign.Right };
eMailNotifikation.ID = #anCounter + "_" + #anName + "_" + #anothername + "_" + "mail_checkbox";
eMailNotifikation.AutoPostBack = true;          
eMailNotifikation.CheckedChanged -= new EventHandler(eMailNotifikation_CheckedChanged);
eMailNotifikation.Checked = #setInitialValue;
//Add Event
eMailNotifikation.CheckedChanged += new EventHandler(eMailNotifikation_CheckedChanged);
cell.Controls.Add(eMailNotifikation);

それは創造のためです

ここに私の受信機があります:

void eMailNotifikation_CheckedChanged(object sender, EventArgs e) { CheckBox eMailNotification = (sender as CheckBox); //Do some... calling a Webservice eRoomWebservice.DoMyTasl(<params>);
}

テーブルは new... と ID.. でのみ構築されます 特別なものは何もありません

編集:::: 簡単な ASP.NET でコードをビルドしましたが、動作しています。これは SharePoint の問題である可能性があります。test.ID = "test1";

        TableHeaderRow thr = new TableHeaderRow();
        TableHeaderCell thc = new TableHeaderCell();
        thc.Text = "Checkboxes";

        thr.Controls.Add(thc);
        test.Controls.Add(thr);

        TableRow tr = new TableRow();            

        for (int i = 0; i < 10; i++)
        {
            TableCell tc = new TableCell();
            CheckBox chb = new CheckBox();
            chb.ID = "Some_" + i;
            chb.AutoPostBack = true;
            chb.CheckedChanged += new EventHandler(TestEH);

            tc.Controls.Add(chb);
            tr.Controls.Add(tc); 
        }


        test.Controls.Add(tr);
        root.Controls.Add(test);
    }

    void TestEH(object sender, EventArgs e) {
        CheckBox chbx = sender as CheckBox;
        string text = chbx.ID;

    }
4

1 に答える 1