云服务器

推荐列表 站点导航

当前位置:首页 > 服务器技术 > 云服务器 >

服务器_ASP.NET服务器控件PleaseWaitButton,Introduction 在web applicati

来源:网络整理  作者:  发布时间:2020-12-20 12:00
ASP.NET服务器控件PleaseWaitButton,Introduction 在web application的表单提交过程中显示“please wait”信息或者是gif动画图片通常...
  return sReturn;
    // we check to see if the page is valid;
    else
    , _pleaseWaitImage, _pleaseWaitText )
<script runat="server">
      sMessage = sImage;
{
    // now substitute our onclick code

private string GeneratePleaseWaitJavascript()
function GetDiv(sDiv)
  output.Write(sButtonHtml);
  
  // render the button in an encapsulating <div> tag of its own
    else d.style.visibility = "hidden";
  // create a JavaScript "PleaseWait()" function call

  PleaseWaitImage

  d = GetDiv(sDiv);
  return sContents;
}

  sb.Append("</script>");

  嵌入的文本文件javascript.txt包含了隐藏按钮的<div>和显示"please wait"信息或图像的客户端代码。这些代码在重写的OnInit()方法中调用的私有方法RegisterJavascriptFromResource()加载。这个方法调用泛型方法GetEmbeddedTextFile() ,在这个泛型方法中把文件做为源加载而把内容返回成字符串。

    div = eval("window." + sDiv);
{
  // the namespace using the first type in the assembly
  
}
<%@ Register TagPrefix="cc1" Namespace="JavaScriptControls"
<script language="JavaScript">
            visible="false">
  string sButtonHtml = sw.ToString();
      break;
      // add our code to the end of the existing onclick code;
  // for client-side validation; this code may not be registered
      sReplace = sReplace + sPleaseWaitCode;

  PleaseWaitType
  
}
  {

如果指定了一个PleaseWaitImage,就必须包含额外的一段Javascript代码来通知客户端预载该图像。这段脚本的注册应该出现在重写的OnPreRender方法中。注册的键是图像的名称;如果多个按钮都使用同一图像,预载脚本只需要实施一次。这里使用了一个正则表达式来创建Javascript图像变量,以保证特殊字字符(比如文件路径中的斜线)转化成下划线。

    if (document.layers) d.visibility = "hide";
  

  PleaseWaitButton控件在<div>标记中呈现了一个标准的asp.net Button。它也呈现了一个空的<div>标记给

    }
    // simulate something that could take a long time,
    "<img src="https://www.xp.cn/{0}" alt="{1}"/>"
    {
    RegisterJavascriptPreloadImage(_pleaseWaitImage);
  
  
    </form>
                this.ClientID));

  在web application的表单提交过程中显示“please wait”信息或者是gif动画图片通常是很有用的,特别是提交过程比较久的情况。我最近开发了一个调查提交程序,在程序里内部用户通过一个网页上传excel电子表格。程序将上传的电子表格数据插入到数据库中。这个过程只需要几秒钟,但即便是几秒钟,在网页是看来却是非常明显的等待过程。在程序测试的时候,一些用户重复地点击上传按钮。因此,提供一个视觉的信息来告诉人们上传正在进行中是很有用的。并同时把上传按钮一起隐藏掉,以防止多次点击。这里介绍的控件是Button控件的子类,它演示了如何把客户端javascript代码封装在asp.net服务器控件中来提供便利的功能。

  
  if (d)
    sReturn = rOnclick.Replace(sHtml, sReplace);
  // with the assembly and namespace, we'll get the
  StringBuilder sb = new StringBuilder();
  
      );
{ 
  {
  // for code ideas to allow the button to work with client-side validation
  wr.Close();

Client-side functions

           Text="Click me to start a time-consuming process"
}

这个IsValidatorIncludeScript() 利用上面的检查来查看是否有使用页面注册的asp.net验证控件的标准Javascript代码块。下面则用一个简单的方法测试了是否有验证代码和像Page_IsValid的变量存在。

    case PleaseWaitTypeEnum.ImageOnly:
  string sScript = GetEmbeddedTextFile("javascript.txt");
  string sMessage = "";
                this.ClientID));
  
      <cc1:PleaseWaitButton runat="server"
        string.Format("{0}.{1}", sNamespace, sTextFile)
  {
  base.Render(wr);
  StringWriter sw = new StringWriter();
  // we'll get the executing assembly, and derive
      <asp:Panel runat="server"
  base.OnInit(e);
  // is there an existing onclick attribute?
    }
}
    "PleaseWait('pleaseWaitButtonDiv_{0}',
    // validation has been rendered, make sure
  if (mOnclick.Success)
    panelSuccess.Visible = true;
  }
    while (DateTime.Now < dt)
  // return TRUE if this page has registered javascript
  
  }
  output.Write("</div>");
  var d = GetDiv(sDivMessage);
      // don't worry about the page being valid;
  string sPleaseWaitCode = GeneratePleaseWaitJavascript();
               Assembly="PleaseWaitButton" %>
  {
  Match mOnclick = rOnclick.Match(sHtml);

  这是显示的客户端文本信息,如果存在,当按钮被点击它将取代按钮。

  output.Write(string.Format("<div>",
  
private string GetEmbeddedTextFile(string sTextFile)
    <title>Testing PleaseWaitButton</title>
  // with our PleaseWait() function called appropriately
</script>
  // before rendering the button, output an empty <div>
  // generic function for retrieving the contents
  base.OnPreRender (e);
  // now modify the code to include an "onclick" handler
    // Server-side Click event handler;
  // after any client-side validation.
  <body>
  

  onclick属性的修改发生在ModifyJavaScriptOnClick()函数中。这个函数获取按钮呈现的HTML字符串,并检查看是否存在onclick属性。如果是,这个函数会检查是否有使用客户端验证代码。如果是这种情况的话,我们定义的PleaseWait()函数会加在已经存在的onclick代码的最后面,紧跟在客户端检查的boolin变量Page_IsValid后面。这个变量代表是否使用了验证控件。如果Page_IsValid的值是false,"Please wait"信息将不显示。如果为True则显示。

              + " return Page_IsValid;";
  }
  sb.Append("if (document.images) { ");
private void RegisterJavascriptFromResource()
    , this.ClientID, this.ClientID, sMessage);
}

    string sInsert = " + sPleaseWaitCode + "" ";
    case PleaseWaitTypeEnum.TextOnly:
  
  // Output the button's html (with attributes)
  // load the embedded text file "javascript.txt"
  {

<%@ Page language="C#" %>
      break;
{
        the coolest user I've ever had the pleasure of serving.
      sMessage = sText + sImage;
  return sCode;
  </body>
  s.Close();
function HideDiv(sDiv)
{

  这是显示的图像文件(比如gif动画图像),如果存在,当按钮被点击它将取代按钮。这个属性将变成<img>标记中的src属性。

  output.Write("</div>");

private string ModifyJavaScriptOnClick(string sHtml)

protected override void OnInit(EventArgs e)
  // if ASP.NET detects what it thinks (correctly or incorrectly)
  else
  // If we're using an image, register some javascript
    string sExisting = mOnclick.Groups["onclick"].Value;
  output.Write(string.Format("<div>",
  
  
      </asp:Panel>
  // of an embedded text file resource as a string
  string sImgName = "img_" + rex.Replace(sImage, "_");
  // the client-side javascript code is kept
  // for client-side image preloading

  下面是一个.aspx文件示例,它演示了一个设置了PleaseWaitText和PleaseWaitImage的PleastWaitButton。

  下面这个GeneratePleaseWaitJavascript()构建了包含在onclick属性中的PleaseWait() Javascript函数。我们可以通过检查控件的属性来决定想要的布局。

  this.Page.RegisterClientScriptBlock("PleaseWaitButtonScript", sScript);
  // in an embedded resource; load the script
{
    {

  PleaseWaitText

      break;
    : String.Empty);
  if (_pleaseWaitImage != String.Empty
How It Works

{
    // add our code to the end of it; if client-side
  Assembly a = Assembly.GetExecutingAssembly();
          'pleaseWaitButtonDiv2_{1}', '{2}');"
    int i = sHtml.Trim().Length - 2;
  Regex rOnclick = new Regex("onclick="(?<onclick>[^"]*)");
  String sContents = sr.ReadToEnd();
}
        No, really, I mean it. There have been others, sure,
  else
      sMessage = sText;
  private void PleaseWaitButton1_Click(object sender, System.EventArgs e)
}
    div = null;
}

  // that will be populated client-side via javascript
    case PleaseWaitTypeEnum.ImageThenText:

  由于PleaseWaitButton实施它自己的javascript onclick句柄,所以我们必须采取一些额外的措施来保持原有的onclick句柄,并且允许控件清晰地运行一些客户端验证代码。为了达到此目的,我们首先把Button基类还原为一个字符串缓冲,然后巧妙地处理它,把我们定义的onclick代码包含进去。

  sCode = sCode.Replace(""", "&quot;");
  </head>
    DateTime dt = DateTime.Now.AddSeconds(5);

  虽然外面已经有很多javascript的例子来完成这件事情,但当我试图把这些功能封装到asp.net控件中时我发现了一些问题。我最开始尝试通过javascript的onclick句柄来使button无效,并用另外的文本取代。但我发现很棘手,这样会妨碍到asp.net服务器端的click事件的功能。而最终行得通的,并且对不同浏览器也有很好支持的方法是,让button在div标记中呈现。div可以隐藏并且不妨碍asp.net的click事件。

  }
  String sNamespace = a.GetTypes()[0].Namespace;
    // at the end of the loop display a success message
  return this.Page.IsStartupScriptRegistered("ValidatorIncludeScript");
</html>
  // Thanks to CodeProject member KJELLSJ (Kjell-Sverre Jerijaervi)
    sReplace = "onclick="" + sReplace;
    div = document.layers[sDiv];

protected override void OnPreRender(EventArgs e)
  string sCode = string.Format(
  Regex rex = new Regex("[^a-zA-Z0-9]");
  if (d) d.innerHTML = sInnerHtml;

private bool IsValidatorIncludeScript()
  sb.Append(" } ");
本文作者:

}
  
    <form method="post" runat="server">
    {
  
  // return the final code chunk
      sMessage = sImage + sText;
  sb.AppendFormat("{0} = new Image();", sImgName);
  else if (document.layers)
{
  string sText = _pleaseWaitText;
           PleaseWaitImage="pleaseWait.gif"
  else if (document.all)
    }
           PleaseWaitText="Please Wait "
</script>
private void RegisterJavascriptPreloadImage(string sImage)
  // is a down-level browser.
  // suitable for use in an onclick event handler
    // and hide the submit form
  }
      sReplace = sReplace + sCode;
    case PleaseWaitTypeEnum.TextThenImage:
  sw.Close();
<html>
        but you are really in a class by yourself. 
  // embedded resource as a stream
  
  // to a dummy HtmlTextWriter
  if (document.getElementById)
     // do nothing; simulate a 5-second pause
  sButtonHtml = ModifyJavaScriptOnClick(sButtonHtml);
  sb.AppendFormat("{0}.src = "{1}";", sImgName, sImage);
  
}
  
  RegisterJavascriptFromResource();
  
  HtmlTextWriter wr = new HtmlTextWriter(sw);
      break;
    string sReplace = sExisting
  // read the contents of the stream into a string

  Using the control

    PleaseWaitButton1.Visible = false;
  string sImage = (_pleaseWaitImage != String.Empty
}

  HideDiv(sDivButton);
  return div;
    // add ours
           />
    // there is an existing onclick attribute;
                    sb.ToString());
  string sReturn = "";
    sReturn = sHtml.Insert(i, sInsert);      
  // with a "please wait" message"
  // establish the layout based on PleaseWaitType
  Stream s = a.GetManifestResourceStream(
  <head>
      // include code to check if the page is valid
  sr.Close();
    div = document.getElementById(sDiv);
  sb.Append("<script language='JavaScript'>");
  var div;
function PleaseWait(sDivButton, sDivMessage, sInnerHtml)
         + (sExisting.Trim().EndsWith(";") ? "" : "; ");
  StreamReader sr = new StreamReader(s);
  // and register it with the page.

  信息/图像。在点击按钮时,由Javascript函数(见下面的客户端函数)控制按钮的隐藏和信息的显示。为了方便起见,由PleaseWaitButton服务器控件处理所有必需的javascript客户端代码的实施。

  javascript.txt嵌入资源包含了按钮在Javascript的onclick句柄中执行的客户端方法PleaseWait()。这段代码也调用了一个客户端方法HideDiv()以隐藏按钮的容器<div>,然后通过设置innerHTML属性把信息或图像组装进之前空的<div>标记中。辅助函数GetDiv()则是通过检查document.getElementById, document.all, 和 document.layers用id返回一个<div>对象,保证了不同浏览器的兼容性。下面是javascript.txt的全部代码:

    // like a file upload or time-consuming server processing
    && _pleaseWaitType != PleaseWaitTypeEnum.TextOnly)

这种把button还原成一个字符串缓冲然后处理它的onclick内容的技术是一件很危险的事情(is certainly a hack). 但它可以让我们在父button类中实施标准的验证代码,然后再实现我们的PleaseWait() Javascript函数调用。如果不这样做,我们只能在验证代码之前就在onclick属性中实施我们的PleaseWait()函数调用,除非我们愿意完全重写父Button类的属性的呈现。这样就算页面上有输入错误也会产生我们并不希望的按钮隐藏和显示"please wait"信息的效果。因此,我们必须在onclick句柄中强行令我们的客户端PleaseWait()函数出现在客户端页面验证之后。

    // there isn't an existing onclick attribute;


{
PleaseWaitTypeEnum枚举值之一:TextOnly,ImageOnly,TextThenImage,或者ImageThenText。它控制消息和图片的布局。

  作为正常的button控件的派生,PleaseWaitButton的功能与它基本一样。它通过三个附加的属性来管理当按钮被点击后"please Wait"信息或图片的显示。

    if (IsValidatorIncludeScript() && this.CausesValidation)
  
  // and register its contents as client-side script
  
    ? string.Format(
  this.Page.RegisterClientScriptBlock(sImgName + "_PreloadScript",
  switch (_pleaseWaitType)
        Thank you for submitting this form. You are truly
{
{
      <P>Testing the PleaseWaitButton control.</p>
{
  

protected override void Render(HtmlTextWriter output)
      string sCode = "if (Page_IsValid) " + sPleaseWaitCode

相关热词: 服务器

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/server/yun/6088.shtml

最新文章
租用云服务器后的备案问 租用云服务器后的备案问

时间:2021-01-05

百度云服务器bcc有什么优 百度云服务器bcc有什么优

时间:2021-01-05

什么是云服务器cvm?怎么 什么是云服务器cvm?怎么

时间:2021-01-05

云服务器怎么保证信息安 云服务器怎么保证信息安

时间:2021-01-05

云服务器怎么预防被攻击 云服务器怎么预防被攻击

时间:2021-01-05

阿里云ECS实例设置用户r 阿里云ECS实例设置用户r

时间:2020-12-29

阿里云ECS服务器入门使用 阿里云ECS服务器入门使用

时间:2020-12-29

怎么配置云服务器 怎么配置云服务器

时间:2020-12-28

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

服务器_ASP.NET服务器控件PleaseWaitButton,Introduction 在web applicati

2020-12-20 编辑:

  return sReturn;
    // we check to see if the page is valid;
    else
    , _pleaseWaitImage, _pleaseWaitText )
<script runat="server">
      sMessage = sImage;
{
    // now substitute our onclick code

private string GeneratePleaseWaitJavascript()
function GetDiv(sDiv)
  output.Write(sButtonHtml);
  
  // render the button in an encapsulating <div> tag of its own
    else d.style.visibility = "hidden";
  // create a JavaScript "PleaseWait()" function call

  PleaseWaitImage

  d = GetDiv(sDiv);
  return sContents;
}

  sb.Append("</script>");

  嵌入的文本文件javascript.txt包含了隐藏按钮的<div>和显示"please wait"信息或图像的客户端代码。这些代码在重写的OnInit()方法中调用的私有方法RegisterJavascriptFromResource()加载。这个方法调用泛型方法GetEmbeddedTextFile() ,在这个泛型方法中把文件做为源加载而把内容返回成字符串。

    div = eval("window." + sDiv);
{
  // the namespace using the first type in the assembly
  
}
<%@ Register TagPrefix="cc1" Namespace="JavaScriptControls"
<script language="JavaScript">
            visible="false">
  string sButtonHtml = sw.ToString();
      break;
      // add our code to the end of the existing onclick code;
  // for client-side validation; this code may not be registered
      sReplace = sReplace + sPleaseWaitCode;

  PleaseWaitType
  
}
  {

如果指定了一个PleaseWaitImage,就必须包含额外的一段Javascript代码来通知客户端预载该图像。这段脚本的注册应该出现在重写的OnPreRender方法中。注册的键是图像的名称;如果多个按钮都使用同一图像,预载脚本只需要实施一次。这里使用了一个正则表达式来创建Javascript图像变量,以保证特殊字字符(比如文件路径中的斜线)转化成下划线。

    if (document.layers) d.visibility = "hide";
  

  PleaseWaitButton控件在<div>标记中呈现了一个标准的asp.net Button。它也呈现了一个空的<div>标记给

    }
    // simulate something that could take a long time,
    "<img src="https://www.xp.cn/{0}" alt="{1}"/>"
    {
    RegisterJavascriptPreloadImage(_pleaseWaitImage);
  
  
    </form>
                this.ClientID));

  在web application的表单提交过程中显示“please wait”信息或者是gif动画图片通常是很有用的,特别是提交过程比较久的情况。我最近开发了一个调查提交程序,在程序里内部用户通过一个网页上传excel电子表格。程序将上传的电子表格数据插入到数据库中。这个过程只需要几秒钟,但即便是几秒钟,在网页是看来却是非常明显的等待过程。在程序测试的时候,一些用户重复地点击上传按钮。因此,提供一个视觉的信息来告诉人们上传正在进行中是很有用的。并同时把上传按钮一起隐藏掉,以防止多次点击。这里介绍的控件是Button控件的子类,它演示了如何把客户端javascript代码封装在asp.net服务器控件中来提供便利的功能。

  
  if (d)
    sReturn = rOnclick.Replace(sHtml, sReplace);
  // with the assembly and namespace, we'll get the
  StringBuilder sb = new StringBuilder();
  
      );
{ 
  {
  // for code ideas to allow the button to work with client-side validation
  wr.Close();

Client-side functions

           Text="Click me to start a time-consuming process"
}

这个IsValidatorIncludeScript() 利用上面的检查来查看是否有使用页面注册的asp.net验证控件的标准Javascript代码块。下面则用一个简单的方法测试了是否有验证代码和像Page_IsValid的变量存在。

    case PleaseWaitTypeEnum.ImageOnly:
  string sScript = GetEmbeddedTextFile("javascript.txt");
  string sMessage = "";
                this.ClientID));
  
      <cc1:PleaseWaitButton runat="server"
        string.Format("{0}.{1}", sNamespace, sTextFile)
  {
  base.Render(wr);
  StringWriter sw = new StringWriter();
  // we'll get the executing assembly, and derive
      <asp:Panel runat="server"
  base.OnInit(e);
  // is there an existing onclick attribute?
    }
}
    "PleaseWait('pleaseWaitButtonDiv_{0}',
    // validation has been rendered, make sure
  if (mOnclick.Success)
    panelSuccess.Visible = true;
  }
    while (DateTime.Now < dt)
  // return TRUE if this page has registered javascript
  
  }
  output.Write("</div>");
  var d = GetDiv(sDivMessage);
      // don't worry about the page being valid;
  string sPleaseWaitCode = GeneratePleaseWaitJavascript();
               Assembly="PleaseWaitButton" %>
  {
  Match mOnclick = rOnclick.Match(sHtml);

  这是显示的客户端文本信息,如果存在,当按钮被点击它将取代按钮。

  output.Write(string.Format("<div>",
  
private string GetEmbeddedTextFile(string sTextFile)
    <title>Testing PleaseWaitButton</title>
  // with our PleaseWait() function called appropriately
</script>
  // before rendering the button, output an empty <div>
  // generic function for retrieving the contents
  base.OnPreRender (e);
  // now modify the code to include an "onclick" handler
    // Server-side Click event handler;
  // after any client-side validation.
  <body>
  

  onclick属性的修改发生在ModifyJavaScriptOnClick()函数中。这个函数获取按钮呈现的HTML字符串,并检查看是否存在onclick属性。如果是,这个函数会检查是否有使用客户端验证代码。如果是这种情况的话,我们定义的PleaseWait()函数会加在已经存在的onclick代码的最后面,紧跟在客户端检查的boolin变量Page_IsValid后面。这个变量代表是否使用了验证控件。如果Page_IsValid的值是false,"Please wait"信息将不显示。如果为True则显示。

              + " return Page_IsValid;";
  }
  sb.Append("if (document.images) { ");
private void RegisterJavascriptFromResource()
    , this.ClientID, this.ClientID, sMessage);
}

    string sInsert = " + sPleaseWaitCode + "" ";
    case PleaseWaitTypeEnum.TextOnly:
  
  // Output the button's html (with attributes)
  // load the embedded text file "javascript.txt"
  {

<%@ Page language="C#" %>
      break;
{
        the coolest user I've ever had the pleasure of serving.
      sMessage = sText + sImage;
  return sCode;
  </body>
  s.Close();
function HideDiv(sDiv)
{

  这是显示的图像文件(比如gif动画图像),如果存在,当按钮被点击它将取代按钮。这个属性将变成<img>标记中的src属性。

  output.Write("</div>");

private string ModifyJavaScriptOnClick(string sHtml)

protected override void OnInit(EventArgs e)
  // if ASP.NET detects what it thinks (correctly or incorrectly)
  else
  // If we're using an image, register some javascript
    string sExisting = mOnclick.Groups["onclick"].Value;
  output.Write(string.Format("<div>",
  
  
      </asp:Panel>
  // of an embedded text file resource as a string
  string sImgName = "img_" + rex.Replace(sImage, "_");
  // the client-side javascript code is kept
  // for client-side image preloading

  下面是一个.aspx文件示例,它演示了一个设置了PleaseWaitText和PleaseWaitImage的PleastWaitButton。

  下面这个GeneratePleaseWaitJavascript()构建了包含在onclick属性中的PleaseWait() Javascript函数。我们可以通过检查控件的属性来决定想要的布局。

  this.Page.RegisterClientScriptBlock("PleaseWaitButtonScript", sScript);
  // in an embedded resource; load the script
{
    {

  PleaseWaitText

      break;
    : String.Empty);
  if (_pleaseWaitImage != String.Empty
How It Works

{
    // add our code to the end of it; if client-side
  Assembly a = Assembly.GetExecutingAssembly();
          'pleaseWaitButtonDiv2_{1}', '{2}');"
    int i = sHtml.Trim().Length - 2;
  Regex rOnclick = new Regex("onclick="(?<onclick>[^"]*)");
  String sContents = sr.ReadToEnd();
}
        No, really, I mean it. There have been others, sure,
  else
      sMessage = sText;
  private void PleaseWaitButton1_Click(object sender, System.EventArgs e)
}
    div = null;
}

  // that will be populated client-side via javascript
    case PleaseWaitTypeEnum.ImageThenText:

  由于PleaseWaitButton实施它自己的javascript onclick句柄,所以我们必须采取一些额外的措施来保持原有的onclick句柄,并且允许控件清晰地运行一些客户端验证代码。为了达到此目的,我们首先把Button基类还原为一个字符串缓冲,然后巧妙地处理它,把我们定义的onclick代码包含进去。

  sCode = sCode.Replace(""", "&quot;");
  </head>
    DateTime dt = DateTime.Now.AddSeconds(5);

  虽然外面已经有很多javascript的例子来完成这件事情,但当我试图把这些功能封装到asp.net控件中时我发现了一些问题。我最开始尝试通过javascript的onclick句柄来使button无效,并用另外的文本取代。但我发现很棘手,这样会妨碍到asp.net服务器端的click事件的功能。而最终行得通的,并且对不同浏览器也有很好支持的方法是,让button在div标记中呈现。div可以隐藏并且不妨碍asp.net的click事件。

  }
  String sNamespace = a.GetTypes()[0].Namespace;
    // at the end of the loop display a success message
  return this.Page.IsStartupScriptRegistered("ValidatorIncludeScript");
</html>
  // Thanks to CodeProject member KJELLSJ (Kjell-Sverre Jerijaervi)
    sReplace = "onclick="" + sReplace;
    div = document.layers[sDiv];

protected override void OnPreRender(EventArgs e)
  string sCode = string.Format(
  Regex rex = new Regex("[^a-zA-Z0-9]");
  if (d) d.innerHTML = sInnerHtml;

private bool IsValidatorIncludeScript()
  sb.Append(" } ");
本文作者:

}
  
    <form method="post" runat="server">
    {
  
  // return the final code chunk
      sMessage = sImage + sText;
  sb.AppendFormat("{0} = new Image();", sImgName);
  else if (document.layers)
{
  string sText = _pleaseWaitText;
           PleaseWaitImage="pleaseWait.gif"
  else if (document.all)
    }
           PleaseWaitText="Please Wait "
</script>
private void RegisterJavascriptPreloadImage(string sImage)
  // is a down-level browser.
  // suitable for use in an onclick event handler
    // and hide the submit form
  }
      sReplace = sReplace + sCode;
    case PleaseWaitTypeEnum.TextThenImage:
  sw.Close();
<html>
        but you are really in a class by yourself. 
  // embedded resource as a stream
  
  // to a dummy HtmlTextWriter
  if (document.getElementById)
     // do nothing; simulate a 5-second pause
  sButtonHtml = ModifyJavaScriptOnClick(sButtonHtml);
  sb.AppendFormat("{0}.src = "{1}";", sImgName, sImage);
  
}
  
  RegisterJavascriptFromResource();
  
  HtmlTextWriter wr = new HtmlTextWriter(sw);
      break;
    string sReplace = sExisting
  // read the contents of the stream into a string

  Using the control

    PleaseWaitButton1.Visible = false;
  string sImage = (_pleaseWaitImage != String.Empty
}

  HideDiv(sDivButton);
  return div;
    // add ours
           />
    // there is an existing onclick attribute;
                    sb.ToString());
  string sReturn = "";
    sReturn = sHtml.Insert(i, sInsert);      
  // with a "please wait" message"
  // establish the layout based on PleaseWaitType
  Stream s = a.GetManifestResourceStream(
  <head>
      // include code to check if the page is valid
  sr.Close();
    div = document.getElementById(sDiv);
  sb.Append("<script language='JavaScript'>");
  var div;
function PleaseWait(sDivButton, sDivMessage, sInnerHtml)
         + (sExisting.Trim().EndsWith(";") ? "" : "; ");
  StreamReader sr = new StreamReader(s);
  // and register it with the page.

  信息/图像。在点击按钮时,由Javascript函数(见下面的客户端函数)控制按钮的隐藏和信息的显示。为了方便起见,由PleaseWaitButton服务器控件处理所有必需的javascript客户端代码的实施。

  javascript.txt嵌入资源包含了按钮在Javascript的onclick句柄中执行的客户端方法PleaseWait()。这段代码也调用了一个客户端方法HideDiv()以隐藏按钮的容器<div>,然后通过设置innerHTML属性把信息或图像组装进之前空的<div>标记中。辅助函数GetDiv()则是通过检查document.getElementById, document.all, 和 document.layers用id返回一个<div>对象,保证了不同浏览器的兼容性。下面是javascript.txt的全部代码:

    // like a file upload or time-consuming server processing
    && _pleaseWaitType != PleaseWaitTypeEnum.TextOnly)

这种把button还原成一个字符串缓冲然后处理它的onclick内容的技术是一件很危险的事情(is certainly a hack). 但它可以让我们在父button类中实施标准的验证代码,然后再实现我们的PleaseWait() Javascript函数调用。如果不这样做,我们只能在验证代码之前就在onclick属性中实施我们的PleaseWait()函数调用,除非我们愿意完全重写父Button类的属性的呈现。这样就算页面上有输入错误也会产生我们并不希望的按钮隐藏和显示"please wait"信息的效果。因此,我们必须在onclick句柄中强行令我们的客户端PleaseWait()函数出现在客户端页面验证之后。

    // there isn't an existing onclick attribute;


{
PleaseWaitTypeEnum枚举值之一:TextOnly,ImageOnly,TextThenImage,或者ImageThenText。它控制消息和图片的布局。

  作为正常的button控件的派生,PleaseWaitButton的功能与它基本一样。它通过三个附加的属性来管理当按钮被点击后"please Wait"信息或图片的显示。

    if (IsValidatorIncludeScript() && this.CausesValidation)
  
  // and register its contents as client-side script
  
    ? string.Format(
  this.Page.RegisterClientScriptBlock(sImgName + "_PreloadScript",
  switch (_pleaseWaitType)
        Thank you for submitting this form. You are truly
{
{
      <P>Testing the PleaseWaitButton control.</p>
{
  

protected override void Render(HtmlTextWriter output)
      string sCode = "if (Page_IsValid) " + sPleaseWaitCode

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/server/yun/6088.shtml

相关文章

风云图片

推荐阅读

返回云服务器频道首页