用JavaScript解决ASP.NET服务器控件造成的刷新问题

转载 2004年09月19日 18:19:00

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

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

写段脚本的事情,用了一个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的位置,减少了页面刷新带来的不便。

来源:程序员之家

ASP.NET中防止刷新页面造成表单重复提交

方法一、 应为提交是上一次正常提交的表单所以 Request.Form.Get("hiddenTestN")是上一次的数据 永远不可能跟最近取得的数据相同  在Web开发中,必须面对的问题就是表单的...
  • High_Mount
  • High_Mount
  • 2016年04月05日 16:55
  • 4283

ASP.NET刷新页面的六种方法

第一:  private void Button1_Click( object sender, System.EventArgs e )    {       Response.Redirect...
  • txx9010
  • txx9010
  • 2013年08月08日 10:11
  • 1929

ASP.NET—015:ASP.NET中无刷新页面实现

前面也说过在asp.net中前后前交互的问题。使用了ajax.js的方法:$.post和$.ajax。http://blog.csdn.net/yysyangyangyangshan/article/...
  • yysyangyangyangshan
  • yysyangyangyangshan
  • 2014年09月30日 00:18
  • 7140

如何解决JavascriptVoid(0)问题

如何解决JavascriptVoid(0)问题 许多互联网用户面临这样的问题,当他们尝试点击一个链接,看到它没有按允许的链接工作在浏览器的状态栏中显示此错误代码。它实际上是当你面对一个问题,从网页加载...
  • tnmiwn
  • tnmiwn
  • 2014年09月12日 18:15
  • 1663

ASP.NET中局部刷新的实现

由于项目中需要用到局部刷新功能,所以在网上搜索学习了下,顺便就整理下写个博客。ASP.NET中的局部刷新 复制去Google翻译翻译结果...
  • u010568463
  • u010568463
  • 2015年04月07日 16:59
  • 3992

MyEclipse 项目出现版本问题

最近在做DRP 项目的时候无独有偶,在项目的进行过程中,一直存在 Cannot find the class file for java.lang.CharSequence. Fix the buil...
  • u010293698
  • u010293698
  • 2015年11月28日 23:23
  • 835

asp.net子页面刷新父页面以及页面自动刷新的方法

1) 10表示间隔10秒刷新一次 2) window.location.reload(true); 如果是你要刷新某一个iframe就把window给换成frame的名字或ID号 3...
  • yangmingxing980
  • yangmingxing980
  • 2014年04月01日 09:33
  • 1674

asp.net mvc基于jQuery+Ajax实现无刷新分页

自己写了个采用asp.net mvc框架的Demo,分页功能采用的是jQuery+Ajax实现的无刷新分页。 解决方案思想:页面数据的初始加载和按页加载都是通过ajax来进行,页面分页链接点击后利用...
  • wangzl1163
  • wangzl1163
  • 2016年06月22日 15:05
  • 5168

asp.net 检测页面是否刷新

public partial class TestRefresh : ProAspNet20.CS.Components.Page { protected void AddContactButto...
  • u012576247
  • u012576247
  • 2014年09月04日 14:25
  • 1048

asp.net单步无刷新上传并回显图片

找了N多的办法,总算是解决了这个问题: 首先添加两个js库 可以自己去网上下载 然后就是前台代码部分 这里把fileupload控件隐藏, 然后通过普通按钮的点击事件来触发file...
  • qq_28018731
  • qq_28018731
  • 2015年12月01日 11:10
  • 563
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用JavaScript解决ASP.NET服务器控件造成的刷新问题
举报原因:
原因补充:

(最多只允许输入30个字)