在线给分:在Label中加入怎么加入一个按钮和怎么使点击按钮触发事件

chuanzai 2003-08-23 07:27:22
test.aspx代码
<HTML>
<HEAD>
<title>Test</title>
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<asp:Label id="Label1" runat="server">测试一下</asp:Label>
</form>
</body>
</HTML>

test.aspx.cs代码
private void Page_Load(object sender, System.EventArgs e)
{
Label1.Text += "<INPUT type='button' value='Button' id='Button1' name='Button1' runat='server'>";
}
public void Button1_ServerClick(object sender, System.EventArgs e)
{
事件代码……
}

这样点击按钮,无任何反应
请问这个方法能触发事件吗?要怎么修改
还有别的好方法在label中加入按钮,能触发事件的吗?
...全文
263 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
chuanzai 2003-08-26
  • 打赏
  • 举报
回复
谢谢大家的帮助,我最后还是用label中加个<iframe>来处理的
例子可以看我的论坛的出售帖
www.nuofeng.com
chuanzai 2003-08-24
  • 打赏
  • 举报
回复
能不能通过这个按钮事件来触发另一个已经在页面的只是visible设为false的按钮控件,来达到激发服务器事件
xrll 2003-08-24
  • 打赏
  • 举报
回复
你的这个要求是服务器端事件,应该是不可以的!
chuanzai 2003-08-24
  • 打赏
  • 举报
回复
to xrll() 能不能通过这个方法来激发一个事件
像这种事件:
public void Button1_Click(object sender, EventArgs e)
{
事件代码……;
}
xrll 2003-08-24
  • 打赏
  • 举报
回复
对不起:将这段删除!
public void Button1_ServerClick(object sorce, EventArgs e)
{
Response.Write("<script>alert('你无权访问本页!')</" + "script>");
}
xrll 2003-08-24
  • 打赏
  • 举报
回复
<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="gb2312" %>
<HTML>
<HEAD>
<title>Test</title>
<script language="C#" runat="server">
private void Page_Load(object sender, EventArgs e)
{
Label1.Text += "<input type = 'button' onclick='ff()' value='dddd' id='bt'/>";
}
public void Button1_ServerClick(object sorce, EventArgs e)
{
Response.Write("<script>alert('你无权访问本页!')</" + "script>");
}
</script>
<script language="JavaScript">
function ff(){
alert('你无权访问本页!');
}
</script>
</HEAD>
<body>
<form runat="server">
<asp:Label id="Label1" runat="server">测试一下</asp:Label>
<div id="d" style="display=none">想看我吗?</div>
</form>
</body>
</HTML>
xrll 2003-08-24
  • 打赏
  • 举报
回复
如果事件是在客户端,是可以的如:
<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="gb2312" %>
<HTML>
<HEAD>
<title>Test</title>
<script language="C#" runat="server">
private void Page_Load(object sender, EventArgs e)
{
Label1.Text += "<input type = 'button' onclick='javascript:if(d.style.display==\"block\"){d.style.display=\"none\" ;}else{d.style.display=\"block\" ;};return false;' value='dddd' id='bt'/>";
}
</script>
</HEAD>
<body>
<form runat="server">
<asp:Label id="Label1" runat="server">测试一下</asp:Label>
<div id="d">想看我吗?</div>
</form>
</body>
</HTML>

chuanzai 2003-08-24
  • 打赏
  • 举报
回复
我就是要在Label中添加一个能激发事件的按钮,方法不论,不知道到底行不行?
xrll 2003-08-24
  • 打赏
  • 举报
回复
服务器事件的控件的确不能通过这种方法创建,还是走动态创建控件的方法吧!
xrll 2003-08-24
  • 打赏
  • 举报
