zoukankan      html  css  js  c++  java
  • 摘抄一个伙计的

    summer
    目录

     

    一、       关于DataGrid的分页............................................................................ 4

    二、       关于上传文件....................................................................................... 4

    三、       关于自动刷新....................................................................................... 4

    四、       连到SQL数据库.................................................................................. 5

    五、       查询IP地址......................................................................................... 5

    六、       HTML中加载处理页面..................................................................... 5

    七、       使用TreeView控件............................................................................... 6

    八、       取消IE内容安全验证........................................................................... 7

    九、       第三方的Dtable控件使用方法.............................................................. 7

    十、       关于JavaScript..................................................................................... 7

    十一、    Asp.net 页面无刷新的做法............................................................ 12

    十二、    关于Asp的性能优化.......................................................................... 12

    十三、    关于传值(隐藏代码方式)................................................................ 13

    十四、    Application的事件............................................................................... 14

    十五、    Session的事件.................................................................................... 14

    十六、    在本窗口打开页面.............................................................................. 14

    十七、    关于DropDownList的数据绑定........................................................... 14

    十八、    Table的使用....................................................................................... 15

    十九、    DropDownList设置Item被选的方法................................................... 15

    二十、    HTML中去掉多的边框(整体)..................................................... 15

    二十一、    Java下载.................................................................................... 15

    二十二、    滚动字的做法:.............................................................................. 15

    二十三、    ................................................................................................... 15

    二十四、    关于XML....................................................................................... 16

    二十五、    处理传入的参数.............................................................................. 16

    二十六、    关于__dopostback()......................................................................... 16

    二十七、    Toolbar............................................................................................ 17

    二十八、    模式对话框..................................................................................... 18

    二十九、    防止被别人框架.............................................................................. 21

    三十、    在重定向中打开新的Window.............................................................. 22

    三十一、    IE的控制........................................................................................ 22

    三十二、    .NET Data Provider.NET数据驱动)............................................. 23

    三十三、    关于Sql中的单引号(')..................................................................... 23

    三十四、    DataReader读取数据的过程......................................................... 23

    三十五、    参数传递的三种方式....................................................................... 23

    三十六、    DataSet使用方法............................................................................. 24

    三十七、    在线人员........................................................................................ 25

    三十八、    关于Cache...................................................................................... 27

    三十九、    关于呼出表单................................................................................. 27

    四十、    关于Web.config文件.......................................................................... 33

    四十一、    如何使用T-SQL来给系统增加计划任务.......................................... 34

    四十二、    在网页上右键弹出菜单的子菜单范例.............................................. 34

    四十三、    contentEditable="true" 的妙用 - 打印............................................... 36

    四十四、    防止重复提交................................................................................. 36

    四十五、    WebServices服务调用详细.............................................................. 38

    四十六、    如何实现文本框焦点自动跳转及通过回车键提交表单...................... 38

    四十七、    显示和隐藏主菜单.......................................................................... 40

    四十八、    使用iFrame..................................................................................... 40

    四十九、    DataGrid中的bool值转换成""""............................................. 41

    五十、    C#中Random.Next()的错误............................................................... 41

     

     


     

     

    一、      关于DataGrid的分页

    除了设置:

    AllowPaging是指允许分页,这个是最主要的。有了它,我们才能分页。

    PageSize是指定每页显示的记录数,如果不写,就会默认为10条。

    外,还要加入:

           OnPageIndexChanged="DataGrid1_PageIndexChanged"

           public void DataGrid1_PageIndexChanged(object sender, DataGridPageChangedEventArgs e)

                  {

                         DataGrid1.CurrentPageIndex =e.NewPageIndex;

                         DataGrid1.DataBind();

                  }

     

     

    二、      关于上传文件

    上传文件应加入:

           <form id="Form1" enctype="multipart/form-data" method="post" runat="server">

    源文件里边加入:

           if(File1.PostedFile !=null)

                         {

                                File1.PostedFile.SaveAs (Server.MapPath ("\\1.jpg"));

                                Image1.ImageUrl =Server.MapPath ("\\1.jpg");

                               

                         }

     

     

    三、      关于自动刷新

    HTML应加入:

           <meta http-equiv ="REFRESH" content ="10;URL=chat.aspx">

     

     

    自动窗口ScrollWindow():

           <script language =javascript 1.1>

                  function scrollWindow()

                  {

                         this.scroll(0,65000);

                         setTimeout('scrollWindow()',200);

                  }

                  scrollWindow();

           </script>

     

     

    四、      连到SQL数据库

                         string _sql;

                         SqlConnection cn;

                         _sql="server=localhost;uid=sa;pwd=hz0222;database=Northwind";

                         cn=new SqlConnection (_sql);

                         cn.Open ();

                         //SqlCommand cmd =new SqlCommand ("select * from Products ",cn);

                         //SqlDataReader rs;

                         //rs=cmd.ExecuteReader();

                         SqlDataAdapter da=new SqlDataAdapter ("select * from Products",cn);

     

     

                         DataSet ds=new DataSet ();

                         da.Fill (ds,"Products");

     

     

                         DataGrid1.DataSource =ds.Tables["Products"].DefaultView ;

                         //DataGrid1.CurrentPageIndex = 0;

                         DataGrid1.DataBind ();

                         cn.Close ();

     

     

     

     

    五、      查询IP地址

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

                  {

                         IPHostEntry hostInfo = Dns.GetHostByName(txtDomain.Text);

                         Response.Write ("<br>" +hostInfo.AddressList[0].ToString());

                  }

           当然记得用引名字空间 System.Net

     

     

    六、      HTML中加载处理页面

           <form method="post" action="index2.aspx">

     

     

    七、      使用TreeView控件

    a)    下载并安装IEWebControlshttp://www.asp.net/IEWebControls/Download.aspx

    b)    安装完以后,默认状态下会建立一个目录:\Program files\IEWeb Controls\,当然你也可改变安装目录。找到这个目录,双击build.bat文件执行,它会建立一个名为build的子目录,并且编译在src目录下的源文件,把编译结果和Runtime目录复制到build子目录中(自动)。在这个动作之后,在build目录下应该会有一个叫"Microsoft.Web.UI.WebControls.dll"文件和一个Runtime子目录。为了能在ASP.NETWeb应用程序中使用这个控件,你必须把\build\Runtime子目录下的内容复制到Web应用程序的 /webctrl_client/1_0子目录中,并且把"Microsoft.Web.UI.WebControls.dll"这个文件复制到Web应用程序的/bin目录下。这个过程在Readme.txt文件有详细的说明,不过是英文的。

    c)    然后,你就可以在Toolbox中添加一个工具了(这个不用说明了吧)

    d)    以下是WebControls的说明书(E文)

          

    To run the IE Web Controls:

     

     

    1. Copy the contents of the Runtime directory to the webctrl_client\1_0

        directory under your top-level site directory. For example, if your

        site root is c:\Inetpub\wwwroot, type this at the command prompt:

     

     

        xcopy /s /i .\build\Runtime c:\Inetpub\wwwroot\webctrl_client\1_0 /y

     

     

        This will create the following directory structure under the site:

     

     

          /webctrl_client/1_0

            MultiPage.htc

            TabStrip.htc

            toolbar.htc

            treeview.htc

            webservice.htc

            webserviced.htc

            [images]

            [treeimages]

     

     

    2. Create a new web application in IIS and copy the contents of the

        samples directory to this application directory. For example:

     

     

        xcopy /s /i .\samples c:\Inetpub\wwwroot\sampleapp /y

     

     

    3. Create a /bin subdirectory for the application and copy the file

        Microsoft.Web.UI.WebControls.dll to this directory.

     

     

        The contents of the application will be as follows:

     

     

          /sampleapp

            multipage.aspx

            state_city.xml

            tabstrip.aspx

            toolbar.aspx

            treeview.aspx

            treeview_bound.aspx

            /bin

              Microsoft.Web.UI.WebControls.dll

     

     

    4. Request the sample pages from your Internet Explorer web browser, for

        example: http://localhost/sampleapp/multipage.aspx

     

     

    八、      取消IE内容安全验证

    a)    validateRequest="false"

     

     

    九、      第三方的Dtable控件使用方法

    a)    一定要把HTML中的<form……去掉

    b)    所连接的表的第一个字段必需是自动编号的int类型,Sql的验证最好加上ASP.NET这个帐号

    c)    其它问题请参考论坛http://dtable.2smm.com

     

     

    十、      关于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为显示;

      menubarscrollbars 表示菜单栏和滚动栏。

      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>

    12Cookies全部搞定

    <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。将数据库的处理和访问逻辑全部写到存储过程中。

    2asp只做显示输出的部分。

    3。将原有的bug修正。

    4。建立索引,并更改数据访问的sql,注意要点有

    1)Where 的条件需要将索引字段的条件置前。

    2)不允许出现count(*) ,count(field1)取代。

    3)不允许出现 select * select field1,field2 ...等代替

    4)尽量不用IN ,采用exits替代

    5) 对于单条的Insert Updatedelete ,不采用事务,采用事务锁定表,影响并发的效率,某些特殊情况还需要进行

    强制不锁表

    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>来合并列,合并行用rowspanSpan的意思是跨度

     

     

    十九、         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");

                         }

                  }

     

     

     

     

     

     

    二十八、            模式对话框

     

     

     Javascript有许多内建的方法来产生对话框,如:window.alert(), window.confirm(),window.prompt().等。 然而IE提供更多的方法支持对话框。如:

     

     

      showModalDialog() (IE 4+ 支持)

      showModelessDialog() (IE 5+ 支持)

     

     

     window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框,由于是对话框,因此它并没有一般用window.open()打开的窗口的所有属性。

     window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框。

     

     

     当我们用showModelessDialog()打开窗口时,不必用window.close()去关闭它,当以非模态方式[IE5]打开时, 打开对话框的窗口仍可以进行其他的操作,即对话框不总是最上面的焦点,当打开它的窗口URL改变时,它自动关闭。而模态[IE4]方式的对话框始终有焦点(焦点不可移走,直到它关闭)。模态对话框和打开它的窗口相联系,因此我们打开另外的窗口时,他们的链接关系依然保存,并且隐藏在活动窗口的下面。

     

     

    使用方法如下:

     vReturnValue = window.showModalDialog(sURL [, vArguments] [, sFeatures])

     vReturnValue = window.showModelessDialog(sURL [, vArguments] [, sFeatures])

    参数说明:

     sURL

     必选参数,类型:字符串。用来指定对话框要显示的文档的URL

     vArguments

     可选参数,类型:变体。用来向对话框传递参数。传递的参数类型不限,包括数组等。对话框通过window.dialogArguments来取得传递进来的参数。

     sFeatures

     可选参数,类型:字符串。用来描述对话框的外观等信息,可以使用以下的一个或几个,用分号“;”隔开。

     dialogHeight 对话框高度,不小于100px,IE4中dialogHeight dialogWidth 默认的单位是em,而IE5中是px,为方便其见,在定义modal方式的对话框时,用px做单位。

       dialogWidth: 对话框宽度。

       dialogLeft: 距离桌面左的距离。

       dialogTop: 离桌面上的距离。

       center: {yes | no | 1 | 0 }:窗口是否居中,默认yes,但仍可以指定高度和宽度。

       help: {yes | no | 1 | 0 }:是否显示帮助按钮,默认yes

       resizable: {yes | no | 1 | 0 } [IE5+]:是否可被改变大小。默认no

       status: {yes | no | 1 | 0 } IE5+]:是否显示状态栏。默认为yes[ Modeless]no[Modal]

         scroll:{ yes | no | 1 | 0 | on | off }:指明对话框是否显示滚动条。默认为yes

     

     

      还有几个属性是用在HTA中的,在一般的网页中一般不使用。

     dialogHide:{ yes | no | 1 | 0 | on | off }:在打印或者打印预览时对话框是否隐藏。默认为no

     edge:{ sunken | raised }:指明对话框的边框样式。默认为raised

     unadorned:{ yes | no | 1 | 0 | on | off }:默认为no

     

     

     传入参数:

     要想对话框传递参数,是通过vArguments来进行传递的。类型不限制,对于字符串类型,最大为4096个字符。也可以传递对象,例如:

     

     

     test1.htm

     ====================

     <script>

     var mxh1 = new Array("mxh","net_lover","孟子E")

     var mxh2 = window.open("about:blank","window_mxh")

     // 向对话框传递数组

     window.showModalDialog("test2.htm",mxh1)

     // 向对话框传递window对象

     window.showModalDialog("test3.htm",mxh2)

     </script>

     

     

     test2.htm

     ====================

     <script>

     var a = window.dialogArguments

     alert("您传递的参数为:" + a)

     </script>

     

     

     test3.htm

     ====================

     <script>

     var a = window.dialogArguments

     alert("您传递的参数为window对象,名称:" + a.name)

     </script>

     

     

     可以通过window.returnValue向打开对话框的窗口返回信息,当然也可以是对象。例如:

     

     

     test4.htm

     ===================

     <script>

     var a = window.showModalDialog("test5.htm")

     for(i=0;i<a.length;i++) alert(a[i])

     </script>

     

     

     test5.htm

     ===================

     <script>

     function sendTo()

     {

     var a=new Array("a","b")

     window.returnValue = a

     window.close()

     }

     </script>

     <body>

     <form>

     <input value="返回" type=button onclick="sendTo()">

     </form>

     

     

     常见问题:

    1, 如何在模态对话框中进行提交而不新开窗口?

    2, <base target="_self">

     如果你 浏览器是IE5.5+,可以在对话框中使用带name属性的iframe,提交时可以制定target为该iframename。对于IE4+,你可以用高度为0frame来作:例子,

     

     

     test6.htm

     ===================

     <script>

     window.showModalDialog("test7.htm")

     </script>

     

     

     test7.htm

     ===================

     if(window.location.search) alert(window.location.search)

     <frameset rows="0,*">

     <frame src="about:blank">

     <frame src="test8.htm">

     </frameset>

     

     

     test8.htm

     ===================

     <form target="_self" method="get">

     <input name=txt value="test">

     <input type=submit>

     </form>

     <script>

     if(window.location.search) alert(window.location.search)

     </script>

     2,可以通过http://servername/virtualdirname/test.htm?name=mxh方式直接向对话框传递参数吗?

     答案是不能。但在frame里是可以的。

     

     

     3,我的例子

           <script language="javascript">

           function KDMsgBox(info)

           {

                  var sUrl = "messagedlg.jsp?locale=zh_cn";

                  var sFeature="dialogWidth:368px;dialogHeight:212px;center:yes;help:no;resizable:no;status:no;scroll:no";

                  var retObj= window.showModalDialog("error.htm",info,sFeature);

                  return retObj;

           }

           </script>

     

     

    二十九、            防止被别人框架

           加在不想被框架的HTML中的<head></head>中:

           <SCRIPT LANGUAGE=javascript>

            if (top.location != self.location) top.location=self.location;

           </SCRIPT>

     

     

     

     

    三十、         在重定向中打开新的Window

           response.write("<script>window.open("store/Shop.Type.aspx?id=9")</script>") 

     

     

    三十一、            IE的控制

    <html>

    <head>

    <title>IE的控制</title>

    </head>

    <body>

    <a href="#" onclick=document.execCommand("open")>打开</a><br>

       <a href="#" onclick=location.replace("view-source:"+location)>使用 记事本 编辑</a><br>

       <a href="#" onclick=document.execCommand("saveAs")>另存为</a><br>

       <a href="#" onclick=document.execCommand("print")>打印</a><br>

       <a href="#" onclick=window.close();return false)>关闭本窗口</a><br>

       <a href="#" onclick=document.execCommand("selectAll")>全选</a><br>

       <a href="#" onclick=location.reload()>刷新</a><a href="#" onclick=history.go(0)>刷新</a><br>

       <a href="#" onclick=location.replace("view-source:"+location)>查看源文件</a> <br>

       <a href="#" onclick=window.open(document.location,"url","fullscreen")>全屏显示</a> <br>

       <a href="javascript:window.external.AddFavorite('http://homepage.yesky.com', '天极网页陶吧')">添加到收藏夹</a> <br>

       <a href="#" onclick=window.external.showBrowserUI("OrganizeFavorites",null)>整理收藏夹</a> <br>

       <a href="#" onclick=window.external.showBrowserUI("PrivacySettings",null)>internet选项</a> <br>

       <a href="#" onclick=history.go(1)>前进1</a><a href="#" onclick=history.forward()>前进2</a><br>

       <a href="#" onclick=history.go(-1)>后退1</a><a href="#" onclick=history.back()>后退2</a><br>

       <a href="#" onclick=setTimeout(window.close(),3000)>3秒关闭本窗口</a><br>

     

     

    </body>

    </html>

     

     

     

     

    三十二、            .NET Data Provider.NET数据驱动)

           .Net 的数据连接可以分为两种方式:

           1SQL .NET DATA Provider,支持Microsoft SQL Server 7.0 2000以上版本,专用于Sql Server,速度很快

           2OLEDB .NET DATA Provider,支持DBaseFoxproExcelAcessOracle等,也可以是Sql Server,但速度不如上一个

     

     

    三十三、            关于Sql中的单引号(')

           可以用sqlstr.Replace("","’‘") 来替换,因为Sql会把两个连续的单引号看成是一个单引号

     

     

     

     

    三十四、            DataReader读取数据的过程

           1、使用SqlConnection建立连接

           2、使用SqlCommand对象的ExcuteReader()方法执行查询

           3、使用DataReader接收查询的结果集

           4DataReader常见的方法和属性:

                  Read()方法,用于读取数据,并返回Bool

                  FieldCount属性,返回记录集字段总数

                  GetName(i)方法,返回第i列的字段名称

                  GetValue(i)方法,返回第i列的字段内容

                  DataReader(i),返回第i列的数据内容

                  DataReader[“字段名”],返回字段内容

                  GetDataTypeName(i),返回第i列字段的数据类型

                  GetOrdinal(i),返回第i列字段的下标

                  IsDBNull(i),返回第i列的字段是否为空

                  Close()方法,关闭DataReader对象

     

     

    三十五、            参数传递的三种方式

           1、传值:GetName(string i)

           2、传地址1(引用):GetName(ref string i)

           3、传地址2(输出参数):GetName(out string i)

                  23的区别在于2的参数必需要初始化,而3不要

           如:myCommand.Execute(out myDataReader);

     

     

    三十六、            DataSet使用方法

    首先我们需要打开一个联结,我们的数据库还是用上一节的吧:)

     

     

    string MyConnString = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=c:/test/test.mdb;";

    string strComm = "select * from UserList";

    ADOConnection MyConnection = new ADOConnection(MyConnString);

    ADODataSetCommand MyComm = new ADODataSetCommand(strComm,MyConnection);

     

     

    这里我们为了讲解方便,只在DataSet存入一个表的内容:

     

     

    DataSet MyDataSet = new DataSet();

    MyComm.FillDataSet(MyDataSet,"UserList");

     

     

     

     

    1、添加数据

    DataRow dr=MyDataSet.Tables["UserList"].NewRow();

    dr["UserName"] = "周讯";

    dr["ReMark"] = "100";

    dr["Comment"] = "漂亮MM"

    MyDataSet.Tables.Rows.Add(dr);

     

     

    2、修改数据

    MyDataSet.Tables["UserList"].Rows[0]["UserName"]="飞刀大哥";

     

     

    3、删除数据

    删除数据,主要是使用RowsCollection提供的Delete方法,看下面的程序也是很简单的事情啦:)

    MyDataSet.Tables["UserList"],Rows[0].Delete();

     

     

    4、恢复数据

    有时候我们添加/修改数据会出现错误,这时候,就需要恢复原来的数据。下面的程序,显示如何判断是否有错误发生:

    if(MyDataSet.HasErrors)

    {

           MyDataSet.RejectChanges();

    }

     

     

    5、看Dataset是否有改动

    if(MyDataSet.HasChanges)

    {

        //保存

    }else{

        //不进行任何操作

    }

     

     

    6、更新保存

    我们上面的操作,都只是针对DataSet的,没有操作数据库,但是我们的目的还是要将数据保存到数据中去,所以我们这里就需要调用DataSetCommandUpdate方法。下面的程序显示如何将DataSet的数据交给数据库。

     

     

    MyComm.Update(MyDataSet);

    很简单的一句,呵呵。这里要注意,如果一个DataSet中包含有多个表,而我们只更新一个,那我们就必须写明更新的数据表名:

     

     

    MyComm.Update(MyDataSet,"UserList");

     

     

    三十七、            在线人员

    本论坛的在线,没有采用传统数据库表格保存的方式,而是利用Cache来做

    这样避免了频繁地读写数据库,但相应地增加了服务器内存的开销

    好在Online的开销不是很大,而且是应用程序级,但不知这两种方法孰优孰劣?

    源代码如下:

    //保存在线

    public void SaveOnline(string userPlace)

    {

        DataTable online;

        if (HttpContext.Current.Cache["online"]==null)

        {

            online = new DataTable();

            online.Columns.Add("onlineID",typeof(string));

            online.Columns.Add("userID",typeof(string));

            online.Columns.Add("userName",typeof(string));

            online.Columns.Add("userLevelName",typeof(string));

            online.Columns.Add("userLevelImg",typeof(string));

            online.Columns.Add("userIP",typeof(string));

            online.Columns.Add("userPlace",typeof(string));

            online.Columns.Add("logoTime",typeof(DateTime));

            online.Columns.Add("actionTime",typeof(DateTime));

            online.Columns.Add("userOS",typeof(string));

            online.Columns.Add("userCLR",typeof(string));

            online.Columns.Add("userBorwser",typeof(string));

           

            HttpContext.Current.Cache["online"] = online;

        }

     

     

        DataRow[] dr1;

        DataRow   dr2;

        online = (DataTable)HttpContext.Current.Cache["online"];

        dr1 = online.Select("onlineID='" + onlineID + "'");

        if (dr1.Length>0)

        {

            dr1[0][1] = UserID;

            dr1[0][2] = UserName;

            dr1[0][4] = UserLevelImg;

            dr1[0][6] = userPlace;

            dr1[0][8] = DateTime.Now;

            online.AcceptChanges();

        }

        else

        {

            dr2 = online.NewRow();

            dr2[0] = onlineID;

            dr2[1] = UserID;

            dr2[2] = UserName;

            dr2[3] = userLevelName;

            dr2[4] = UserLevelImg;

            dr2[5] = UserIP;

            dr2[6] = userPlace;

            dr2[7] = DateTime.Now;

            dr2[8] = DateTime.Now;

            dr2[9] = UserOS;

            dr2[10] = UserCLR;

            dr2[11] = UserBrowser;

            online.Rows.Add(dr2);

        }

        DeleteOnline();

    }

     

     

    //清除超时用户

    private void DeleteOnline()

    {

        DataTable online = (DataTable)HttpContext.Current.Cache["online"];

        for (int i=0;i<online.Rows.Count;i++)

        {

            if (Convert.ToDateTime(online.Rows[i][7])<DateTime.Now.AddMinutes(-10.0))

                online.Rows[i].Delete();

        }

        online.AcceptChanges();

    }

    三十八、            关于Cache

    1、无变化的Cache

           <%@ OutputCache Duration="60" VaryByParam="none" %>

    2、根据参数变化的Cache

           <%@ OutputCache Duration="60" VaryByParam="state" %>

    3、通过复杂控制Cache

           应用程序若要更多地控制与缓存相关的 HTTP 标头,可使用 System.Web.HttpCachePolicy 类提供的功能。下面的示例显示等效于上例中使用的页指令的代码。

           Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));

           Response.Cache.SetCacheability(HttpCacheability.Public);

          

           若要使之成为变化的过期策略(即每次请求页时都重新设置过期时间),请按以下代码所示来设置 SlidingExpiration 属性。

           Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));

           Response.Cache.SetCacheability(HttpCacheability.Public);

           Response.Cache.SetSlidingExpiration(true);

           注意:启用变化的过期后 (SetSlidingExpiration(true)),对原服务器的请求总是会生成一个响应。在下游缓存可满足客户端请求(缓存中的内容尚未过期)而无须从原服务器请求内容的情况下,使用变化的过期时间是很有用的。

    ASP 移植过来的应用程序可能已用 ASP 属性设置了缓存策略;例如:

     

     

           Response.CacheControl = "Public";

           Response.Expires = 60;

     

     

     

     

     

     

    三十九、            关于呼出表单

    注:本处所指表单就是层

     

     

    <SCRIPT LANGUAGE='JavaScript'>

           function showdtablesearchlay()

                  {

                         if (document.getElementById('dtablesearch'))

                         {

                                var x=window.screen.width;

                                var y=window.screen.height;

                                dtablesearch.style.left=(x-360)/2;dtablesearch.style.top=(y-360)/2;

                                dtablesearch.style.visibility='visible';

                         }

                  }

           function hiddendtablesearchlay()

                  {

                         if (document.getElementById('dtablesearch'))

                         {

                                dtablesearch.style.visibility='hidden';

                         }

                  }

    </SCRIPT>

     

     

    附:建立一个浮动表单

     

     

    <div id='dtablesearch' style="position:absolute; 360px; height:174px; z-index:1; left: 161px; top: 18px; background-color: #ffffff; border: 1px outset #000000; visibility: hidden;filter:progid:DXImageTransform.Microsoft.Shadow(Color=#333333,Direction=120,strength=5)" onDblClick="hiddendtablesearchlay();"></div>

     

     

    2:下拉菜单

    <script Language="JavaScript">

    //***********默认设置定义.*********************

    tPopWait=50;//停留tWait豪秒后显示提示。

    tPopShow=5000;//显示tShow豪秒后关闭提示

    showPopStep=20;

    popOpacity=99;

     

     

    //***************内部变量定义*****************

    sPop=null;

    curShow=null;

    tFadeOut=null;

    tFadeIn=null;

    tFadeWaiting=null;

     

     

    document.write("<style type='text/css'id='defaultPopStyle'>");

    document.write(".cPopText { background-color: #F8F8F5;color:#000000; border: 1px #000000 solid;font-color: font-size: 12px; padding-right: 4px; padding-left: 4px; height: 20px; padding-top: 2px; padding-bottom: 2px; filter: Alpha(Opacity=0)}");

    document.write("</style>");

    document.write("<div id='dypopLayer' style='position:absolute;z-index:1000;' class='cPopText'></div>");

     

     

     

     

    function showPopupText(){

    var o=event.srcElement;

           MouseX=event.x;

           MouseY=event.y;

           if(o.alt!=null && o.alt!=""){o.dypop=o.alt;o.alt=""};

            if(o.title!=null && o.title!=""){o.dypop=o.title;o.title=""};

           if(o.dypop!=sPop) {

                         sPop=o.dypop;

                         clearTimeout(curShow);

                         clearTimeout(tFadeOut);

                         clearTimeout(tFadeIn);

                         clearTimeout(tFadeWaiting); 

                         if(sPop==null || sPop=="") {

                                dypopLayer.innerHTML="";

                                dypopLayer.style.filter="Alpha()";

                                dypopLayer.filters.Alpha.opacity=0;     

                                }

                         else {

                                if(o.dyclass!=null) popStyle=o.dyclass

                                       else popStyle="cPopText";

                                curShow=setTimeout("showIt()",tPopWait);

                         }

                        

           }

    }

     

     

    function showIt(){

                  dypopLayer.className=popStyle;

                  dypopLayer.innerHTML=sPop;

                  popWidth=dypopLayer.clientWidth;

                  popHeight=dypopLayer.clientHeight;

                  if(MouseX+12+popWidth>document.body.clientWidth) popLeftAdjust=-popWidth-24

                         else popLeftAdjust=0;

                  if(MouseY+12+popHeight>document.body.clientHeight) popTopAdjust=-popHeight-24

                         else popTopAdjust=0;

                  dypopLayer.style.left=MouseX+12+document.body.scrollLeft+popLeftAdjust;

                  dypopLayer.style.top=MouseY+12+document.body.scrollTop+popTopAdjust;

                  dypopLayer.style.filter="Alpha(Opacity=0)";

                  fadeOut();

    }

     

     

    function fadeOut(){

           if(dypopLayer.filters.Alpha.opacity<popOpacity) {

                  dypopLayer.filters.Alpha.opacity+=showPopStep;

                  tFadeOut=setTimeout("fadeOut()",1);

                  }

                  else {

                         dypopLayer.filters.Alpha.opacity=popOpacity;

                         tFadeWaiting=setTimeout("fadeIn()",tPopShow);

                         }

    }

     

     

    function fadeIn(){

           if(dypopLayer.filters.Alpha.opacity>0) {

                  dypopLayer.filters.Alpha.opacity-=1;

                  tFadeIn=setTimeout("fadeIn()",1);

                  }

    }

    document.onmouseover=showPopupText;

     

     

    function CheckAll(form) {

     for (var i=0;i<form.elements.length;i++)    {

        var e = form.elements[i];

        if (e.name != 'chkall')       e.checked = form.chkall.checked;

       }

     }

     

     

    //下拉菜单相关代码

     var h;

     var w;

     var l;

     var t;

     var topMar = 1;

     var leftMar = -2;

     var space = 1;

     var isvisible;

     var MENU_SHADOW_COLOR='#999999';//定义下拉菜单阴影色

     var global = window.document

     global.fo_currentMenu = null

     global.fo_shadows = new Array

     

     

    function HideMenu()

    {

     var mX;

     var mY;

     var vDiv;

     var mDiv;

           if (isvisible == true)

    {

                  vDiv = document.all("menuDiv");

                  mX = window.event.clientX + document.body.scrollLeft;

                  mY = window.event.clientY + document.body.scrollTop;

                  if ((mX < parseInt(vDiv.style.left)) || (mX > parseInt(vDiv.style.left)+vDiv.offsetWidth) || (mY < parseInt(vDiv.style.top)-h) || (mY > parseInt(vDiv.style.top)+vDiv.offsetHeight)){

                         vDiv.style.visibility = "hidden";

                         isvisible = false;

                  }

    }

    }

     

     

    function ShowMenu(vMnuCode,tWidth) {

           vSrc = window.event.srcElement;

           vMnuCode = "<table id='submenu' cellspacing=1 cellpadding=3 style='"+tWidth+"' class=tableborder1 onmouseout='HideMenu()'><tr height=23><td nowrap align=left class=tablebody1>" + vMnuCode + "</td></tr></table>";

     

     

           h = vSrc.offsetHeight;

           w = vSrc.offsetWidth;

           l = vSrc.offsetLeft + leftMar+4;

           t = vSrc.offsetTop + topMar + h + space-2;

           vParent = vSrc.offsetParent;

           while (vParent.tagName.toUpperCase() != "BODY")

           {

                  l += vParent.offsetLeft;

                  t += vParent.offsetTop;

                  vParent = vParent.offsetParent;

           }

     

     

           menuDiv.innerHTML = vMnuCode;

           menuDiv.style.top = t;

           menuDiv.style.left = l;

           menuDiv.style.visibility = "visible";

           isvisible = true;

        makeRectangularDropShadow(submenu, MENU_SHADOW_COLOR, 4)

    }

     

     

    function makeRectangularDropShadow(el, color, size)

    {

           var i;

           for (i=size; i>0; i--)

           {

                  var rect = document.createElement('div');

                  var rs = rect.style

                  rs.position = 'absolute';

                  rs.left = (el.style.posLeft + i) + 'px';

                  rs.top = (el.style.posTop + i) + 'px';

                  rs.width = el.offsetWidth + 'px';

                  rs.height = el.offsetHeight + 'px';

                  rs.zIndex = el.style.zIndex - i;

                  rs.backgroundColor = color;

                  var opacity = 1 - i / (i + 1);

                  rs.filter = 'alpha(opacity=' + (100 * opacity) + ')';

                  el.insertAdjacentElement('afterEnd', rect);

                  global.fo_shadows[global.fo_shadows.length] = rect;

           }

    }

     

     

     

     

     

     

     

     

          

     

     

     

     

     

     

     

     

     

     


     

     

    四十、         关于Web.config文件

    几乎在每本介绍Asp.Net编程的书里,在谈到如何管理数据库连接字符串的时候,都是采用将数据库连接字符串以如下形式放在Web.Config文件中

      

     < appSettings>

      

     < add key="ConnectionString" value="data source=localhost;initial catalog=Database;user id=;password="/>

      

     </appSettings>

      

      然后在程序中采用以下方式访问:

      

     System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]

      

      这样做的好处非常明显:当数据库有变动的时候,只需要改变web.config中的连接字符串,而不需要重新编译整个应用程序,给应用的部署和移植带来非常大的方便。

     

     

    附:写入Web.config的函数

     /// <summary>

     /// 修改web.config文件appSettings配置节中的Add里的value属性

     /// </summary>

     /// <remarks>

     /// 注意,调用该函数后,会使整个Web Application重启,导致当前所有的会话丢失

     /// </remarks>

     /// <param name="key">要修改的键key</param>

     /// <param name="strValue">修改后的value</param>

     /// <exception cref="">找不到相关的键</exception>

     /// <exception cref="">权限不够,无法保存到web.config文件中</exception>

     

     

    public void Modify(string key,string strValue)

     {

       string XPath="/configuration/appSettings/add[@key='?']";

       XmlDocument domWebConfig=new XmlDocument();

      

       domWebConfig.Load( (HttpContext.Current.Server.MapPath("web.config")) );

       XmlNode addKey=domWebConfig.SelectSingleNode( (XPath.Replace("?",key)) );

       if(addKey == null)

       {

        throw new ArgumentException("没有找到<add key='"+key+"' value=.../>的配置节");

       }

       addKey.Attributes["value"].InnerText=strValue;

       domWebConfig.Save( (HttpContext.Current.Server.MapPath("web.config")) );

      

     }

     

     

    四十一、            如何使用T-SQL来给系统增加计划任务

     

     

     

    declare @RunTime char(5)

    declare @String char(100)

    set @RunTime=left(convert(char(5),getdate(),8),2) + ':' + convert(char(2),convert(int,right(convert(char(5),getdate(),8),2) )+1,2)

    set @String='at '+ @RunTime + ' /interactive ' + ' C:windowssystem32 otepad.exe'

    exec ('master..xp_cmdshell "'+@String +'"')

    上面的脚本是在当前时间后的1分钟增加一个任务。如果直接执行

    xp_cmdshell @String 会报错,最终还是在MSDNCommunity中找到了解决的办法。

    四十二、            在网页上右键弹出菜单的子菜单范例

    前面忘了放上子菜单的应用范例了。。。。

    这里补上。

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

     

     

    <html>

     <head>

        <title>PopupMenuTest</title>

        <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">

        <meta name="CODE_LANGUAGE" Content="C#">

        <meta name=vs_defaultClientScript content="JavaScript">

        <meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">

     </head>

     <body MS_POSITIONING="GridLayout" oncontextmenu="return DisplayPopupMenu();">

            <script language="javascript">

            function DisplayPopupMenu()

            {

                menuTree.show(event.x, event.y);

                return false;

            }

           

            function menuTreeBeforePopup()

            {

            }

           

            function menuTreeClick(objTree)

            {

               

                switch(event.menuData)

                {

                    case "refresh":    alert('refresh clicked.');

                                    break;

                    case "property":alert('property clicked.');

                                    break;

                    case "message":alert('message clicked.');

                                    break;

                    case "email":alert('email clicked.');

                                    break;

                }

            }

            </script>

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

            <?XML:NAMESPACE PREFIX="hGui" /><?import namespace="hGui" implementation="/webcontrols/sMenu.htc" />

            <hGui:smenu id="menuTree" onmenuclick="menuTreeClick()" onbeforepopup="menuTreeBeforePopup();" style="Z-INDEX: 100">

                刷新,,,,./images/refresh.gif,refresh;

                新建,subMenu1,,,,submenu1;

                -,0,,,,;

                属性,,,,./images/property.gif,property

            </hGui:smenu>

           

            <?XML:NAMESPACE PREFIX="hGui" /><?import namespace="hGui" implementation="/webcontrols/sMenu.htc" />

           

            <hGui:smenu id="subMenu1" onmenuclick="menuTreeClick()" onbeforepopup="menuTreeBeforePopup();" style="Z-INDEX: 100">

                短消息,,,,./images/refresh.gif,message;

                -,0,,,,;

                发送E-Mail,,,,./images/property.gif,email

            </hGui:smenu>

         </form>

     </body>

    </html>

     

     

     

     

     

     

    四十三、            contentEditable="true" 的妙用 - 打印

    不知道各位有没有做过用于打印的Web页。

     

     

    我帮客户做这个页面的时候,喜欢把某些区域定为contentEditable="true",目的是让客户可以随便修改这些地方。

     

     

    例如:

     

     

    <Asp:Panel runat=server contentEditable="true"/>..<Asp:Label runat=server id=PrintTitle Text=PrintTitle/>..</Asp:Panel>

     

     

    四十四、            防止重复提交

     

     

    function _doPostBack(){};

    if(typeof("__doPostBack")=="function")

    {

           _doPostBack=__doPostBack;

           __doPostBack=_doPostBackNew;

    }

     

     

    document.attachEvent("onmousemove",_onmousemove);

    var _isPosting=false;

    var _divMask=null;

     

     

    function _onmousemove()

    {

           if(_divMask)

           with(_divMask.runtimeStyle)

           {

                  left=event.clientX+document.body.scrollLeft-4;

                  top=event.clientY+document.body.scrollTop-4;

           }

    }

     

     

     

     

    function _makeMask()

    {

           var div=document.createElement("DIV");

           with(div.runtimeStyle)

           {

                  position="absolute";

                  zIndex=999999;

                  fontSize="1px";

                  left=event.clientX+document.body.scrollLeft-4;

                  top=event.clientY+document.body.scrollTop-4;

                  width="8px";

                  height="8px";

                  cursor="wait";

                 

                  backgroundColor="gray";

                  filter="alpha(opacity=10)";

           }

           try

           {

                  document.body.insertAdjacentElement("BeforeEnd",div);

                  div.onblur=new Function("this.focus()");

                  div.focus();

           }

           catch(x){}

          

           if(_divMask)_divMask.removeNode(true);

           _divMask=div;

    }

     

     

    function _doPostBackNew(sender,args)

    {

           if(_isPosting)

                  return event.returnValue=!(event.cancelBubble=true);

     

     

           status="正在更新页面...";

           _doPostBack(sender,args);          

           _isPosting=true;

           _makeMask();

    }

     

     

    function _onformsubmit()

    {

           if(_isPosting)

                  return event.returnValue=!(event.cancelBubble=true);

     

     

           _isPosting=true;

           _makeMask();

    }

    new function _attachForms()

    {

           with(new Enumerator(document.forms))

           for(;!atEnd();moveNext())

           {

                  item().attachEvent("onsubmit",_onformsubmit);

                  var div=document.createElement("div");

                  div.runtimeStyle.width="0px";

                  div.runtimeStyle.hight="0px";

                  div.runtimeStyle.overflow="hidden";

                  div.runtimeStyle.position="absolute";

                  item(0).insertAdjacentElement("afterbegin",div);

                  div.innerHTML="<INPUT TYPE=Submit name='webformpatchsubmitelement' onclick='return event.returnValue=false' id='webformpatchsubmitelement' value='webformpatchsubmitelement'/>";

           }

    }

     

     

    把这个作为 <-script src=.....js-><-/script-> 的形式Render到每个页面中就可以了。|

    如果有PageBase,则在Init的时候用RegisterClientScriptBlock放上去更好。

    因为客户没有抱怨过,所以也没有改进过。

     

     

    四十五、            WebServices服务调用详细

    WebService1.lists.Lists weblist = new WebService1.lists.Lists();

    weblist.Url = "http://190.1.1.111:800/_vti_bin/Lists.asmx";

    weblist.PreAuthenticate = true;

    weblist.Credentials = System.Net.CredentialCache.DefaultCredentials;

    XmlNode ndlist = weblist.GetListCollection();

     

     

    四十六、            如何实现文本框焦点自动跳转及通过回车键提交表单

    该文章讲的是在ASP.NET登录页面中如何实现文本框焦点自动跳转及通过回车键提交表单。

    所需的Javascript代码:

     

     

    <script language="JavaScript">

     

     

    NS4 = (document.layers) ? true : false;

     

     

    function checkEnter(event,element)

     

     

    {    

     

     

        var code = 0;

     

     

        if (NS4)

     

     

            code = event.which;

     

     

        else

     

     

            code = event.keyCode;

     

     

        if (code==13)

     

     

         {

     

     

             if(element.name=='tbUserName')//tbUserName-用户名文本框的Name

     

     

             {

     

     

                  document.frmLogin.tbPassword.focus();//frmLogin-表单名称,tbPassword-密码文本杠框的Name

     

     

             }

     

     

             if(element.name=='tbPassword')

     

     

             {

     

     

                  //document.frmLogin.submit();用这种方式提交,Asp.net页面会闪一下,但实际并未提交

     

     

                  //用下面的代码才能提交,我是从asp.net生成的页面中查看源文件然后复制出来的

     

     

                  if (typeof(Page_ClientValidate) != 'function' || Page_ClientValidate()) __doPostBack('lblLogin','');

     

     

             }

     

     

         }

     

     

    }

    </script>

    我将这些代码放在了一个LoginScript.js文件中,然后在Login.cs文件中添加如下代码就实现这样的功能:

    tbUserName.Attributes.Add("onKeyPress","checkEnter(event,this)");

    tbPassword.Attributes.Add("onKeyPress","checkEnter(event,this)");

    System.IO.StreamReader sr=new System.IO.StreamReader(MapPath("Script")+"\\LoginScript.js");

    this.RegisterClientScriptBlock("LoginScript",sr.ReadToEnd());

    sr.Close();

     

     

    四十七、            显示和隐藏主菜单

    <script LANGUAGE="JavaScript">

           function toggleMenu()

           {

            

            // hide the menu

            if(document.all.toggleMenuImg.value == '1')

            {

               document.all.toggleMenuImg.value = '0';

               document.all.toggleMenuImg.src = "images/tbnt_mc.gif";

               top.document.getElementById('WindowLeft').cols = "0px,*";

            }

            // display the menu

            else

            {

               document.all.toggleMenuImg.value = '1';

               document.all.toggleMenuImg.src = "images/tbtn_mo.gif";

               top.document.getElementById('WindowLeft').cols = "170px,*";

            }

            

           }

    </script>

     

     

    四十八、            使用iFrame

    <iframe name="mainframe" id="mainframe" src="http://www.yahoo.com" frameborder="0" noresize

                                scrolling="auto" style="BORDER-RIGHT:medium none;PADDING-RIGHT:0px;BORDER-TOP:medium none;PADDING-LEFT:0px;RIGHT:0px;PADDING-BOTTOM:0px;BORDER-LEFT:medium none;WIDTH:100%;PADDING-TOP:0px;BORDER-BOTTOM:medium none;POSITION:absolute;TOP:26px;HEIGHT:95%">

                         </iframe>

     

     

    四十九、            DataGrid中的bool值转换成""""

    有很多人问如何在DataGrid中显示是与否的显示方法..其实还是比较容易实现的.

     

     

     

     

    <asp:TemplateColumn HeaderText="情况">

    <ItemTemplate>

    <%# (bool)DataBinder.Eval(Container,"DataItem.IsActive")?"":""%>

    </ItemTemplate>

    </asp:TemplateColumn>

    五十、         C#中Random.Next()的错误

    Random.Next(rang1,rang2)产生的随机数,竟然前后几次都是相同的!

    后改用Random.NextDouble()产生0.1-1.0的浮点数就可以了,真是的,搞了我几个小时

    五十一、            IIS上运行的不是ASP 1.1服务器

    vs.net检测到指定的web服务器运行的不是asp.net1.1版,将无法运行web服务或应用程序             这是装完IIS后运行vs中的asp.net出现的,我的系统装的是XP sp2

    解决方法如下:

    aspnet_regiis/I

    五十二、            CTRL+回车提交表单

    在文本框中按CTRL+回车,需要执行文本框的ONKEYUP事件,

     

     

    <textarea name="TextBox1" id="TextBox1" onkeyup="post();" style="Z-INDEX: 101; LEFT: 200px; POSITION: absolute; TOP: 16px"></textarea>

    我这里共有二个解决方法(实际上也是一个)

     

     

    ASP.NET中,所有的服务器控件提交到服务器的时候,都会调用__doPostBack这个函数,所以,我们第一种方法就是利用__doPostBack

     

     

    ********************************网上摘来的***

     

     

    asp.net中服务器控件回送表单是通过调用__doPostBack函数来回送表单,触发事件的,先来看看__doPostBack函数:

    function __doPostBack(eventTarget, eventArgument) {

        if (theForm.onsubmit == null || theForm.onsubmit()) {

            theForm.__EVENTTARGET.value = eventTarget;

            theForm.__EVENTARGUMENT.value = eventArgument;

            theForm.submit();

        }

    }

    第一个参数是控件名称,第二个参数包含事件的额外信息.

    ***********************************************

    为方便查看我就直接在ASPX页添加JS

    当按CTRL+回事,执行BUTTON1事件

        Private Sub Button1_Click()Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

            Response.Write("<script>alert(""oks"")</script>")

            'Response.Redirect(Request.RawUrl)

        End Sub

    A.ASPX

     

     

        <SCRIPT LANGUAGE='JavaScript'><!--

    function post(){

    if (event.ctrlKey && window.event.keyCode==13)

    {

    alert("ok");

    __doPostBack('button1','');

    }

    }

    //-->

    </script>

    当你的页面没有__doPostBack这个函数(在程序运行时,右击,查看源文件),就可以不能使用__doPostBack了,

     

     

        <SCRIPT LANGUAGE='JavaScript'><!--

    function post(){

    if (event.ctrlKey && window.event.keyCode==13)

    {

    alert("ok");document.forms(0).Button1.click();

    }

    }

    //-->

    </script>

  • 相关阅读:
    vs.net 2005 C# WinForm GroupBOX 的BUG?尝试读取或写入受保护的内存。这通常指示其他内存已损坏
    Git安装及基本使用
    c++实现将表达式转换为逆波兰表达式
    2015年倒数第6周学习报告
    读过的书及读后感
    c++实现队列
    链表插入排序(insertion-sort-list)
    test
    [转]maven入门
    几个学习Maven不错的网址
  • 原文地址:https://www.cnblogs.com/wangweixznu/p/389876.html
Copyright © 2011-2022 走看看