ASP.NET / Sharepoint - Checkbox.CheckChanged事件从bevore触发其他(相同)控件的相同事件

时间:2013-12-04 14:45:01

标签: asp.net events sharepoint checkbox oncheckedchanged

我正在使用ASP.NET

开发Webpart for SharePoint

每次点击我的页面都会重新加载,我在两个表中添加一个具有不同ID的复选框列表,并在事件中添加一个事件来处理CheckedChanged事件(都是相同的)。

另外,autopostback设置为true。

当我跑步并点击我的第一个复选框时,每个人认为工作正常。 通过单击同一个表中的下一个复选框,我进入我的eventReceiver 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>);
}

这些表只用新的...和ID构建..没什么特别的

EDIT :::: 我已经在简单的ASP.NET中构建代码,并且它正在运行,也许这是一个SharePoint问题         protected void Page_Load(object sender,EventArgs e){             表test = new Table();             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;

    }

1 个答案:

答案 0 :(得分:0)

我发现问题出在我发布的问题上。

属性ID =“”的内容太长了,缩小IDName之后又恢复了工作。

奇怪,但这是解决方案, 请记住:注意属性ID的长内容是多少,某处必须有限制