【问题标题】:click event for HTML dynamic buttonHTML 动态按钮的单击事件
【发布时间】:2012-08-06 19:14:54
【问题描述】:

我正在VS2010 下开发一个C# ASP.NET 应用程序。我想通过将 HTML 文本写入文字来生成动态表格,包括表格上动态插入的按钮。我知道如何创建动态 ASP.NET 控件,但是动态 HTML 控件有一个小问题。我创建了一个 HTML 按钮,但我不知道如何为其提供服务器端点击功能。

我可以创建动态 ASP.NET 控件并将它们插入到我的文字中吗?如何获取动态创建的按钮来触发服务器端事件?

我已经使用 OnServerClick 属性来定义我的服务器端功能,但它没有效果,我该如何使用这个值?

【问题讨论】:

  • 表格数据从何而来?考虑使用Repeater control 重新创建表格,这将使您在生成表格时更加灵活(包括使用服务器端按钮)。
  • 我知道有更好的方法来执行这个动作但我必须使用文字,我可以创建按钮这个按钮标签但我不知道如何为其添加点击事件

标签: asp.net html literals


【解决方案1】:

如果你想在你的按钮点击后回复,你必须在它的onclick事件上添加__doPostBack函数,为此你可以添加一个像

这样的按钮
StringBuilder dynamicHtml = new StringBuilder();
dynamicHtml.Append("Your Html Code");
dynamicHtml.Append("<input type='button' id='btn1' name='btn1' onclick='__doPostBack(\'btn1\',\'\')' value='Click Here' />"); 

当你点击它时,它会回发,你可以查看Request.Form["__EVENTTARGET"]来查找回发页面的人。

通过在 Page_Load 事件处理程序中检查 Request.Form["__EVENTTARGET"],您可以调用任何服务器端方法,例如

protected void Page_Load(object sender, EventArgs e)
{
    var eventTarget = Request.Form["__EVENTTARGET"].ToString();

    if(eventTarget == "btn1")
    {
        CallMethod1();
    }
}


private void CallMethod1()
{
    //Code which you want to run
}

【讨论】:

  • 谢谢,但是如何定义它的点击功能呢?回发后会发生什么?我想为这个按钮定义一个点击功能
  • 我使用了这个方法,但是我的按钮没有回发
  • 您是否遇到任何 JS 错误?确保您有一个带有 runat="server" 的表单标签,并且您的页面视图源包含 __doPostBack 函数定义。
猜你喜欢
  • 1970-01-01
  • 2020-12-28
  • 2011-09-05
  • 2014-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多