ASP.NET學習筆記 2

來源:互聯網
上載者:User
十、      關於JavaScript
-1、 使用熱鍵

       <body onkeydown="if(event.keyCode==13)query_data()">

0、  調用JS彈出對話方塊

       Page.Response.Write("<script language=javascript>alert('密碼錯誤!');window.history.back(-1);</script>");

       Page.Response.End();

1、  調用JS程式要把"()"加上,例如:checkinput()

2、  在HTML中調用JS的代碼片如下:

              <script language="javascript">

                     function closeWnd()

                     {

                            window.close();

                     }

              </script>

              <input type="button" value='關閉' onclick='closeWnd()'>

3、  關於Document對象的使用:如果你的表單(名稱是Form1)中有一個控制項(名稱是Keyword)那麼,引用方法為:                        Document.form1.Keyword.value

4、  相關樣本見test_js.sln項目

5、  使用狀態條:

              <a href="tpage.htm" onMouseOver="window.status='Just another stupid link...'; return true">

              input type="button" name="look" value="?" onclick="statbar('這是狀態條喔

               (statusbar) !');">

              <input type="button" name="erase" value="d)" onclick="statbar('');"> 

6、使用日期的例子:

       <script language="LiveScript">

       <!-- Hiding

         today = new Date()

         document.write("?( ??/ ",today.getHours(),":",today.getMinutes())

         document.write("<br>?) ?- : ", today.getMonth()+1,"/",today.getDate(),"/",today.getYear());

       // end hiding contents -->

       </script> 

7、產生隨機數

       <script language="LiveScript">

       function RandomNumber() {

         today = new Date();

         num = Math.abs(Math.sin(today.getTime()));

         return num; 

       }

       </script>

8、開啟一個新視窗:

<SCRIPT LANGUAGE="javascript">

  <!--

         window.open ('page.html', 'newwindow', 'height=100, width=400, top=0, left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=n o, status=no') //這句要寫成一行

  -->

</SCRIPT> 

  參數解釋:
<SCRIPT LANGUAGE="javascript"> js指令碼開始;

  window.open 彈出新視窗的命令;

  'page.html' 快顯視窗的檔案名稱;

  'newwindow' 快顯視窗的名字(不是檔案名稱),非必須,可用空''代替;

  height=100 視窗高度;

  width=400 視窗寬度;

  top=0 視窗距離螢幕上方的象素值;

  left=0 視窗距離螢幕左側的象素值;

  toolbar=no 是否顯示工具列,yes為顯示;

  menubar,scrollbars 表示功能表列和滾動欄。

  resizable=no 是否允許改變視窗大小,yes為允許;

  location=no 是否顯示地址欄,yes為允許;

  status=no 是否顯示狀態列內的資訊(通常是檔案已經開啟),yes為允許;

</SCRIPT> js指令碼結束 

9、自動關閉視窗

       <script language="JavaScript">

                function closeit()

                {

                       setTimeout("self.close()",10000) //毫秒

                }

         </script>

