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

(原内容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换成自己的DataGridID,这个方法传递进去的参数就是行号,也就是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()

 

posted on 2006-05-09 08:55  封起De日子  阅读(124)  评论(0编辑  收藏  举报

导航