改进的CheckBox模板列实现单选的方法

函数代码(Javascript):
function  SetCheckBoxState(id)
{
    
var dom=document.getElementsByTagName("INPUT");   //文档中的所有Input元素
    var el=event.srcElement;//触发事件的本元素
    if(el.tagName=="INPUT"&&el.type.toLowerCase()=="checkbox")//如果本元素是checkbox
    {
        
for(i=0;i<dom.length;i++)
        
{
            
if(dom[i].type.toLowerCase()=="checkbox"&&dom[i].id.indexOf(id)>-1)
            
{
                
//将同一列的所有其它checkbox的checked设为false

                
if (el.id!=dom[i].id)
                
{
                    dom[i].checked
=false;
                }

            }

        }

    }

}

本函数根据网友所写修改而来。改进之处有:
1.引入参数id即模板列里checkbox的id,增加了对此id的判断以区分页面中有多个CheckBox列的情形。
2.缩小了遍历的范围,提高了执行效率。
3.解决不能取消选择的问题。

使用时,只要在gridview绑定数据后给checkbox加上事件就可以,如:
for  ( int  i  =   0 ; i  <  GridView1.Rows.Count; i ++ )
{
    CheckBox cb 
= (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
    cb.Attributes.Add(
"OnClick""SetCheckBoxState('CheckBox1')");
}

你可能感兴趣的:(MS,Asp.Net控件学习/资料)