事件处理程序中sender参数的用法
2007-06-05 17:17
351 查看
有很多控件生成的事件处理程序都带有一个object类型的参数sender,往往有大多数初学者不知道这个参数怎么用,其实这个参数从它的命名上就可以知道:它是整个事件处理程序的发起者,知道这一点做一些事情,往往就简单了,下面这个例子是选择gridview中的radiobutton(一般放在模板列中的radiobutton是不能实现只选择一个的)。
protected void rbtnSel_CheckedChanged(object sender, EventArgs e)
{
for (int i = 0; i < this.GridView1.Rows.Count; i++)
{
((RadioButton)this.GridView1.Rows[i].FindControl("rbtnSel")).Checked = false;
}
((RadioButton)sender).Checked = true;
}
当然,如果数据量大的话,刷新是让人受不了的。
所以还有一种方式(非原创)就是使用javascript。
function setRadio(nowRadio)
{
var myForm,objRadio;
myForm=document.forms[0];
for(var i=0;i<myForm.length;i++)
{
if(myForm.elements[i].type=="radio")
{
objRadio=myForm.elements[i];
if(objRadio!=nowRadio && objRadio.name.indexOf("ctgenter")>-1 && objRadio.name.indexOf("rbtnstate")>-1)
{
if(objRadio.checked)
{
objRadio.checked=false;
}
}
}
}
}
然后在服务器端添加radiobutton的属性就可以了:
protected void ctgenter_ItemDataBound(object sender, DataGridItemEventArgs e)
{
//给每个RadioButton1绑定setRadio事件
try
{
((RadioButton)e.Item.FindControl("rbtnstate")).Attributes.Add("onclick", "setRadio(this)");
}
catch (Exception)
{ }
}
当然,sender的用法还有很多,大家可以留言交流。
protected void rbtnSel_CheckedChanged(object sender, EventArgs e)
{
for (int i = 0; i < this.GridView1.Rows.Count; i++)
{
((RadioButton)this.GridView1.Rows[i].FindControl("rbtnSel")).Checked = false;
}
((RadioButton)sender).Checked = true;
}
当然,如果数据量大的话,刷新是让人受不了的。
所以还有一种方式(非原创)就是使用javascript。
function setRadio(nowRadio)
{
var myForm,objRadio;
myForm=document.forms[0];
for(var i=0;i<myForm.length;i++)
{
if(myForm.elements[i].type=="radio")
{
objRadio=myForm.elements[i];
if(objRadio!=nowRadio && objRadio.name.indexOf("ctgenter")>-1 && objRadio.name.indexOf("rbtnstate")>-1)
{
if(objRadio.checked)
{
objRadio.checked=false;
}
}
}
}
}
然后在服务器端添加radiobutton的属性就可以了:
protected void ctgenter_ItemDataBound(object sender, DataGridItemEventArgs e)
{
//给每个RadioButton1绑定setRadio事件
try
{
((RadioButton)e.Item.FindControl("rbtnstate")).Attributes.Add("onclick", "setRadio(this)");
}
catch (Exception)
{ }
}
当然,sender的用法还有很多,大家可以留言交流。
相关文章推荐
- JavaScript事件处理程序传递参数
- React 向事件处理程序传递参数(不跳,alert)
- GridView事件处理程序用法大全
- 微信小程序-参数传递与事件处理
- GridView事件处理程序用法大全
- 小程序的事件处理参数不能取得
- delphi事件参数sender的用法例程
- JavaScript权威指南_166_第17章_事件处理_17.3-调用事件处理程序-参数
- 通过给事件处理程序传递this参数,获取事件源对象的引用。单机提交按钮时在信息框中显示用户输入的字符。
- JAVASCRIPT中给事件处理程序传递参数
- 关于C#事件处理函数中的参数(object sender, EventArgs e)
- 微信小程序-传递多个参数与事件处理
- 关于C#事件处理函数中的参数(object sender, EventArgs e)
- javascript中 IE事件处理程序中try catch用法
- 一个WinForm记事本程序(包含主/下拉/弹出菜单/打开文件/保存文件/打印/页面设置/字体/颜色对话框/剪切版操作等等控件用法以及记事本菜单事件/按键事件的具体代码)
- UIALertView的基本用法与UIAlertViewDelegate对对话框的事件处理方法
- UIALertView的基本用法与UIAlertViewDelegate对对话框的事件处理方法
- 详解JavaScript中的事件流和事件处理程序
- Delphi程序流程三(1)(while)PS:顺便写了个最简单的任务管理器(包含申明API 自己申明参数为结构型API 组件LISTVIEW的用法)
- UIALertView的基本用法与UIAlertViewDelegate对对话框的事件处理方法