首 页 | 新 闻 | 技术中心 | 第二书店 | 《程序员》 | 《开发高手》 | 社 区 | 黄 页 | 人 才
移 动专 题SUNIBM微 软微 创精 华Donews人 邮
我的技术中心 
我的分类 我的文档
全部文章 发表文章
专栏管理 使用说明



 RSS 订阅 
最新文档列表
Windows/.NET
.NET  (rss)    
Visual C++  (rss)    
Delphi  (rss)    
Visual Basic  (rss)    
ASP  (rss)    
JavaScript  (rss)    
Java/Linux
Java  (rss)    
Perl  (rss)    
综合
其他开发语言  (rss)    
文件格式  (rss)    
企业开发
游戏开发  (rss)    
网站制作技术  (rss)    
数据库
数据库开发  (rss)    
软件工程
其他  (rss)    

积极原创作者 
TechnoFantasy (52)
feifei1018 (19)
coofucoo (108)
qingrun (67)
btbtd (83)
longrujun (64)
cyz1980 (101)
ssll2826 (10)
EmilMatthew (73)
goodboy1881 (15)
CSDN - 文档中心 - .NET 阅读:4542   评论: 2    参与评论
标题   用脚本解决ASP.NET页面刷新问题     选择自 Not 的 Blog
关键字   ASP.NET JavaScript 页面刷新
出处  

用ASP.NET开发的人对服务器端控件事件引起的页面刷新很头痛吧!

Not在此把Not在做一个项目时的解决方法拿出来与大家共享。
Not的思路是事件执行完后写段脚本,让页面自动滚动到刷新页面之前的控件处,减少页面刷新带来的不便。
比如按了一个按钮后,脚本会自动将页面自动滚动到这个按钮的位置。

写段脚本的事情Not用了一个ScriptHelper的类来搞定,这个类有个GetViewControlScript(string controlName)的方法,它返回是一段客户端的脚本,传入的参数就是这个控件的ID。

ScriptHelper类代码:

 /// <summary>
 /// 提供一些产生页面脚本的方法
 /// </summary>
 public class ScriptHelper
 {

  /// <summary>
  /// 获取客户端查看控件的脚本
  /// </summary>
  /// <param name="controlName"></param>
  /// <returns>脚本代码</returns>
  public static string GetViewControlScript(string controlName)
  {

   //创建客户端函数ViewObj
   string script = "\n";
   script += "<script language=\"javascript\">\n";
   script += "function ViewObj(objName)\n";
   script += "{\n";
   script += "var obj = document.all.item(objName);\n";
   script += "if (obj != null)\n";
   script += "{\n";
   script += "\tobj.scrollIntoView();\n";
   script += "\tobj.focus();\n";
   script += "}\n";
   script += "}\n";

   //创建客户端函数ToDo
   script += "function ToDo()";
   script += "{\n";
   script += string.Format("setTimeout(\"ViewObj('{0}')\",1000);\n", controlName);
   script += "}\n";

   script += "window.onload = ToDo;\n";
   script += "</script>\n";

   return script;
  }

 }

使用示例:

为了方便输入脚本,我在页面上放了个Label:lblScript,并把lblScript的EnableViewState属性和Visible属性设成False。
然后在lblScrpt的Click事件的操作代码后添加输入脚本的代码,如下所示:

private void btnSave_Click(object sender, System.EventArgs e)
{
 project.UpdateProjectInfo(ds);
 lblScript.Text = ScriptHelper.GetViewControlScript("btnSave");
}

在点击btnSave按钮后,页面会自动滚动到btnSave的位置,减少了页面刷新带来的不便。


相关文章
对该文的评论
pc7 ( 2005-04-04)
微软已经提供方法:
在aspx页面的<%@ Page 行,加入 smartNavigation="True",即可。
Not ( 2003-04-18)
GetViewControlScript方法返回的脚本对DataGrid的编辑事件引起的刷新同样有效。