10、開啟視窗之Cookies

       回想一下,上面的快顯視窗雖然酷,但是有一點小毛病(沉浸在喜悅之中,一定 沒有發現吧?)比如你將上面的指令碼放在一個需要頻繁經過的頁面裡(例如首頁),那麼每次重新整理這個頁面,視窗都會彈出一次,是不是非常煩人?:-(

  有解決的辦法嗎?Yes!  Follow me.我們使用cookie來控制一下就可以了。

  首先,將如下代碼加入首頁面HTML的<HEAD>區:  

  <script>

  function openwin(){

  window.open("page.html","","width=200,height=200")

  }

  function get_cookie(Name)

    {

  var search = Name + "="

  var returnvalue = "";

  if (document.cookie.length > 0)

       {

                offset = document.cookie.indexOf(search)

                if (offset != -1)

              {

                       offset += search.length

                       end = document.cookie.indexOf(";", offset);

                       if (end == -1)

                       end = document.cookie.length;

                       returnvalue=unescape(document.cookie.substring(offset, end))

                }

         }

  return returnvalue;

  }  

  function loadpopup()

    {

         if (get_cookie('popped')=='')

       {

                openwin()

                document.cookie="popped=yes"

         }

  }

  </script> 

  然後,用<body onload="loadpopup()">(注意不是openwin而是loadpop啊!)替換首頁面中原有的<BODY>這一句即可。你可以試著重新整理一下這個頁面或重新進 入該頁面,視窗再也不會彈出了。真正的Pop-Only-Once!  

  寫到這裡快顯視窗的製作和應用技巧基本上算是完成了! 

11、前進後退和定位

<html>

<body>

<FORM NAME="buttonbar">

     <INPUT TYPE="button" VALUE="Back" onClick="history.back()">

     <INPUT TYPE="button" VALUE="JS- Home" onClick="location='script.html'">

     <INPUT TYPE="button" VALUE="Next" onCLick="history.forward()">

</FORM>

</body>

</html>

12、Cookies全部搞定

<script language="JavaScript">

<!--

var bVisitedToday = false;

var lastVisit = GetCookie("lastVisit");

if (lastVisit != null)

{

  lastVisit = 1 * lastVisit;

  var lastHere = new Date(lastVisit); 

  var rightNow = new Date();

  if(lastHere.getYear() == rightNow.getYear()

     && lastHere.getMonth() == rightNow.getMonth()

     && lastHere.getDate() == rightNow.getDate())

  {

     bVisitedToday = true;

  }

}

if(bVisitedToday == false)

{

  setLastlastVisitCookie();

  window.location="http://www.thehungersite.com/"

}

else

{

  //window.location="about:blank"

}

function getCookieVal (offset)

{

  var endstr = document.cookie.indexOf (";", offset);

  if (endstr == -1)

    endstr = document.cookie.length;

  return unescape(document.cookie.substring(offset, endstr));

}

function GetCookie (name)

{

  var arg = name + "=";

  var alen = arg.length;

  var clen = document.cookie.length;

  var i = 0;

  while (i < clen) {

    var j = i + alen;

    if (document.cookie.substring(i, j) == arg)

      return getCookieVal (j);

    i = document.cookie.indexOf(" ", i) + 1;

    if (i == 0) break;

  }

  return null;

}

function SetCookie (name, value)

{

  var argv = SetCookie.arguments;

  var argc = SetCookie.arguments.length;

  var expires = (argc > 2) ? argv[2] : null;

  var path = (argc > 3) ? argv[3] : null;

  var domain = (argc > 4) ? argv[4] : null;

  var secure = (argc > 5) ? argv[5] : false;

  document.cookie = name + "=" + escape (value) +

    ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +

    ((path == null) ? "" : ("; path=" + path)) +

    ((domain == null) ? "" : ("; domain=" + domain)) +

    ((secure == true) ? "; secure" : "");

}

function setLastlastVisitCookie ()

{

  var rightNow = new Date();

  var expdate = new Date();

  expdate.setTime (expdate.getTime() + 1 * (24 * 60 * 60 * 1000)); //+1 day

  SetCookie ("lastVisit", rightNow.getTime(), expdate, "/");

}

function ResetCookie()

{

  SetCookie("lastVisit", 0, null, "/");

}

// -->

</script>

十一、         Asp.net 中 頁面無重新整理的做法
asp中為了實現無重新整理,常常會將資料提交到隱藏架構中,在asp.net中

有一個很簡單的設定就可以實現

       void Page_Load(Object sender, EventArgs e)

       {

          this.SmartNavigation = true;

       }

或者直接寫在

<%@ Page language="c#" Codebehind="AllBook.aspx.cs"  SmartNavigation = true  AutoEventWireup="false" Inherits="wx.AllBook" %>

十二、         關於Asp的效能最佳化
前一段時間,因為工作需要,對一舊系統進行了效能最佳化。

環境描述如下:

1.該系統為以資訊為主要內容。採用asp實現表現層,資料庫採用MS SqlServer 2000 .

2.asp代碼混亂,並伴有許多錯誤,由於錯誤被屏蔽了,所以,系統才勉強可以使用。

3.所有的資料訪問直接通過在asp程式中編寫混合代碼實現,並在同一檔案中重複訪問同一張表。

針對以上情況,經過分析,確定一下原則,

1。將資料庫的處理和訪問邏輯全部寫到預存程序中。

2。asp只做顯示輸出的部分。

3。將原有的bug修正。

4。建立索引,並更改資料訪問的sql,注意要點有

1)Where 的條件需要將索引欄位的條件置前。

2)不允許出現count(*) ,以count(field1)取代。

3)不允許出現 select * 以select field1,field2 ...等代替

4)盡量不用IN ,採用exits替代

5) 對於單條的Insert Update和delete ,不採用事務,採用事務鎖定表,影響並發的效率,某些特殊情況還需要進行

強制不鎖表

with(nolock)

十三、         關於傳值(隱藏代碼方式)
1、在第一個頁的HTML中,確認Inherits屬性添加到@Page指令:

<%@ Page language="c#" Inherits="test_js.page1" %>

2、在第一個頁中建立一個Public的屬性

              public string getName

              {

                     get

                     {

                            return txtNumber.Text ;

                     }

              }

3、添加傳送指令如下:

       Server.Transfer ("edit.aspx");

4、第二個頁面HTML設定如下:

       <%@ Reference Page="page1.aspx" %>

5、聲明第一個的變數

       public page1 fp1;

6、引用方法

       if (!this.IsPostBack )

       {

              fp1=(page1)Context.Handler ;

              txtRc.Text =fp1.getName;

       }

       //this.IsPostBack方法用於測試頁面是否是回傳

7、完成!

十四、         Application的事件
<script language="C#" runat="server">

    void Application_OnBeginRequest(Object sender, EventArgs E)

    {      

    }
    void Application_OnEndRequest(Object sender, EventArgs E)

    {
    }

</script>

十五、         Session的事件
void Session_OnStart()

