代码改变世界

Js获取Gridview中模板列控件ID,获取控件生成的HTML中的ID

2009-09-11 12:19  Fred-Xu  阅读(2739)  评论(0编辑  收藏  举报
在Gridview的RowDataBound事件写如下代码:
if (e.Row.RowState == DataControlRowState.Edit || (e.Row.RowState == (DataControlRowState.Edit || DataControlRowState.Alternate)))
        {
//当该列处于编辑状态时单击第四个单元格里的控件时,调用js里的show方法并将控件id传进show方法
            ((TextBox)(e.Row.Cells[4].Controls[1])).Attributes["onclick "= 

"show( '" + ((TextBox)(e.Row.Cells[4].Controls[1])).ClientID + " ');";
        }在html写js方法用来处理传过来的控件idfunction show(id)
        {
            
//alert(id);
            
//取出来的控件id中的$被转成了下划线(GridView1$ctl04$txt_number)转成 
           
//(GridView1_ctl04_txt_number)
            
//我们定义一个数组对传进的的控件id进行分割,然后再将字符合并
            
//如果您定义的控件id中没有下划线(_)可以用正则来替换{id.replace(/_/g,"&")}
            
//alert(id.replace(/_/g,"&"));             
 
//var id1=new Array();
            
//id1=id.split("_")
            
//var controlName=id1[0]+"&"+id1[1]+"&"+"txt_code";
            
//alert(controlName);    alert(id); }
Sample:
protected void gridviewProduct_RowDataBound(object sender, GridViewRowEventArgs e)        {            e.Row.Cells[0].Visible = false;                       if (e.Row.RowType == DataControlRowType.DataRow)            {                ((TextBox)(e.Row.Cells[3].FindControl("txt首月"))).Attributes["onchange"= "show                 ( '" + ((TextBox)(e.Row.Cells[3].FindControl("txt首月"))).ClientID + " ','"                   + ((TextBox)(e.Row.Cells[3].FindControl("txt次月"))).ClientID + " ','"                   + ((TextBox)(e.Row.Cells[3].FindControl("txt末月"))).ClientID + " ');";            }                    }
页面代码:
function show(id1,id2,id3)        {           alert(id1+id2+id3);        }