用&#106avascript解决ASP.NET服务器控件造成的刷新问题

asp.net|服务器|解决|控件|刷新|问题

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

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

写段脚本的事情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的位置,减少了页面刷新带来的不便。
Powered by DvNews.net

时间: 2024-11-03 15:39:25

用&#106avascript解决ASP.NET服务器控件造成的刷新问题的相关文章

JQuery EasyUI弹出对话框解决Asp.net服务器控件无法执行后台代码的方法

jquery-easyui是一个基于jquery的图形界面插件,利用easyui可以创建很多好看的网页界面效果,easyui的相关地址是:http://jquery-easyui.wikidot.com/: easyui的中文文档地址是:http://www.easyui.net/,本人也利用easeyUI在做一些页面效果.由于我很喜欢那种弹出的对话框界面,因此在界面中应用了Dialog类来处理一些确认的信息,但在利用中发现,弹出的对话框,不能再继续执行asp.net按钮的后台响应代码.界面如下

我拖了个Asp.net服务器控件按钮,但是点击它没反应,谁能帮我解决一下??????????

问题描述 我拖了个Asp.net服务器控件按钮,但是点击它没反应,谁能帮我解决一下?????????? 解决方案 解决方案二:哪個控件?你是要他postback嗎?看看有沒有aotupostback屬性解决方案三:不会没反应的吧,页面总刷新下的吧.解决方案四:支持搂主,收藏解决方案五:楼上牛,这个也能收藏...解决方案六:如果你是vs2003的话,你看看button的click事件有没有注册,类似于这个的:btSearchButton.Click+=newImageClickEventHandl

生成 ContentRotator ASP.NET 服务器控件

asp.net|服务器|控件 摘要: 介绍创建自定义.编译的 ASP.NET 服务器控件涉及的步骤,这种控件对所有的特定内容进行随机滚动,就像内置的 AdRotator 控件随机滚动一系列预定义的标语广告一样.在介绍 ContentRotator 控件的核心内容时,本文涉及到自定义 ASP.NET 控件开发的几个方面. 简介 早在九十年代末期,似乎没有什么事情是不可能发生的.World Wide Web 及其对商业的影响急剧增加 - 孩子们退学建立 Web 站点而一夜暴富,企业也斥资数百万美元在

ASP.NET服务器控件编程之热身运动

asp.net|编程|服务器|控件 创建Asp.net里的服务器控件和Windows Form的控件一样,也有几种方式: 1. 用户控件(user control) 2. 从Control.WebControl派生的自定义控件 3. 从已有的Asp.net服务器控件扩展 用户控件以.ascx为扩展名,并保存为文本文件,用户控件不像从Control和WebControl派生下来的服务器控件那样需要预编译,当用户控件在.aspx页面中使用的时候,页面解析器从.aspx文件中动态地生成一个类,并且将其

ASP.NET服务器控件封装-【事件】-1.1【事件回发.异步回调】

最近,正在学习ASP.NET服务器控件封装相关的知识,把自己学到的和大家分 享下. 本次内容的概要如下: 1.事件以及为什么需要事件驱动机制: 2.回发的原理: 3.异步回调的原理: 4.事件回发的实现: 5.异步回调的实现. 了解了本次内容的概要,接下来就分节次说明了. 1.事件以及为什么需要事件驱动机制 在C#语言详解一书中对事件的定义是"事件是一种使对象或类能够提供通知的 成员",在这里换句话 说就是页面中已注册事件的对象能够对用户的操作进行捕获并处理.那么为什么 需要引用事件机

javascript操作ASP.NET服务器控件

  这篇文章主要介绍了javascript操作ASP.NET服务器控件 的相关资料,需要的朋友可以参考下 在ASP.NET中使用js时,js获取DOM元素时,经常获取不到,这是因为获取的方法有误,现在介绍一方法,解决如何使用js获取ASP.NET控件在浏览器端生成html标签对应的id 1.获取服务器端控件在浏览器端生成的标签的id,即服务器控件对应的客户端html标签id 通过服务器端控件的ClientID属性可以获取到相应在浏览器即客户端html标签中对应的id值,获取方法如下 代码如下:

JS或jQuery获取ASP.NET服务器控件ID的方法

  这篇文章主要介绍了JS或jQuery获取ASP.NET服务器控件ID的方法,本文介绍一方法,解决如何使用js获取ASP.NET控件在浏览器端生成html标签对应的id,需要的朋友可以参考下 在ASP.NET中使用js时,js获取DOM元素时,经常获取不到,这是因为获取的方法有误,现在介绍一方法,解决如何使用js获取ASP.NET控件在浏览器端生成html标签对应的id 1.获取服务器端控件在浏览器端生成的标签的id,即服务器控件对应的客户端html标签id 通过服务器端控件的ClientID

jQuery生成asp.net服务器控件的代码

HTML如下  代码如下: <tr> <td class="leftTd" style="width: 107px">附加金额</td> <td style="width: 315px"><asp:TextBox ID="txtExtendMoney" Text="0" runat="server"></asp:TextB

jQuery生成asp.net服务器控件的代码_jquery

HTML如下 复制代码 代码如下: <tr> <td class="leftTd" style="width: 107px">附加金额</td> <td style="width: 315px"><asp:TextBox ID="txtExtendMoney" Text="0" runat="server"></asp:T