我想实现如下功能:
DataGrid中有一个编辑的模板列
现在我已经实现了点中一行,然后此行就触发编辑事件.
想让某一行失去焦点的时候,就触发更新事件.
可以经过我的测试,好像在点中行的时候,行上面根本就没有焦点.所以就谈不上失去焦点的事件了.
我想问各位有没有办法使点中一行得到焦点,然后当某一行失去焦点的时候触发当前行的更新事件.
程序主要代码如下:
private void DataGrid2_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
e.Item.Attributes.Add("onclick","setItemBackColor(this,"+(e.Item.ItemIndex+2)+")");
}
}
-----------------------------------------------------------------
<script language="javascript">
var Curr_TR=document.all.tags("tr");
function setItemBackColor(obj,index)
{
for(var i=1;i<Curr_TR.length;i++)
{
if (Curr_TR[i].style.backgroundColor =="yellow")
{
Curr_TR[i].style.backgroundColor="white";
}
}
obj.style.backgroundColor="yellow";
__doPostBack(DataGrid2$_ctl+index+$_ctl0,);
}
</script>
onCommand=""这样即可触发事件啊
试试:
Onclick的时候记录改行,并根据记录根新上一次记录的行。
就是在Onclick的时候触发该行的编辑事件,那么为何不在编辑事件里面更新上次点击的记录?
这个不现实啊。你既然是点了编辑按钮,出现编辑框,那么,想要让它更新,要的就是离开输入框之后,自动实现更新的功能吧。
你可以这样,把失去焦点的对象放在你点击编辑按钮之后出现输入框上。
你可在你的编辑行里面,放入一个按钮,此按钮的commandname=Update,然后在点击编辑时,让此按钮隐藏,style="display:none",这样,点击编辑出现编辑框时,此按钮不可见。然后,在每个输入框里面都添加脚本事件onblur="document.all("此按钮客户端ID").click();",如此,当你的焦点在任意一个输入框失去之时,即触发了隐藏的按钮的点击,此按钮的点击,触发了控件的update事件,即会更新。