就是DataGrid重新加载后将焦点移到刚修改的地方??
31 个解决方案
#1
顶,我也遇到这样的问题
只是移到刚修改过的那条记录可以用.EditItemIndex =index
不过要把修改过的textbox作为焦点就不知道怎么用了
只是移到刚修改过的那条记录可以用.EditItemIndex =index
不过要把修改过的textbox作为焦点就不知道怎么用了
#2
哥们..这个我用过.但我写出来的代码一定是垃级,因太费资源...
#3
如果不修改主键字段,则不会出现这种情况呀
我之前有用过这个,思路是这样的:(需自己定义两个方法)
1、在保存记录时,先记录当前修改行的key[](因为有可多是多字段)
object[] primaryKey,keyValue;
//设置主键主段及其值
2、保存OK,且重新绑定数据后,要执行一个自定义方法:
//方法一
public void SetupDataGridCurrentRowIndexOrPageIndex(DataGrid myDataGrid,object[] primaryKeyField,object[] primaryKeyValue)
{
A:根据key值,返回其在DataView中的当前记录号;//方法二
B:然后根据此记录号及DataGrid的PageSize,计算出此key值在DataGrid中出现的面号及行号
说明:以上方法,不管是否有排序,在增加/修改后,都可以定位到key所在的页及行;
}
具体方法自己想一下,这些都是我自己想出来的,没有人帮我,也没有人帮我,实在不行,发信息给我,告诉你具体的代码
我之前有用过这个,思路是这样的:(需自己定义两个方法)
1、在保存记录时,先记录当前修改行的key[](因为有可多是多字段)
object[] primaryKey,keyValue;
//设置主键主段及其值
2、保存OK,且重新绑定数据后,要执行一个自定义方法:
//方法一
public void SetupDataGridCurrentRowIndexOrPageIndex(DataGrid myDataGrid,object[] primaryKeyField,object[] primaryKeyValue)
{
A:根据key值,返回其在DataView中的当前记录号;//方法二
B:然后根据此记录号及DataGrid的PageSize,计算出此key值在DataGrid中出现的面号及行号
说明:以上方法,不管是否有排序,在增加/修改后,都可以定位到key所在的页及行;
}
具体方法自己想一下,这些都是我自己想出来的,没有人帮我,也没有人帮我,实在不行,发信息给我,告诉你具体的代码
#4
void Page_Load(Object sender, EventArgs e)
{
this.SmartNavigation = true;
}
{
this.SmartNavigation = true;
}
#5
还是不很明白,有详细一点的吗??
#6
把思路及框架都給你了,還不夠詳細嗎?
#7
不错,学习
#8
mark
#9
mark
#10
做个记号,以后用得着。
#11
设置 smartNavigation=true 是个“整体”的解决方案(解决了很多问题,包括页面回发过程焦点保持问题)。
如果专门设置焦点到一个自己指定的对象(通用方法),基本上可以这样写:
private void SetFocus(Control Ctr){
string s=@"<script language=javascript>
{0}.focus();
</script>";
Ctr.Page.RegisterStartupScript("setPageFocus",
string.Format(s,Ctr.ClientID));
}
在程序中,如果你处理DataGrid的编辑行事件之后,如果定义焦点,大概应该可以这样:
SetFocus(e.item);
如果专门设置焦点到一个自己指定的对象(通用方法),基本上可以这样写:
private void SetFocus(Control Ctr){
string s=@"<script language=javascript>
{0}.focus();
</script>";
Ctr.Page.RegisterStartupScript("setPageFocus",
string.Format(s,Ctr.ClientID));
}
在程序中,如果你处理DataGrid的编辑行事件之后,如果定义焦点,大概应该可以这样:
SetFocus(e.item);
#12
我没有测试。可许,s写成一下这个形式兼容(浏览器)性更好一点:
string s=@"<script language=javascript>
window.document.all['{0}'].focus();
</script>";
string s=@"<script language=javascript>
window.document.all['{0}'].focus();
</script>";
#13
问题还是没解决啊
我是这么写的
先定义
<style>
DIV#div-datagrid { OVERFLOW: auto; WIDTH: 102%; SCROLLBAR-BASE-COLOR: #ffeaff; HEIGHT: 520px }
TD.locked { BORDER-RIGHT: silver 1px solid; ; LEFT: expression(document.getElementById("div-datagrid").scrollLeft-0.1); CURSOR: default; POSITION: relative }
TH { BORDER-RIGHT: silver 1px solid; FONT-WEIGHT: bold; FONT-SIZE: 14px; Z-INDEX: 10; CURSOR: default; COLOR: white; POSITION: relative; ; TOP: expression(document.getElementById("div-datagrid").scrollTop-2); BACKGROUND-COLOR: navy; TEXT-ALIGN: center }
TH.locked { Z-INDEX: 99 }
.GridRow { BACKGROUND-COLOR: #ffffff }
.GridAltRow { BACKGROUND-COLOR: #eeeeee }
</style>
然后 再固定DataGrid前面几列,并且还要分页,每页20条记录
但是在用了大家的方法后,发现都不可以实现我要的效果,不知道是我的方法不对还是怎么了
有谁可以帮我解决一下吗??
我是这么写的
先定义
<style>
DIV#div-datagrid { OVERFLOW: auto; WIDTH: 102%; SCROLLBAR-BASE-COLOR: #ffeaff; HEIGHT: 520px }
TD.locked { BORDER-RIGHT: silver 1px solid; ; LEFT: expression(document.getElementById("div-datagrid").scrollLeft-0.1); CURSOR: default; POSITION: relative }
TH { BORDER-RIGHT: silver 1px solid; FONT-WEIGHT: bold; FONT-SIZE: 14px; Z-INDEX: 10; CURSOR: default; COLOR: white; POSITION: relative; ; TOP: expression(document.getElementById("div-datagrid").scrollTop-2); BACKGROUND-COLOR: navy; TEXT-ALIGN: center }
TH.locked { Z-INDEX: 99 }
.GridRow { BACKGROUND-COLOR: #ffffff }
.GridAltRow { BACKGROUND-COLOR: #eeeeee }
</style>
然后 再固定DataGrid前面几列,并且还要分页,每页20条记录
但是在用了大家的方法后,发现都不可以实现我要的效果,不知道是我的方法不对还是怎么了
有谁可以帮我解决一下吗??
#14
要不使用模版列吧,以下是一个例子,或许对你有帮助。
Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
dim mytext1,mytext2 as textbox
If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
mytext1= CType(e.Item.Cells(10).FindControl("textbox16"), TextBox)
mytext2= CType(e.Item.Cells(11).FindControl("textbox17"), TextBox)
mytext.Attributes.Add("onblur", "document.getElementById('" & mytext2.ClientID & "').value=this.value;document.getElementById('" & mytext2.ClientID & "').focus();") '当mytext1失去焦点时,对mytext2赋值,并使mytext2得到焦点.
end if
end sub
Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
dim mytext1,mytext2 as textbox
If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
mytext1= CType(e.Item.Cells(10).FindControl("textbox16"), TextBox)
mytext2= CType(e.Item.Cells(11).FindControl("textbox17"), TextBox)
mytext.Attributes.Add("onblur", "document.getElementById('" & mytext2.ClientID & "').value=this.value;document.getElementById('" & mytext2.ClientID & "').focus();") '当mytext1失去焦点时,对mytext2赋值,并使mytext2得到焦点.
end if
end sub
#15
学习....
#16
learning
#17
自己顶
#18
救命啊
#19
没办法
自己顶啊
自己顶啊
#20
不要
沉啊
沉啊
#21
再顶
#22
if(!Page.IsPostBack)
{
//初始化邦定
}
每次修改完毕再重新邦定,焦点没有变啊。
{
//初始化邦定
}
每次修改完毕再重新邦定,焦点没有变啊。
#23
不行啊
难道很难吗??
难道很难吗??
#24
郁闷啊
#25
用Aspnet2.0吧,已经解决了设定焦点的问题了
#26
但是我现在很急啊
有谁可以解决一下吗??
有谁可以解决一下吗??
#27
http://lovecherry.cnblogs.com/archive/2005/05/17/157550.html
#28
还是不可以啊
有谁知道吗??
有谁知道吗??
#29
等
#30
好的
我漫漫的等,不知道要等到什么时候
我漫漫的等,不知道要等到什么时候
#31
终于可以了
谢谢大家
谢谢大家
#1
顶,我也遇到这样的问题
只是移到刚修改过的那条记录可以用.EditItemIndex =index
不过要把修改过的textbox作为焦点就不知道怎么用了
只是移到刚修改过的那条记录可以用.EditItemIndex =index
不过要把修改过的textbox作为焦点就不知道怎么用了
#2
哥们..这个我用过.但我写出来的代码一定是垃级,因太费资源...
#3
如果不修改主键字段,则不会出现这种情况呀
我之前有用过这个,思路是这样的:(需自己定义两个方法)
1、在保存记录时,先记录当前修改行的key[](因为有可多是多字段)
object[] primaryKey,keyValue;
//设置主键主段及其值
2、保存OK,且重新绑定数据后,要执行一个自定义方法:
//方法一
public void SetupDataGridCurrentRowIndexOrPageIndex(DataGrid myDataGrid,object[] primaryKeyField,object[] primaryKeyValue)
{
A:根据key值,返回其在DataView中的当前记录号;//方法二
B:然后根据此记录号及DataGrid的PageSize,计算出此key值在DataGrid中出现的面号及行号
说明:以上方法,不管是否有排序,在增加/修改后,都可以定位到key所在的页及行;
}
具体方法自己想一下,这些都是我自己想出来的,没有人帮我,也没有人帮我,实在不行,发信息给我,告诉你具体的代码
我之前有用过这个,思路是这样的:(需自己定义两个方法)
1、在保存记录时,先记录当前修改行的key[](因为有可多是多字段)
object[] primaryKey,keyValue;
//设置主键主段及其值
2、保存OK,且重新绑定数据后,要执行一个自定义方法:
//方法一
public void SetupDataGridCurrentRowIndexOrPageIndex(DataGrid myDataGrid,object[] primaryKeyField,object[] primaryKeyValue)
{
A:根据key值,返回其在DataView中的当前记录号;//方法二
B:然后根据此记录号及DataGrid的PageSize,计算出此key值在DataGrid中出现的面号及行号
说明:以上方法,不管是否有排序,在增加/修改后,都可以定位到key所在的页及行;
}
具体方法自己想一下,这些都是我自己想出来的,没有人帮我,也没有人帮我,实在不行,发信息给我,告诉你具体的代码
#4
void Page_Load(Object sender, EventArgs e)
{
this.SmartNavigation = true;
}
{
this.SmartNavigation = true;
}
#5
还是不很明白,有详细一点的吗??
#6
把思路及框架都給你了,還不夠詳細嗎?
#7
不错,学习
#8
mark
#9
mark
#10
做个记号,以后用得着。
#11
设置 smartNavigation=true 是个“整体”的解决方案(解决了很多问题,包括页面回发过程焦点保持问题)。
如果专门设置焦点到一个自己指定的对象(通用方法),基本上可以这样写:
private void SetFocus(Control Ctr){
string s=@"<script language=javascript>
{0}.focus();
</script>";
Ctr.Page.RegisterStartupScript("setPageFocus",
string.Format(s,Ctr.ClientID));
}
在程序中,如果你处理DataGrid的编辑行事件之后,如果定义焦点,大概应该可以这样:
SetFocus(e.item);
如果专门设置焦点到一个自己指定的对象(通用方法),基本上可以这样写:
private void SetFocus(Control Ctr){
string s=@"<script language=javascript>
{0}.focus();
</script>";
Ctr.Page.RegisterStartupScript("setPageFocus",
string.Format(s,Ctr.ClientID));
}
在程序中,如果你处理DataGrid的编辑行事件之后,如果定义焦点,大概应该可以这样:
SetFocus(e.item);
#12
我没有测试。可许,s写成一下这个形式兼容(浏览器)性更好一点:
string s=@"<script language=javascript>
window.document.all['{0}'].focus();
</script>";
string s=@"<script language=javascript>
window.document.all['{0}'].focus();
</script>";
#13
问题还是没解决啊
我是这么写的
先定义
<style>
DIV#div-datagrid { OVERFLOW: auto; WIDTH: 102%; SCROLLBAR-BASE-COLOR: #ffeaff; HEIGHT: 520px }
TD.locked { BORDER-RIGHT: silver 1px solid; ; LEFT: expression(document.getElementById("div-datagrid").scrollLeft-0.1); CURSOR: default; POSITION: relative }
TH { BORDER-RIGHT: silver 1px solid; FONT-WEIGHT: bold; FONT-SIZE: 14px; Z-INDEX: 10; CURSOR: default; COLOR: white; POSITION: relative; ; TOP: expression(document.getElementById("div-datagrid").scrollTop-2); BACKGROUND-COLOR: navy; TEXT-ALIGN: center }
TH.locked { Z-INDEX: 99 }
.GridRow { BACKGROUND-COLOR: #ffffff }
.GridAltRow { BACKGROUND-COLOR: #eeeeee }
</style>
然后 再固定DataGrid前面几列,并且还要分页,每页20条记录
但是在用了大家的方法后,发现都不可以实现我要的效果,不知道是我的方法不对还是怎么了
有谁可以帮我解决一下吗??
我是这么写的
先定义
<style>
DIV#div-datagrid { OVERFLOW: auto; WIDTH: 102%; SCROLLBAR-BASE-COLOR: #ffeaff; HEIGHT: 520px }
TD.locked { BORDER-RIGHT: silver 1px solid; ; LEFT: expression(document.getElementById("div-datagrid").scrollLeft-0.1); CURSOR: default; POSITION: relative }
TH { BORDER-RIGHT: silver 1px solid; FONT-WEIGHT: bold; FONT-SIZE: 14px; Z-INDEX: 10; CURSOR: default; COLOR: white; POSITION: relative; ; TOP: expression(document.getElementById("div-datagrid").scrollTop-2); BACKGROUND-COLOR: navy; TEXT-ALIGN: center }
TH.locked { Z-INDEX: 99 }
.GridRow { BACKGROUND-COLOR: #ffffff }
.GridAltRow { BACKGROUND-COLOR: #eeeeee }
</style>
然后 再固定DataGrid前面几列,并且还要分页,每页20条记录
但是在用了大家的方法后,发现都不可以实现我要的效果,不知道是我的方法不对还是怎么了
有谁可以帮我解决一下吗??
#14
要不使用模版列吧,以下是一个例子,或许对你有帮助。
Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
dim mytext1,mytext2 as textbox
If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
mytext1= CType(e.Item.Cells(10).FindControl("textbox16"), TextBox)
mytext2= CType(e.Item.Cells(11).FindControl("textbox17"), TextBox)
mytext.Attributes.Add("onblur", "document.getElementById('" & mytext2.ClientID & "').value=this.value;document.getElementById('" & mytext2.ClientID & "').focus();") '当mytext1失去焦点时,对mytext2赋值,并使mytext2得到焦点.
end if
end sub
Private Sub DataGrid1_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGrid1.ItemDataBound
dim mytext1,mytext2 as textbox
If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then
mytext1= CType(e.Item.Cells(10).FindControl("textbox16"), TextBox)
mytext2= CType(e.Item.Cells(11).FindControl("textbox17"), TextBox)
mytext.Attributes.Add("onblur", "document.getElementById('" & mytext2.ClientID & "').value=this.value;document.getElementById('" & mytext2.ClientID & "').focus();") '当mytext1失去焦点时,对mytext2赋值,并使mytext2得到焦点.
end if
end sub
#15
学习....
#16
learning
#17
自己顶
#18
救命啊
#19
没办法
自己顶啊
自己顶啊
#20
不要
沉啊
沉啊
#21
再顶
#22
if(!Page.IsPostBack)
{
//初始化邦定
}
每次修改完毕再重新邦定,焦点没有变啊。
{
//初始化邦定
}
每次修改完毕再重新邦定,焦点没有变啊。
#23
不行啊
难道很难吗??
难道很难吗??
#24
郁闷啊
#25
用Aspnet2.0吧,已经解决了设定焦点的问题了
#26
但是我现在很急啊
有谁可以解决一下吗??
有谁可以解决一下吗??
#27
http://lovecherry.cnblogs.com/archive/2005/05/17/157550.html
#28
还是不可以啊
有谁知道吗??
有谁知道吗??
#29
等
#30
好的
我漫漫的等,不知道要等到什么时候
我漫漫的等,不知道要等到什么时候
#31
终于可以了
谢谢大家
谢谢大家