导航
  • 主页
  • .NET Framework
  • ASP
  • Web Services
  • .NET互联网桌面应用
  • VB
  • 图表区
  • 分析与设计
  • 组件/控件开发
  • AppLauncher
  • 问答

关于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)必须要在后台代码中动态添加进去的。


...全文
170 点赞 收藏 10
写回复
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
没有这个事件吧
回复
发动态
发帖子
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
社区公告
暂无公告