熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

用腳本解決ASP.NET頁面刷新問題

2013-11-13 10:03:09  來源: .NET編程 

  用ASPNET開發的人對服務器端控件事件引起的頁面刷新很頭痛吧!


  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 = em(objName);\\n;
   script += if (obj != null)\\n;
   script += {\\n;
   script += \\tobjscrollIntoView();\\n;
   script += \\tobjfocus();\\n;
   script += }\\n;
   script += }\\n;


  //創建客戶端函數ToDo
   script += function ToDo();
   script += {\\n;
   script += stringFormat(setTimeout(\\ViewObj({})\\);\\n controlName);
   script += }\\n;


  script += windowonload = ToDo;\\n;
   script += </script>\\n;


  return script;
  }


  }


  使用示例


  為了方便輸入腳本我在頁面上放了個LabellblScript並把lblScript的EnableViewState屬性和Visible屬性設成False
  然後在lblScrpt的Click事件的操作代碼後添加輸入腳本的代碼如下所示


  private void btnSave_Click(object sender SystemEventArgs e)
{
 projectUpdateProjectInfo(ds);
 lblScriptText = ScriptHelperGetViewControlScript(btnSave);
}


  在點擊btnSave按鈕後頁面會自動滾動到btnSave的位置減少了頁面刷新帶來的不便


From:http://tw.wingwit.com/Article/program/net/201311/12397.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.