【问题标题】:Dynamic Button not calling click event动态按钮不调用点击事件
【发布时间】:2013-10-06 17:51:35
【问题描述】:

我的页面中有一个 asp 表,我从代码隐藏中创建了它的内容。对于这个特定的 TableRow,我需要创建一个多行文本框和一个按钮,当我单击一个按钮时,我会将文本框内容保存到我的数据库中。但是我的点击功能没有被调用。这是我的代码:

ContentPlaceHolder cont = new ContentPlaceHolder();
HtmlGenericControl br = new HtmlGenericControl();
HtmlGenericControl br2 = new HtmlGenericControl();
TextBox texto = new TextBox();
Button btnSalvarTexto = new Button();
btnSalvarTexto.ID = "btnSalvar";
btnSalvarTexto.Click += new EventHandler(btnSalvarTexto_Click);
btnSalvarTexto.CssClass = "botao";
btnSalvarTexto.Text = "Salvar";
cont.ID = "Placeholder";
texto.ID = "TextBoxObs";
texto.Width = 300;
texto.TextMode = TextBoxMode.MultiLine;
texto.Rows = 3;
br.InnerHtml = "<br><br><div style='width:300px;background-color:#fff;padding:15px;'>";
cont.Controls.Add(br);
cont.Controls.Add(texto);
cont.Controls.Add(btnSalvarTexto);
br2.InnerHtml = "</div>";
cont.Controls.Add(br2);
td2.Controls.Add(cont);
tr2.Cells.Add(td2);
TablePrecos.Rows.Add(tr2);

事件处理程序:

void btnSalvarTexto_Click(object sender, EventArgs e)
{
    //Update command here, this function doesn't even gets called, so it doesn't matter what it does
}

我的代码有什么问题?我在btnSalvarTexto_Click 函数中放置了一个断点,但它永远不会到达它。

编辑:好的,创建这些控件的函数称为 CriarCapa,它在 Page_LoadComplete 中调用,如下所示:

 protected void Page_LoadComplete(object sender, EventArgs e)
 if (!IsPostBack)
 {
    CriarCapa();
 }

是的,我正在测试它是否不是回发。

【问题讨论】:

  • 控件创建代码在哪里?在页面加载中?每次回发都会调用该代码块吗?
  • 发布您的Page_Load 代码。
  • 我只在第一次进入时在Page_LoadComplete 中调用它

标签: c# asp.net dynamic


【解决方案1】:

您需要在每次页面加载时重新创建按钮,因为它会被单击的按钮清除并导致回发。

该按钮会导致回发,这会在实际事件处理程序之前触发页面生命周期中的Page_Load 事件。由于按钮是动态创建的,因此当页面加载发生并且您的代码仅在第一次通过时构建动态内容时,不会创建按钮,也不会为 click 事件连接事件处理程序。

【讨论】:

  • 我要对你的语言有点吹毛求疵,因为它应该有助于蒂亚戈正确地思考它。没有什么被“消灭”。 ASP 在每次回发时重新创建页面对象,因为 ASP 是无状态的。 ASP 从 aspx 文件创建页面对象,然后使用来自 POST(包括 ViewState)的信息对其进行水合。它使用该信息来决定是否应该运行任何事件处理程序。如果创建按钮的代码没有在每个 POST 上运行,则没有按钮可以触发事件。
猜你喜欢
  • 1970-01-01
  • 2015-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-28
相关资源
最近更新 更多