请那位高手 用vb.net 解释以下此文章(用JavaScript脚本解决ASP.NET页面刷新问题)Not(原作)

外星人oo 2003-08-19 04:30:09
用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的位置,减少了页面刷新带来的不便。

...全文
83 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Meyer 2003-09-04
  • 打赏
  • 举报
回复
浏览器部分本就是javascript的天下
有Ecma的标准,
外星人oo 2003-08-20
  • 打赏
  • 举报
回复
多谢Meyer() 测试后立即结帐
暗石绿 2003-08-20
  • 打赏
  • 举报
回复
永远 ?应该是吧。
通过向web 窗体中插入javascript ???
程序先在服务器端运行,生成某些你需要的 JavaScript。然后再在客户端运行此 JavaScript
外星人oo 2003-08-20
  • 打赏
  • 举报
回复
是否asp.net 永远不支持客户端的事件,虽然通过向web 窗体中插入javascritp可以解决一些问题,但不够方便
外星人oo 2003-08-20
  • 打赏
  • 举报
回复
好,如果楼上朋友提供例子,供大家学习就更好了
mynull 2003-08-20
  • 打赏
  • 举报
回复
脚本只解决了刷新后自动滚动的功能,并不能解决刷新问题。我用过一种方法供参考:在页面中添加隐藏的iframe,激发事件时用脚本使iframe的src指向某aspx,该aspx处理后,在iframe中产生脚本,由脚本更改主页面的对应内容,这样视觉上就不存在刷屏的现象。
不过这需要支持script,并且你对DHTML编程要比较了解。
外星人oo 2003-08-20
  • 打赏
  • 举报
回复
我又整理了一下客户端代码,请看看是否正确
并请热心者帮忙注释以下,我对次懂的很少

<script language=""javascript"">
function ViewObj(objName)
{
var obj = document.all.item(objName);
if (obj != null)
{
obj.scrollIntoView();
obj.focus();
}
}


function ToDo()
{
String.Format("setTimeout("ViewObj('{0}')",1000), controlName);
}

window.onload = ToDo

</script>
Meyer 2003-08-19
  • 打赏
  • 举报
回复
搞得我狂晕!
Meyer 2003-08-19
  • 打赏
  • 举报
回复
Public Class ScriptHelper

Public Shared Function GetViewControlScript(ByVal controlName As String) As String
Dim script As String
script = vbCrLf
script += "<script language=""javascript"">" & vbCrLf
script += "function ViewObj(objName)" & vbCrLf
script += "{" & vbCrLf
script += "var obj = document.all.item(objName);" & vbCrLf
script += "if (obj != null)" & vbCrLf
script += "{" & vbCrLf
script += "obj.scrollIntoView();" & vbCrLf
script += "obj.focus();" & vbCrLf
script += "}" & vbCrLf
script += "}" & vbCrLf


script += "function ToDo()"
script += "{" & vbCrLf
script += [String].Format("setTimeout " & "(" & """ViewObj" & "(" & "'{0}')"",1000);" & vbCrLf, controlName)

script += "}" & vbCrLf

script += "window.onload = ToDo;" & vbCrLf
script += "</script>"
Return script

End Function

End Class
Meyer 2003-08-19
  • 打赏
  • 举报
回复
这段代码纯粹是构建一段脚本
外星人oo 2003-08-19
  • 打赏
  • 举报
回复
那个大侠肯帮帮忙
这是第六版的介绍《ASP.NET 4入门经典:涵盖C#和VB.NET(第6版)》内容简介:ASP.NET是.NET Framework的一部分,用于构建内容丰富的动态Web站点。其最新的版本ASP.NET 4对上一版进行了许多改进,包括增强了Web窗体,并添加了jQuery的支持。《ASP.NET 4入门经典:涵盖C#和VB.NET(第6版)》循序渐进,逐步讲解了如何使用ASP.NET 4构建内容丰富的Web站点,并提供了大量使用C#和VB的示例。通过实际动手练习,您将学到关于构建Web站点的第一手信息,同时能够深刻理解在浏览器中查看ASP.NET 4页面时,后台到底发生了什么。 这是第七版,也就是本源码书的介绍 The ultimate programming guide to ASP.NET 4.5, by popular author and Microsoft MVP Imar Spaanjaars Updated for ASP.NET 4.5, this introductory book is filled with helpful examples and contains a user-friendly, step-by-step format. Written by popular author and Microsoft ASP.NET MVP Imar Spaanjaars, this book walks you through ASP.NET, Microsoft's technology for building dynamically generated web pages. This edition retains the highly accessible approach to building the Planet Wrox website example, an online community site featuring product reviews, picture sharing, bonus content for registered users, and more. Contains the comprehensive guide to the latest technology additions to ASP.NET 4.5 Shows how to build basic ASP.NET web pages and configure their server Includes information on how to add features with pre-built server controls Reveals how to design pages and make them consistent Contains the information needed for getting user input and displaying data Beginning ASP.NET 4.5 in C# and VB uses Spaanjaars's distinct writing style to put you at ease with learning ASP.NET 4.5.

62,039

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