Jquery 实现ascx文件的延迟加载

最终效果:

加载前效果:

 

加载后效果:

 

 

具体实现:

1:WebUserControl.ascx文件

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>
<div id='aaa'>
 <h3>Basic Modal Dialog</h3>
 <p>For this demo, SimpleModal is using this 'hidden' data for its content. You can also populate the modal dialog with standard HTML or with DOM element(s).</p>
 <p>Examples:</p>
 <p><code>$('#basicModalContent').modal(); // jQuery object; this demo</code></p>
 <p><code>$.modal(document.getElementById('basicModalContent')); // DOM</code></p>
 <p><code>$.modal('&lt;p&gt;&lt;b&gt;HTML&lt;/b&gt; elements&lt;/p&gt;'); // HTML</code></p>

 <p><a href='http://www.ericmmartin.com/projects/simplemodal/'>More details...</a></p>
</div>

可以在后台添加耗时的代码,这样效果明显

如:

 

  for (int i = 0; i < 1000000; i++)
        {
            for (int j = 0; j < 10000; j++)
            {

            }
        }

 

2:编写WebService

 [WebMethod]    
    public string aaa() 
    { 
         Page page = new Page();
         UserControl ctl = (UserControl)page.LoadControl("~/WebUserControl.ascx");
         page.Controls.Add(ctl);
         StringWriter writer = new StringWriter();
         HttpContext.Current.Server.Execute(page, writer, false);
         return writer.ToString();
     } 

3.利用ajax请求:

完整代码如下:

 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register Src="~/WebUserControl.ascx" TagPrefix="cc1"  TagName="WebUserControl" %>
<%@ Register Src="~/WebUserControl2.ascx" TagPrefix="cc2"  TagName="WebUserControl" %>
<%@ Register Src="~/WebUserControl3.ascx" TagPrefix="cc3"  TagName="WebUserControl" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>Dynamic Drive DHTML Scripts- Smooth Navigational Menu</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="description" content="A folding DHTML menu tree with persistance feature, created via cookies." />
<meta name="keywords" content="DHTML, folding menu tree script, DHTML tutorial, free, JavaScript,persistance" />
<link rel="stylesheet" type="text/css" href="../ddincludes/mainstyle.css" />

<link rel="stylesheet" type="text/css" href="ddsmoothmenu.css" />
<link rel="stylesheet" type="text/css" href="ddsmoothmenu-v.css" />

    <link href="css/basic.css" rel="stylesheet" type="text/css" media="screen"  />
    <link href="css/basic_ie.css" rel="stylesheet" type="text/css" media="screen" />
    <script src="jquery-1.4.min.js" type="text/javascript"></script>

   
<script type="text/javascript" src="ddsmoothmenu.js">

/***********************************************
* Smooth Navigational Menu- (c) Dynamic Drive DHTML code library (http://www.dynamicdrive.com/)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
***********************************************/

</script>

<script type="text/javascript">

ddsmoothmenu.init({
 mainmenuid: "smoothmenu1", //menu DIV id
 orientation: 'h', //Horizontal or vertical menu: Set to "h" or "v"
 classname: 'ddsmoothmenu', //class added to menu's outer DIV
 //customtheme: ["#1c5a80", "#18374a"],
 contentsource: "markup" //"markup" or ["container_id", "path_to_menu_file"]
})

ddsmoothmenu.init({
 mainmenuid: "smoothmenu2", //Menu DIV id
 orientation: 'v', //Horizontal or vertical menu: Set to "h" or "v"
 classname: 'ddsmoothmenu-v', //class added to menu's outer DIV
 //customtheme: ["#804000", "#482400"],
 contentsource: "markup" //"markup" or ["container_id", "path_to_menu_file"]
})

ddsmoothmenu.init({
 mainmenuid: "smoothmenu-ajax",
 orientation: 'h',
 classname: 'ddsmoothmenu',
 customtheme: ["#1c5a80", "#18374a"], //override default menu CSS background values? Uncomment: ["normal_background", "hover_background"]
 contentsource: ["smoothcontainer", "smoothmenu.htm"] //"markup" or ["container_id", "path_to_menu_file"]
})
//function a(e)
//{
////e.preventDefault();
//  $('#basic-modal-content').modal();
//}
//$(document).ready(function () {
//    debugger;
// $('#basic-modal input.basic, #basic-modal a.basic, #smoothmenu1 a.bisic').click(function (e) {
//  e.preventDefault();
//  $('#basic-modal-content').modal();
// });
//});


var role="管理员";
//var role="访客";