{    

       Session["username"]="";//初始化參數

void Session_OnEnd()

{

}

十六、         在本視窗開啟頁面
       onclick ="window.open('?addnew=true','_self','')"

十七、         關於DropDownList的資料繫結
                     drp_Tech.DataSource =ds.Tables["職員表"].DefaultView ;

                     drp_Tech.DataTextField ="技術員";

                     drp_Tech.DataBind (); 

十八、         Table的使用
       1、可以用width=100%來使Table填充表單的寬度

       2、可以用<td colspan="3" align="center">&nbsp;</td>來合并列,合并行用rowspan,Span的意思是跨度 

十九、         DropDownList設定Item被選的方法
       DropDownList2.Items.FindByText ("2").Selected =true;  

二十、         在HTML中去掉多的邊框(整體)
       leftmargin="0" topmargin="0" marginwidth="0" marginheight="0" 

二十一、            用Java下載
              <script language="javascript">

              var strDownloadUrl = "http://g.china.msn.com/7MEZH_CN/ZH-CHS/SETUPDL.EXE";

              function LaunchDownload(){location.href=strDownloadUrl;}

              </script> 

二十二、            滾動字的做法:
       <marquee scrolldelay="180">歡迎登入海天客戶關係管理系統!</marquee> 

二十三、            層
       在Login.aspx中可以使用層來解決位置的問題

       <div id="Layer1"style="BORDER-RIGHT: #000000 0px; BORDER-TOP: #000000 0px; LEFT: 28%; OVERFLOW: hidden; BORDER-LEFT: #000000 0px; WIDTH: 432px; BORDER-BOTTOM: #000000 0px; POSITION: absolute; TOP: 24%; HEIGHT: 282px; visibility: visible;"></div>

二十四、            關於XML
                     DataSet dsXml =new DataSet ("Settings");

                     string filepath=Server.MapPath ("\\xml\\set.xml");

                     dsXml.ReadXml(filepath);

                     DataGrid1.DataSource =dsXml;

                     Response.Write ("<br><br><br>第一個串連為:" + dsXml.Tables ["Set"].Rows[0]["ConnectionString1"].ToString ());

                     DataGrid1.DataMember ="Set";

                     DataGrid1.DataBind (); 

二十五、            處理傳入的參數
       http://mov.hzgwbn.com/movie.asp?addnew=true

       在void Form_Load()中加入:

       string _addnew=Request.QueryString ["addnew"]; 

二十六、            關於__dopostback()
看看這個吧,可能有用!!

<SCRIPT language="JavaScript">

     <!-- Hide from older browsers

     function GetInput()

         {

            input = prompt('input value that your want to send server:','');

            if ((input) && (input!=""))

            {

               document.forms['Form1'].elements['Hidden1'].value = input;

               __doPostBack('Button1', '');

            }

         }  

     // Stop hiding -->

</SCRIPT>  

其中使用了__DoPostBack這個系統的用戶端函數,用來激發伺服器事件。

2、為了完成這個完整的頁面我們需要一個如下的Form

<form id="Form1" method="post" runat="server">

         <INPUT id="Hidden1" type="hidden" name="Hidden1" runat="server">

         <asp:Button id="Button1" runat="server" Text="Button"></asp:Button>

         <asp:TextBox id="TextBox1" runat="server"></asp:TextBox>

      </form>

請注意裡面的細節,這些都是運行在伺服器上的(runat=server)  

3、接著就是伺服器端的代碼(cs檔案裡面的),Page_load函數使得伺服器控制項Button1可以在呈現到用戶端的時候具有onclick事件代碼如下:

private void Page_Load(object sender, System.EventArgs e)

      {

         // 在此處放置使用者代碼以初始化頁面

         this.Button1.Attributes.Add("onclick","GetInput();");

      }  

4、最後就是按鈕的事件了,代碼如下,它將取到使用者輸入的一個值並且將這個值顯示在TextBox裡面,代碼如下:

private void Button1_Click(object sender, System.EventArgs e) {

         string str = this.Hidden1.Value;

         this.TextBox1.Text = str;

      }

5、我自己的樣本

onclick="javascript:if(!confirm('ok')){return};__doPostBack('Button3','');"

6、注意:頁面上一定要有LinkButton或是別的可以有__doPostBack的控制項 

二十七、            Toolbar
1、用Javascript處理

<script language="javascript">  

function WitchB()  

{if (event.srcNode!= null)  

   {  

     var bt=event.srcNode.getAttribute("id");  

     switch (bt)  

   {  

   case "C1":  

       aa();  

       break;  

          case "C2":  

         這裡調用.aspx.cs中的過程,這句話該怎麼寫,用__dopostback()????  

       break;  

   }  

   }  

}  

function aa()  

{...}  

</script>  

<body onload="Toolbar1.onbuttonclick=WitchB;" MS_POSITIONING="GridLayout">   

2、在C#中處理

       private void Toolbar1_ButtonClick(object sender, EventArgs e)

              {

                     Response.Write (sender.ToString ());

                     TextBox1.Text =sender.ToString ();

                     if(sender.ToString ()=="ToolbarButton - button1")

                     {

                            Response.Redirect ("http://localhost/htcrm");

                     }

              }  

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.