如何添加一个动态的按钮并动态的添加事件?

hancec 2004-12-23 05:04:19
我的意思如下:
我想根据用户的要求Response.Write一段HTML代码。。但是在这段代码里包含一个按钮(也可能没有)
我如何让这段Response到客户端的按钮响应一个我在服务器端已经定义好的事件??
...全文
260 23 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
jujuxys 2005-01-06
  • 打赏
  • 举报
回复
对于N个Button,如果是客户端那么就是event.srcElement了,如果是服务器端,那个object sender不就可以确定了吗?
shan1119 2005-01-06
  • 打赏
  • 举报
回复
up
Paradise_heida 2005-01-06
  • 打赏
  • 举报
回复
必须在服务器端动态生成
只运行在客户端的控件无法响应服务器端的事件
PPLUNCLE 2005-01-06
  • 打赏
  • 举报
回复
up
wcnyygy 2005-01-06
  • 打赏
  • 举报
回复
呵呵.我随带问一个问题.如题功能我已经做出来了.但是又出现一个新问题.自动生成了N个button但都指向一个click如何确定我是点了那一个button.
jujuxys 2005-01-05
  • 打赏
  • 举报
回复
我这儿有两种方法,你看合不合适:
1、动态生成按钮,并给控件加事件,但是这种情况,当PostBack后按钮就消失了,其原因是服务器没有存这个控件的状态,也就是LoadViewState时没有它,那么我们需要重载一下LoadViewState事件,在这个事件中再添加这个控件就可以了。也就是 if (!Page.IsPostBack){动态添加控件,添加事件} ,Override LoadViewState(){再加这个控件和事件}
2、另外一种方法,就是页面上放一个隐藏的服务器控件,不如一个TextBox,把它的宽度设为0(如果设Visible = false,那么服务器端不生成其Html,无法通过脚本控制它),PostBack属性设true,对这个TextBox写后台的onchange代码,你Response 出一个客户端按钮,对这个按钮的onclick写_doPostBack(服务器端TextBox,onchange)就可以了.
悄悄的回来了 2005-01-05
  • 打赏
  • 举报
回复
先要注册事件,再写该事件要执行的代码。
dwdw 2005-01-05
  • 打赏
  • 举报
回复
在初始化时作控件生成
hancec 2004-12-23
  • 打赏
  • 举报
回复
<table width="460" border="0" cellpadding="10" cellspacing="0" class="nr-st-9pt-16line">
<tr>
<td>
<p>按钮位置</p>
</td>
</tr>
</table>
比如我根据用户要求,生成了这段html,我要在“按妞位置”这里生成一个按纽并添加一个服务器端的事件
chriswu 2004-12-23
  • 打赏
  • 举报
回复
我换名了,咯咯
chriswu 2004-12-23
  • 打赏
  • 举报
回复
不太懂,关注、学习ing...
hancec 2004-12-23
  • 打赏
  • 举报
回复
问题是这个按钮的位置我也不清楚//所以不能事先用visible来指定
这个按钮的位置是根据用户的一段html代码决定的。。。比如
<div>button<div>。。。然后我就要在button这个位置生成这个可以响应服务器事件的按钮


大家有没有遇到过这种问题?我想了好长时间也想不出来。。如果response.write一个input。。。则因为是客户端生成的,没有办法响应服务器事件
chriswu 2004-12-23
  • 打赏
  • 举报
回复
在后台代码里为按钮加一个attribute
goody9807 2004-12-23
  • 打赏
  • 举报
回复
这几天有几人在问类似的问题,“动态加载控件,为什么控件事件不能触发了?”,问题是他们都是在

if (!IsPostBack)
{
//动态产生或装载控件
//也许需要连接控件事件处理函数
//加到父控件的Controls
}

里生成或装载了动态控件。当控件在客户端触发,postback到服务器端时,IsPostBack==true,这些控件没有被重新生成,怎么能触发事件?所以答案是,当你需要动态生成或装载控件时,应该在if (!IsPostBack)之外做。我问为什么想在if (!IsPostBack)之内做呢?回答是想只生成一次,跟在ASPX页面里一样

<form id="form1" runat=server>
<asp:Button id="Button1" runat="server" Text="Button1" OnClick="Button_Click"/>

#%&%#&%^#&,你怎么会认为这个控件只生成一次呢?这些玩意也不是魔术,想生成一个Button对象,你需要用

Button btn = new Button();

需要触发它的Click事件,你需要用

btn.Click += new EventHandler(YourHandler);

即使象包含

<asp:Button id="Button1" runat="server" Text="Button1" OnClick="Button_Click"/>

的页面,它也是被转化成C#或VB文件,编译成assembly,然后再被执行的啊

不信?加一个页面,TestControls.aspx:

<%@ Page Debug="true" %>
<%@ Import Namespace="System.Data"%>
<%@ Import Namespace="System.Data.SqlClient"%>

<form id="form1" runat=server>
<asp:Button id="Button1" runat="server" Text="Button1" OnClick="Button_Click"/>
<asp:DataGrid id="DataGrid1" runat="server" AutoGenerateColumns="false" GridLines="Both">
<Columns>
<asp:TemplateColumn HeaderText="Name">
<ItemTemplate><%# DataBinder.Eval(Container.DataItem,"Name")%></ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
</form>
<script language="C#" runat="server">
void Button_Click(Object sender, EventArgs e)
{
Button btn = (Button)sender;
Response.Write(btn.Text + " is clicked<BR>");
}

void Page_Load(Object sender, EventArgs e)
{

Button btn = new Button();
btn.ID = "Button2";
btn.Text = "Button2";
btn.Click += new EventHandler(Button_Click);
form1.Controls.Add(btn);
if (!IsPostBack)
{
SqlDataAdapter da = new SqlDataAdapter("select Name=au_fname + ' ' + au_lname from authors", "server=localhost;database=pubs;uid=sa;pwd=;");
DataTable dt = new DataTable();
da.Fill(dt);
DataGrid1.DataSource = dt.DefaultView;
DataGrid1.DataBind();
}

//}//这是故意的

</script>

把最后一个“}”注释掉
leihome 2004-12-23
  • 打赏
  • 举报
回复
关注学习ING。。。
lily4064 2004-12-23
  • 打赏
  • 举报
回复
我也觉得在服务器端生成,通过条件判断,然后决定是否生成该按钮以及相应的事件。
zyq1215 2004-12-23
  • 打赏
  • 举报
回复
同意楼上,用enable控制
lily4064 2004-12-23
  • 打赏
  • 举报
回复
我也觉得在服务器端生成比较好,通过条件判断,来决定是否生成这个按钮。
viznet 2004-12-23
  • 打赏
  • 举报
回复
给点代码来看看
hancec 2004-12-23
  • 打赏
  • 举报
回复
但是我如何让这个生成的bt显示在我指定的位置呢?
加载更多回复(3)

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