回复
你可以这样:通过label1.Text生成一个input按钮,控制已存在的一个input按钮的可视与否,这个按钮包含服务器事件,如:
<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="gb2312" %>
<HTML>
<HEAD>
<title>Test</title>
<script language="C#" runat="server">
private void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
Label1.Text += "<input type = 'button' onclick='if(bt.style.display==\"block\"){bt.style.display=\"none\" ;}else{bt.style.display=\"block\" ;};return false;' value='submit1' id='btt' runat='server'/>";
}
public void Button1_ServerClick(object sorce, EventArgs e)
{
Response.Write("<script>alert('你无权访问本页!')</" + "script>");
}
</script>
<script language="JavaScript">
function ff(){
alert('你无权访问本页!');
}
</script>
</HEAD>
<body>
<form runat="server">
<asp:Label id="Label1" runat="server">测试一下</asp:Label>
<input type = 'button' value="submit2" style="display=none" id="bt" onServerclick="Button1_ServerClick" runat="server"/>
</form>
</body>
</HTML>
效果如:http://218.84.107.5/t.aspx
neodotnet 2003-08-24
  • 打赏
  • 举报
回复
用Label添加服务器控件是不可能的,因为MS没有给Label控件写这个功能!
MS已经想到你会有这种想法,于是他给你写了另外一些控件,如Panel,PlaceHolder.

如果你还不死心那我也没办法了,你让MS重写这个Label控件吧.

举个例子,你想让一个文字斜体显示,你非得用<b>a</b>来实现,结果你看到的是粗体显示,因为他没有你要的功能,那你为什么不用<i>a</i>呢!
neodotnet 2003-08-23
  • 打赏
  • 举报
回复
如果是在程序中添加的,就用PlaceHolder控件,他不添加多余的HTML代码,代码如下:

///test.aspx代码
<HTML>
<HEAD>
<title>Test</title>
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
测试一下
<asp:PlaceHolder id="PlaceHolder1" runat="server" />
</form>
</body>
</HTML>

//test.aspx.cs代码
....
protected PlaceHolder PlaceHolder1;

private void Page_Load(object sender, EventArgs e)
{
Button Button1 = new Button();
Button1.Text = "Button";
Button1.Click += new EventHandler(Button1_Click);
PlaceHolder1.Controls.Add("Button1");

}
public void Button1_Click(object sender, EventArgs e)
{
事件代码……
}
大户翁 2003-08-23
  • 打赏
  • 举报
回复
<script language="javascript">

function Button1_ServerClick()
{

}
</script>
大户翁 2003-08-23
  • 打赏
  • 举报
回复
private void Page_Load(object sender, System.EventArgs e)
{
Label1.Text += "<INPUT type='button' value='Button' id='Button1' name='Button1' Onclick='Button1_ServerClick' runat='server'>";
}

'Button1_ServerClick' 写在html中
panyee 2003-08-23
  • 打赏
  • 举报
回复

要让动态生成的按钮有服务端事件,只能是实例化一个按钮出来,而不是简单地给label赋值

那样只产生没有服务端事件的客户端按钮
cmsoft 2003-08-23
  • 打赏
  • 举报
回复
是没必要,我只是举个例,他把label当成容器来使了,所以我要他改成panel

;)
panyee 2003-08-23
  • 打赏
  • 举报
回复
把<input type=button>直接写在页面中,本来就可以激活服务端事件
有没有panel都一样


alaisalaix 2003-08-23
  • 打赏
  • 举报
回复
同意 cmsoft(韦小宝是我的老乡.net)
panel好用
chuanzai 2003-08-23
  • 打赏
  • 举报
回复
to cmsoft(韦小宝是我的老乡.net)
您的意思是label中无法实现此功能吗?
panyee 2003-08-23
  • 打赏
  • 举报
回复
如果是程序中本身就写好的
<asp:button id=btn1 runat=server text='wo1' onclick='btn1_click' />
那执行起来是没问题的

但通过
Label.Text 赋值出来的按钮,它在
<input type="hidden" name="__VIEWSTATE" ..
里没有注册上,系统不知道该去执行哪一个服务端事件

加载更多回复(11)

62,041

社区成员

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

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

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

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