asp.net按钮/ htmlbutton事件不会触发

时间:2013-06-11 15:14:46

标签: c# asp.net events

我知道之前已经被问过,但即使我在每个OnInit上创建按钮和事件,我也无法触发事件。我正在做一个Sharepoint 2010 Web部件并用值填充radiobuttonlist,并在每次调用OnInit时向Web部件添加一个提交按钮。 Page_Load方法为空。我也尝试将paintQnA调用放在一个覆盖的CreateChildControls中,结果相同。

    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);

        ...//Get data needed to create gui

        paintQnA(dr, dt, currentRow);
    }

    void paintQnA(DataRow dr, DataTable dt, int currentRow)
    {
        Panel p = new Panel();
        p.ID = currentRow.ToString();

        Label lbl= new Label();
        lbl.Text = dr["Title"].ToString();

        RadioButtonList rbl = new RadioButtonList();
        rbl.ID = currentRow.ToString() + "1";

        HtmlButton submitBtn = new HtmlButton();
        submitBtn.ID = currentRow.ToString();
        submitBtn.InnerText = "Click";
        submitBtn.ServerClick += new EventHandler(submitBtn_Click);

        ...//fill the radiobuttonlist with data

        this.Controls.Add(p);
        p.Controls.Add(lbl);
        p.Controls.Add(rbl);
        p.Controls.Add(submitBtn);

        UpdatePanel1.ContentTemplateContainer.Controls.Add(p);
    }

    void submitBtn_Click(object sender, EventArgs e)
    {
        ...//Should display another dynamically created panel but is never reached.
    }

2 个答案:

答案 0 :(得分:1)

发现错误:

p.ID = currentRow.ToString();
submitBtn.ID = currentRow.ToString();

他们拥有相同的ID ......他们不能拥有相同的ID。

答案 1 :(得分:1)

在您的代码中,我可以看到您将ID分配给PanelsubmitBtn。因此,由于重复的ID,您的点击事件不会被触发。

为Panel和Submitbutton尝试不同的IDs然后它应该可以正常工作!