您的位置:首页 > 其它

DataGrid 在PostBack 后记录定位的简单方法...

2006-05-09 08:55 429 查看
(原内容C#源于网络LoveCherry技术无极限)

比如我们在DataGrid外面加了来使DataGrid在一定区域内呈现,这样如果把滚动条拉到底部的时候点击修改(或者修改后点击更新,取消)页面重新加载的时候都会把滚动条拉到页面最上面部分

<div style="BORDER:0px;PADDING:0px;MARGIN:0px;OVERFLOW:scroll;WIDTH:600px;HEIGHT:200px" align="center">

现在给出一种简单的办法(其他的一些利用锚点等办法都比较复杂)

(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#)

private void Scroll(int index)
{
string s="<script>function window.onload(){document.all('"+this.DataGrid1.ClientID+"').rows["+index+"].scrollIntoView();}</script>";
Page.RegisterStartupScript("",s);
}

写了一个方法,其中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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: