gridview中的javascript问题.
请教个问题.
我有个gridview,里面有四个模板列.当点击每一行的 "编辑 "按钮的时候,这一行的三个模板列由label变成textbox.我将第三个textbox做了个onfocus,当这第三个textbox获得焦点的时候,将前两个textbox的数值相乘.请问这个怎么做啊.
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
TextBox t1 = (TextBox)GridView1.Rows[e.NewEditIndex].FindControl( "heji ");
t1.Attributes.Add( "onfocus ", "javascript:var obj = window.event.srcElement;obj.value = " + Convert.ToInt32(((TextBox)GridView1.Rows[e.NewEditIndex].FindControl( "shuliang ")).Text)* Convert.ToDecimal(((TextBox)GridView1.Rows[e.NewEditIndex].FindControl( "price ")).Text)* + "; ");
}
我这样做,它好像会在变成textbox的时候就直接算出 "合计 "的数,然后在这个文本框得到焦点的时候直接付上,而不是我在点了合计文本框时,再将这两个相乘.请问这个应该怎么写.
如果不用这种方法还有其它方法可以完成这个功能吗?
------解决方案--------------------给文本框设置焦点事件
使用javascript中的this.parentNode.parentNode.cells[index].childNode[index]获取其它列的文本框对象,不就可以了!
------解决方案--------------------在rowdatabound事件里面写类似你那样的代码
建议你将这个js方法放在前台页面!
然后后台事件把控件的clientid传给js方法就可以使用document.getElementById(id)来定位控件并进行数学运算
------解决方案--------------------protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
}
}
在RowDataBound里加事件。