$(document).ready(function () {


//角色菜单配置
if(role=="管理员")
{
//debugger;
   // $("a:contains('Folder 2')").parent().remove(); 
}

/*
if(role=="访客")
{

}
*/


//事件注册
 $('#basic-modal input.basic, #basic-modal a.basic,#smoothmenu1 a.bisic1').click(function (e) {
 
  $("#Loading").ajaxStart(
                       function()
                        {
                         
                          $("#Loading").modal();
                       
                         }
                  );
 
 $.ajax({
type: "POST",
 url: "WebService.asmx/aaa",
   complete: function(msg) {
      // Hide the loading progress .
      $("#Loading").remove();
    // Insert the returned HTML into the <div>.
      $('.simplemodal-wrap').html(msg.responseXML.text);
      $('#aaa').css("display","block");
         } 
          });
 });
 
  $('#basic-modal input.basic, #basic-modal a.basic,#smoothmenu1 a.bisic2').click(function (e) {
  e.preventDefault();
  //debugger;
  //$('.simplemodal-wrap').load('WebUserControl.ascx');
  //$("#simplemodal-container.simplemodal-wrap").prepend('<div id="aaa"><h3>Basic Modal Dialog</h3></div>');
  //debugger;
  //$('#basic-modal-content').modal();
  $('#bbb').modal();
 });
});
</script>
</head>

<body>


<form id="form1" runat ="server" >

 


<div id="smoothmenu1" class="ddsmoothmenu">
<ul>
<li><a href="http://www.dynamicdrive.com/"  class="bisic">Item 1</a></li>
<li><a href="#">Folder 0</a>
  <ul>
  <li><a href="#" id="bisic" >Sub Item 1.1</a></li>
  <li><a href="#" class="bisic1">Sub Item 1.2</a></li>
  <li><a href="#" class="bisic2">Sub Item 1.3</a></li>
  <li><a href="#" class="bisic">Sub Item 1.4</a></li>
  <li><a href="#" class="bisic">Sub Item 1.2</a></li>
  <li><a href="#" class="bisic">Sub Item 1.3</a></li>
  <li><a href="#" class="bisic">Sub Item 1.4</a></li>
  </ul>
</li>
<li><a href="#">Folder 1</a>
  <ul>
  <li><a href="#" class="bisic">Sub Item 1.1</a></li>
  <li><a href="#">Sub Item 1.2</a></li>
  <li><a href="#">Sub Item 1.3</a></li>
  <li><a href="#">Sub Item 1.4</a></li>
  <li><a href="#">Sub Item 1.2</a></li>
  <li><a href="#">Sub Item 1.3</a></li>
  <li><a href="#">Sub Item 1.4</a></li>
  </ul>
</li>
<li><a href="#">Item 3</a></li>
<li><a href="#">Folder 2</a>
  <ul>
  <li><a href="#" class="bisic">Sub Item 2.1</a></li>
  <li><a href="#">Folder 2.1</a>
    <ul>
    <li><a href="#" class="bisic">Sub Item 2.1.1</a></li>
    <li><a href="#" class="bisic">Sub Item 2.1.2</a></li>
    <li><a href="#">Folder 3.1.1</a>
  <ul>
      <li><a href="#" class="bisic">Sub Item 3.1.1.1</a></li>
      <li><a href="#" class="bisic">Sub Item 3.1.1.2</a></li>
      <li><a href="#" class="bisic">Sub Item 3.1.1.3</a></li>
      <li><a href="#" class="bisic">Sub Item 3.1.1.4</a></li>
      <li><a href="#" class="bisic">Sub Item 3.1.1.5</a></li>
  </ul>
    </li>
    <li><a href="#" class="bisic">Sub Item 2.1.4</a></li>
    </ul>
  </li>
  </ul>
</li>
<li><a href="http://www.dynamicdrive.com/style/%22%3EItem 4</a></li>
</ul>

</div>
      
       <div id="Loading"><img src="ajax-loader13.gif" /></div>

<%--<cc1:WebUserControl runat="server" />
<cc2:WebUserControl runat="server" />
<cc3:WebUserControl  runat="server" />--%>
<%--<div id="basic-modal-content">
 <h3>Basic Modal Dialog</h3>
 <p>For this demo, SimpleModal is using this "hidden" data for its content. You can also populate the modal dialog with standard HTML or with DOM element(s).</p>
 <p>Examples:</p>
 <p><code>$('#basicModalContent').modal(); // jQuery object; this demo</code></p>
 <p><code>$.modal(document.getElementById('basicModalContent')); // DOM</code></p>
 <p><code>$.modal('&lt;p&gt;&lt;b&gt;HTML&lt;/b&gt; elements&lt;/p&gt;'); // HTML</code></p>

 <p><a href='http://www.ericmmartin.com/projects/simplemodal/'>More details...</a></p>
</div>--%>


   <%-- <script src="js/basic.js" type="text/javascript" ></script>--%>
    <script src="js/jquery.simplemodal.js" type="text/javascript" ></script>
    </form>
</body>

</html>

 

 

 

附件:/Files/wenchersoft/demo/Demo.rar

posted @ 2010-05-20 22:19  rob_2010  阅读(336)  评论(0)    收藏  举报