asp.net后台给动态button按钮写事件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net后台给动态button按钮写事件相关的知识,希望对你有一定的参考价值。
我在后台动态添加了一个修改按钮,并添加了一个onclick事件,我怎么来写后面的这个update方法呢
你添加的是 js事件.只能通过前段浏览器捕获,是不能提交到后台的.方案1,给动态控件添加对应的服务器事件
Button.Command += new CommandEventHandler(this.On_Button);
自己写相应委托的 On_Button事件,
或者直接绑定OnClick事件.
方案2,还用你的方法,但是在前端 用js完善update()方法. 在js的update方法中调用AJAX反馈给服务器数据,服务器处理.
思路, ASP.net的任何服务器事件其实都是通过js的前端触发,把页面上的数据重新回传给了后台,可以了解下ASP.NET生命周期.
因此方案1是 直接调用ASP.NET机制 在前台自动生成了回传的js函数
而方案2是手动编写回传函数. 参考技术A
如果你要用它触发服务器端事件(后台事件)。代码并不是这样写的。
而是这样
//这行代码,你用你的FindControl替换掉Button btn = new Button();
//注册一个点击事件
btn.Click+=btn_Click;
void btn_Click(object sender, EventArgs e)
//这里写你的update语句就可以了
追问
我这个button是根据获取的数据状态来动态显示的,直接new Button也可以吗
追答你用你的FindControl把我的那行new 替换掉。
你上传的是截图。所以,我没法复制到你的FindControl代码,所以就new了一个
我在单击按钮的时候报错
asp.net的保护机制。
页面最顶部,把EnableEventValidation="false“
<%@ Page Language="C#" AutoEventWireup="true" Codebehind="default.aspx.cs" Inherits="default" EnableEventValidation="false"%>追问这是添加按钮代码和按钮事件代码,你帮我看一下吧
对的,你把当前页面的头设置一下,EnableEventValidation="false"
<%@ Page Language="C#" AutoEventWireup="true" Codebehind="default.aspx.cs" Inherits="default" EnableEventValidation="false"%>追问我用调试模式启动,点击按钮怎么没反应呢
追答你先看你的代码,有没有到RowDataBound()事件里面,看看有没有注册事件成功。
追问到RowDataBound()事件里了,可是点击按钮就没反应,我加你求求吧,这样太麻烦了
追答823849713
参考技术B 我能问你一下你这个方法的思路吗?我也好做个判断,我主要的是不明白你思路,可以说一下吗?追问什么意思呢?是问我为什么要这么做吗?
追答你这是完成的是什么样的功能,为什么要写成这样的思路,可以跟我说一下,也许我能解决也不一定,我看你的代码是根据输入文本框的一个值来判断类型和你的数据行相不相同,相同就更新这是你的思路吗?还是我理解错了
追问我就是想根据那个状态值来自动添加一个按钮,那个判断数据行是我看网上的代码写的,我也不知道对不对。如果这个状态值符合的话显示那个按钮,并且要给按钮添加一个click事件
本回答被提问者采纳asp.net动态生成按钮Button控件
1.动态生成button控件及响应服务端和客户端事件
void BindButtons()
{
foreach (var item in items) { Button Btn = new Button(); Btn.OnClientClick = "showLoading();return true;"; //客户端事件 //Btn.Attributes.Add("OnClientClick ", "this.disabled=true;return true;"); //无效 //Btn.UseSubmitBehavior = false;/*默认为true时按钮的type=submit会触发表单提交;当为false时生成的html里按钮的type=button是通过js执行__doPostBack(...)来提交表单,为false时OnClientClick里的函数必须return true才能提交form*/ Btn.Width = 180; Btn.Height = 180; Btn.Style.Add("margin", "10px"); Btn.ID = item.UUId; Btn.Text = item.OrgName; Btn.Click += new EventHandler(Btn_Click); this.div1.Controls.Add(Btn); }
}
void Btn_Click(object sender, EventArgs e) {
var btn = sender as Button; Utils.JSExecutor.Execute(this,"alert(\'"+btn.Id+"\')"); }
2.调用:
protected void Page_Load(object sender, EventArgs e) { BindButtons();/*注意动态创建button的位置不能放在下面的if里否则服务端事件不能执行*/ if (!IsPostBack) { BindData(); } }
From:http://www.cnblogs.com/xuejianxiyang/p/5549697.html
以上是关于asp.net后台给动态button按钮写事件的主要内容,如果未能解决你的问题,请参考以下文章