由于datagrid绑定的数据源比较多,根据需求又不能分页.这样每次点击Datagrid中的修改、更新键后,页面总会回到顶端,操作起来非常不便。
    有没有方法可以将焦点定位在Datagrdi的某一行上?请各位高手指点。

解决方案 »

  1.   

    page里好象有个smartNavigation属性吧
      

  2.   

    我以前是这样做的:
    在DataGrid里设置一列模板例带一列宽度为0的TextBox
    当需要指定到哪一行时,就输出脚本,让那一行的此列得到焦点.
      

  3.   

    我做的不是很完善,但是基本上实现了焦点保留问题.daishengs朋友能否把代码发一下,谢谢.
      

  4.   

    贴出一段我自己用的代码: 可将回传前页面的位置恢复/// <summary>
    /// 恢复回传前页面位置
    /// </summary>
    public static void RetainScrollPosition()
    {
    Page _page =(Page)HttpContext.Current.Handler;
    StringBuilder ScrollPosition = new StringBuilder();
    _page.RegisterHiddenField("__SCROLLPOS", "0");
    ScrollPosition.Append("<SCRIPT LANGUAGE=\"JavaScript\">\n<!--\n");
    ScrollPosition.Append("  function saveScrollPosition() {\n");
    ScrollPosition.Append("    document.forms[0].__SCROLLPOS.value = document.body.scrollTop;");
    ScrollPosition.Append("\n  }\n  document.body.onscroll=saveScrollPosition;\n");
    if ( _page.IsPostBack )
    {
    ScrollPosition.Append("  function setScrollPosition() {\n");
    ScrollPosition.AppendFormat("    document.body.scrollTop = {0};", _page.Request["__SCROLLPOS"]);
    ScrollPosition.Append("\n  }\n  document.body.onload=setScrollPosition;\n");
    }
    ScrollPosition.Append("//-->\n</SCRIPT>");
    _page.RegisterStartupScript("jsRetainScrollPosition", ScrollPosition.ToString());
    }调用:在 Page_Load 事件中加入以下代码:
    RetainScrollPosition();也可将这段代码放在其他类中。
      

  5.   

    不用那么麻烦.加个smartNavigation 就可以了吧? 
      

  6.   

    非常感谢ncjmc,他的方法非常好!已经圆满解决.简单的加smartNavigation是不行的.