关于RadioButton的一个问题

ylj1079 2005-10-31 10:07:23
一个RadioButton的控件,想在后台代码中添加一个客户端的onfocus事件,代码如下
this.test.Attributes.Add("onfocus","alert('abc')"); //test 为RadioButton的id

但当运行后,在HTML原码中发现如下代码:
<span onfocus="alert('abc')"><input id="test" type="radio" name="test" value="test" />

也就是说 onfocus 事件没有在test中,而在<span> 中,无奈啊。
哪位大侠碰到过相关问题没有。我希望在HTML代码中生成如下:
<input id="test" type="radio" onfocus="alert('abc')" name="test" value="test" />


我就是要实现这个功能,不要说改为HTML控件之类的答案,这个事件(onfocus)必须要在后台代码中动态添加进去的。


...全文
194 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ylj1079 2005-10-31
  • 打赏
  • 举报
回复
多谢各位参与。感谢cuike519,我参照 cuike519的代码重写了个控件,已经解决了。代码如下:
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Text;

namespace pxgl.Web.UI.WebControls
{
/// <summary>
/// WebCustomControl1 的摘要说明。
/// </summary>
[DefaultProperty("Text"),
ToolboxData("<{0}:NewRadio runat=server></{0}:NewRadio>")]
public class NewRadio : System.Web.UI.WebControls.RadioButton
{


/// <summary>
/// 将此控件呈现给指定的输出参数。
/// </summary>
/// <param name="output"> 要写出到的 HTML 编写器 </param>
protected override void Render(HtmlTextWriter output)
{
StringBuilder sb = new StringBuilder();

System.IO.TextWriter tw = new System.IO.StringWriter(sb);

HtmlTextWriter OriginalStream = new HtmlTextWriter(tw);

base.Render(OriginalStream);

string s = sb.ToString();

int start = 0;

int end = s.Length;


start = s.IndexOf("<input",start,end-start);

StringBuilder sbItemAttribute = new StringBuilder();

this.Attributes.Render(new HtmlTextWriter(new System.IO.StringWriter(sbItemAttribute)));

s = s.Insert(start+7,sbItemAttribute.ToString()+" ");

start = s.IndexOf("/>",start,s.Length-start);


output.Write(s);

}
}
}
基本上cuike519写的一样,没什么改,就是去掉了循环。再次感谢cuike519!!

可外:楼上的那样,RadioButton1.Attributes.Add("onclick","alert('aa')");是可以的,但
RadioButton1.Attributes.Add("onfocus","alert('aa')");不行啊,试过没?
nanhaoff 2005-10-31
  • 打赏
  • 举报
回复
RadioButton1.Attributes.Add("onclick","alert('aa')");
测试过,可用
zfhuangwei 2005-10-31
  • 打赏
  • 举报
回复
关注
xiaofeixia__9999 2005-10-31
  • 打赏
  • 举报
回复
贴个标签
cuike519 2005-10-31
  • 打赏
  • 举报
回复
我在下面的文章中描述了,如何使CheckBoxList添加的Attribute生效。
同样的道理可以应用于RadioButton控件,只要重写RadioButton的Render方法即可。
http://www.csdn.net/Develop/read_article.asp?id=75587
豌豆干 2005-10-31
  • 打赏
  • 举报
回复
sunnystar365(一个人的天空)
<input id="RadioButton1" type="radio" name="RadioButton1" value="RadioButton1" onfocus="alert('abc')" />会触发事件。
豌豆干 2005-10-31
  • 打赏
  • 举报
回复
真的是有这个问题,我试了。
查了一下帮助,没有看出有什么异常,但是就是RadioButton得不到焦点了,搞不定,等高手来
sunnystar365 2005-10-31
  • 打赏
  • 举报
回复
不过你可以在客户端注册一个事件,在服务器端执行。
sunnystar365 2005-10-31
  • 打赏
  • 举报
回复
没有这个事件吧

62,244

社区成员

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

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

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

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