您的位置:首页 > 其它

事件处理程序中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的用法还有很多,大家可以留言交流。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