DataGrid 在PostBack 后记录定位的简单方法...
(原内容C#源于网络LoveCherry技术无极限)
比如我们在DataGrid外面加了来使DataGrid在一定区域内呈现,这样如果把滚动条拉到底部的时候点击修改(或者修改后点击更新,取消)页面重新加载的时候都会把滚动条拉到页面最上面部分
现在给出一种简单的办法(其他的一些利用锚点等办法都比较复杂)
(VB.NET)
Private Sub scroll(ByVal index As Integer)
Dim s As String
s = "<script>function window.onload(){document.all('" & Me.DataGrid1.ClientID & "').rows(" & index & ").scrollIntoView();}</script>"
Page.RegisterStartupScript("", s)
End Sub
(C#)
写了一个方法,其中DataGrid1换成自己的DataGrid的ID,这个方法传递进去的参数就是行号,也就是e.Item.ItemIndex。
比如在编辑操作的时候会写this.DataGrid1.EditItemIndex=e.Item.ItemIndex;
在此语句的以前加入Scroll(e.Item.ItemIndex);就可以了
同样在更新操作的时候写为Scroll(e.Item.ItemIndex);this.DataGrid1.EditItemIndex=-1;绑定;
注: 在VB.Net 引用值 最好用 '" & Me.DataGrid1.ClientID & "' 而在 C#中就用 "'+this.DataGrid1.ClientID+"' ,另一个,VB.Net 中 rows(" & index & ") 而 C#中 rows[" + index + "] 要不系统用有可能出现下面的错误提示:
================>>
[FormatException: 输入字符串的格式不正确。]
Microsoft.VisualBasic.CompilerServices.DoubleType.Parse(String Value, NumberFormatInfo NumberFormat)
Microsoft.VisualBasic.CompilerServices.DoubleType.FromString(String Value, NumberFormatInfo NumberFormat)
[InvalidCastException: 从字符串“<script>function window.onload()”到类型“Double”的强制转换无效。]
Microsoft.VisualBasic.CompilerServices.DoubleType.FromString(String Value, NumberFormatInfo NumberFormat)
Microsoft.VisualBasic.CompilerServices.DoubleType.FromString(String Value)
WebApp.DataGrid_Scroll.scroll(Int32 index) in D:/Web_Dev/WebApp/DataGrid_Scroll.aspx.vb:51
WebApp.DataGrid_Scroll.DataGrid1_EditCommand1(Object source, DataGridCommandEventArgs e) in D:/Web_Dev/WebApp/DataGrid_Scroll.aspx.vb:72
System.Web.UI.WebControls.DataGrid.OnEditCommand(DataGridCommandEventArgs e)
System.Web.UI.WebControls.DataGrid.OnBubbleEvent(Object source, EventArgs e)
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)
System.Web.UI.WebControls.DataGridItem.OnBubbleEvent(Object source, EventArgs e)
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args)
System.Web.UI.WebControls.Button.OnCommand(CommandEventArgs e)
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
System.Web.UI.Page.ProcessRequestMain()