[C#⼀.net] 后台写前台代码:怎么实现button的点击事件?

2024年11月22日 02:08
有5个网友回答
网友(1):

服务端的Button和客户端的Button是不一样的 服务端的Button的作用域在服务器端 相反 页面上的Button的作用域仅仅限于浏览器
因为这样 二者的书写方式是不一样的
服务端最基本的写法是:
相反客户端的基本写法是:

#####但是归根结底,服务端按钮在页面呈现时还是要转换成客户端按钮的 中间的机制很复杂 牵涉到ViewState等,不多说了
-----------------------------------------------------------------------------------
下面说说楼主关心的点击事件的写法,楼主也没说清楚情况 我尝试举几种常见情形,如果楼主的情形不在其中,参考一下思路就能想出来该怎么做.
1)要服务器端的一个ASP:Button在客户端被点击时执行某个事件,这个是很简单的,有以下两种方法:
A>button.OnClientClick="window.alert('Shit!you hurt me!')";
B>button.Attribute["onclick"]="window.alert('Shit,you hurt me!')"
2)在页面的后台代码中要某个客户端的按钮执行某个事件,假定按钮的id=xxx,其方法是写一段脚本在客户端运行:
Response.Write("");
3)在客户端的按钮中直接声明某个事件:


上面说的都是服务端或者客户端定义客户端的事件
那么有没有可能客户端按钮点击后执行服务端事件呢?
OK,如果你定义的客户端按钮其实是服务端按钮在客户端浏览器的呈现的话 那么你可以很轻松的实现,这一点我想楼主肯定已经知道怎么做了 如果你不知道的话看前面第四楼 qiangking的解答.
还有一个方法就是AJAX了 通过AJAX也可以实现上述功能.OK 这是理论上的,我也知道怎么写,不过微软又基于AJAX给出了一个解决方案,代码为ALTRAS 抱歉 我没用过ALTRAS 所以只能说到这里了

网友(2):

Response.Write("?????");这样肯定不行的,看下面代码,测试通过的。
protected override void CreateChildControls()
{
Button btn = new Button();
btn.Text = "test";
btn.Click += new EventHandler(btn_Click);
this.form1.Controls.Add(btn);
base.CreateChildControls();
}

void btn_Click(object sender, EventArgs e)
{
this.TextBox1.Text = "123";
}
顺便我再发给你另一个帖子,希望对你有用:
http://zhidao.baidu.com/question/201574521.html

网友(3):

本身就是在服务器端执行的代码。它其实就是
Response.Write(“”)。就是说上面两种写法是一样的,都是交给服务器端去执行输出一段html()。
如果用Response.Write(‘’),服务器会认为你要输出的是这段字符串,如果浏览器不支持的话,将不会显示出任何东西来。你可以查看自己的souce,就会发现吧这段字符串输入出来,而不是生成button的Html。

网友(4):

你可以这样写。输出的时候不要Response.Write
protected void Page_Load(object sender, EventArgs e)
{
Table tb = new Table();
TableRow tr = new TableRow();
TableCell tc = new TableCell();
Button btn = new Button();
btn.ID = "123";
btn.Text = "提交";
btn.Click += new EventHandler(btn_Click);
tc.Controls.Add(btn);
tr.Controls.Add(tc);
tb.Controls.Add(tr);
this.form1.Controls.Add(tb);

}

protected void btn_Click(object sender, EventArgs e)
{
Response.Write("123123");
}

网友(5):

string EditUrlDetail = "ContractDeliveryFileManage.aspx?AutoNum=" + strAutoNum + "&TimeStamp=" + Server.UrlEncode(DateTime.Now.ToString());
string strUrl;
strUrl = "";
System.Web.UI.ScriptManager.RegisterStartupScript(btnFileManage, this.GetType(), "btnFileManage", strUrl, false);

像这样openfilemanage就是前台的js写的方法