ASP.NET 学习笔记

一、      关于DataGrid的分页
除了设置:AllowPaging是指允许分页,这个是最主要的。有了它,我们才能分页。PageSize是指定每页显示的记录数,如果不写,就会默认为10条。另外,还要加入:

None.gif OnPageIndexChanged = " DataGrid1_PageIndexChanged "
None.gif       
public   void  DataGrid1_PageIndexChanged( object  sender, DataGridPageChangedEventArgs e) 
ExpandedBlockStart.gifContractedBlock.gif              
dot.gif {                      DataGrid1.CurrentPageIndex =e.NewPageIndex;
InBlock.gif                     DataGrid1.DataBind();
ExpandedBlockEnd.gif              }
 

   二、      关于上传文件
上传文件应加入:       <form id="Form1" enctype="multipart/form-data" method="post" runat="server">
源文件里边加入:      

ContractedBlock.gif ExpandedBlockStart.gif 上传文件
None.gifif(File1.PostedFile !=null)
None.gif
ExpandedBlockStart.gifContractedBlock.gif                     
dot.gif{
InBlock.gif
InBlock.gif                            File1.PostedFile.SaveAs (Server.MapPath (
"file://1.jpg/"));
InBlock.gif
InBlock.gif                            Image1.ImageUrl 
=Server.MapPath ("file://1.jpg/");                            
InBlock.gif
ExpandedBlockEnd.gif                     }
 
None.gif
None.gif


三、      关于自动刷新
HTML应加入:       <meta http-equiv ="REFRESH" content ="10;URL=chat.aspx">
自动窗口ScrollWindow():

ContractedBlock.gif ExpandedBlockStart.gif 自动窗口
None.gif <script language =javascript 1.1>
None.gif
None.gif              
function scrollWindow()
None.gif
ExpandedBlockStart.gifContractedBlock.gif              
dot.gif{
InBlock.gif
InBlock.gif                     
this.scroll(0,65000);
InBlock.gif
InBlock.gif                     setTimeout('scrollWindow()',
200);
InBlock.gif
ExpandedBlockEnd.gif              }

None.gif
None.gif              scrollWindow();
None.gif
None.gif       
</script> 
None.gif
None.gif
None.gif

      
四、      连到SQL Server数据库

ContractedBlock.gif ExpandedBlockStart.gif 连接SQL Server数据库
None.gifstring _sql;
None.gif
None.gif                     SqlConnection cn;
None.gif
None.gif                     _sql
="server=localhost;uid=sa;pwd=hz0222;database=Northwind";
None.gif
None.gif                     cn
=new SqlConnection (_sql);
None.gif
None.gif                     cn.Open ();
None.gif
None.gif                     
//SqlCommand cmd =new SqlCommand ("select * from Products ",cn);
None.gif
None.gif                     
//SqlDataReader rs;
None.gif
None.gif                     
//rs=cmd.ExecuteReader();
None.gif

None.gif                     SqlDataAdapter da
=new SqlDataAdapter ("select * from Products",cn);
None.gif
None.gif                     DataSet ds
=new DataSet ();
None.gif
None.gif                     da.Fill (ds,
"Products");
None.gif
None.gif                     DataGrid1.DataSource 
=ds.Tables["Products"].DefaultView ;
None.gif
None.gif                     
//DataGrid1.CurrentPageIndex = 0;
None.gif

None.gif                     DataGrid1.DataBind ();
None.gif
None.gif                     cn.Close ();
None.gif
None.gif


五、      查询IP地址
              当然记得用引名字空间 System.Net 

ContractedBlock.gif ExpandedBlockStart.gif查询IP地址
None.gif private void Button6_Click(object sender, System.EventArgs e)
None.gif
ExpandedBlockStart.gifContractedBlock.gif              
dot.gif{
InBlock.gif
InBlock.gif                     IPHostEntry hostInfo 
= Dns.GetHostByName(txtDomain.Text);
InBlock.gif
InBlock.gif                     Response.Write (
"<br>" +hostInfo.AddressList[0].ToString());
InBlock.gif
ExpandedBlockEnd.gif              }

None.gif
None.gif

六、      在HTML中加载处理页面
       <form method="post" action="index2.aspx"> 
七、      使用TreeView控件
a)    下载并安装IEWebControls:http://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.NET的Web应用程序中使用这个控件,你必须把\build\Runtime子目录下的内容复制到Web应用程序的 /webctrl_client/1_0子目录中,并且把"Microsoft.Web.UI.WebControls.dll"这个文件复制到Web应用程序的/bin目录下。这个过程在Readme.txt文件有详细的说明,不过是英文的。
c)    然后,你就可以在Toolbox中添加一个工具了(这个不用说明了吧)

八、      取消IE内容安全验证
a)    page validateRequest="false" 注意:要加在Web.Config里面的<system.web></system.web>之间

九、      第三方的Dtable控件使用方法
a)    一定要把HTML中的<form……去掉
b)    所连接的表的第一个字段必需是自动编号的int类型,Sql的验证最好加上ASP.NET这个帐号
c)    其它问题请参考论坛http://dtable.2smm.com/ 

十、      关于JavaScript
-1、 使用热键
       <body οnkeydοwn="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的代码片如下:         

ContractedBlock.gif ExpandedBlockStart.gif
None.gif    <script language="javascript">
None.gif
None.gif                     
function closeWnd()
None.gif
ExpandedBlockStart.gifContractedBlock.gif                     
dot.gif{
InBlock.gif
InBlock.gif                            window.close();
InBlock.gif
ExpandedBlockEnd.gif                     }

None.gif
None.gif              
</script>
None.gif
None.gif              
<input type="button" value='关闭' onclick='closeWnd()'>
None.gif
None.gif

3、  关于Document对象的使用:如果你的窗体(名称是Form1)中有一个控件(名称是Keyword)那么,引用方法为:                        Document.form1.Keyword.value

4、  相关示例见test_js.sln项目
5、  使用状态条:

None.gif   < href ="tpage.htm"  temp_href ="tpage.htm"  onMouseOver ="window.status='Just another stupid linkdot.gif'; return true" >
None.gif
None.gif              input type="button" name="look" value="?" οnclick="statbar('这是状态条喔
None.gif
None.gif               (statusbar) !');">
None.gif
None.gif              
< input  type ="button"  name ="erase"  value ="d)"  onclick ="statbar('');" >  
None.gif
None.gif

            
6、使用日期的例子:

None.gif < script language = " LiveScript " >
None.gif
None.gif       
<!--  Hiding
None.gif
None.gif         today 
=   new  Date()
None.gif
None.gif         document.write(
" ?( ??/  " ,today.getHours(), " : " ,today.getMinutes())
None.gif
None.gif         document.write(
" <br>?) ?- :  " , today.getMonth() + 1 , " / " ,today.getDate(), " / " ,today.getYear());
None.gif
None.gif       
//  end hiding contents -->
None.gif

None.gif       
</ script >  
None.gif
None.gif

      
7、产生随机数

None.gif   < script language = " LiveScript " >
None.gif
ExpandedBlockStart.gifContractedBlock.gif       
function  RandomNumber()  dot.gif {
InBlock.gif
InBlock.gif         today 
= new Date();
InBlock.gif
InBlock.gif         num 
= Math.abs(Math.sin(today.getTime()));
InBlock.gif
InBlock.gif         
return num;  
InBlock.gif
ExpandedBlockEnd.gif       }

None.gif
None.gif       
</ script >
None.gif
None.gif

      
8、打开一个新窗口:

None.gif < SCRIPT LANGUAGE = " javascript " >  
None.gif
None.gif  
<!--  
None.gif
None.gif         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')  // 这句要写成一行
None.gif

None.gif  
-->  
None.gif
None.gif
</ SCRIPT >   
None.gif
None.gif


  参数解释:
<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、自动关闭窗口

None.gif      < script language = " JavaScript " >  
None.gif
None.gif                
function  closeit() 
None.gif
ExpandedBlockStart.gifContractedBlock.gif                
dot.gif
InBlock.gif
InBlock.gif                       setTimeout(
"self.close()",10000//毫秒 
InBlock.gif

ExpandedBlockEnd.gif                }
 
None.gif
None.gif         
</ script >  
None.gif
None.gif


10、打开窗口之Cookies

       回想一下,上面的弹出窗口虽然酷,但是有一点小毛病(沉浸在喜悦之中,一定 没有发现吧?)比如你将上面的脚本放在一个需要频繁经过的页面里(例如首页),那么每次刷新这个页面,窗口都会弹出一次,是不是非常烦人?
  有解决的办法吗?Yes!  Follow me.我们使用cookie来控制一下就可以了。
  首先,将如下代码加入主页面HTML的<HEAD>区:  

ContractedBlock.gif ExpandedBlockStart.gif 打开窗口Cookie
None.gif<script> 
None.gif
ExpandedBlockStart.gifContractedBlock.gif  
function openwin()dot.gif
InBlock.gif
InBlock.gif  window.open(
"page.html","","width=200,height=200"
InBlock.gif
ExpandedBlockEnd.gif  }
 
None.gif
None.gif  
function get_cookie(Name)
None.gif
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif
InBlock.gif
InBlock.gif  
var search = Name + "=" 
InBlock.gif
InBlock.gif  
var returnvalue = ""
InBlock.gif
InBlock.gif  
if (document.cookie.length > 0
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif       
dot.gif
InBlock.gif
InBlock.gif                offset 
= document.cookie.indexOf(search) 
InBlock.gif
InBlock.gif                
if (offset != -1)
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif              
dot.gif
InBlock.gif
InBlock.gif                       offset 
+= search.length 
InBlock.gif
InBlock.gif                       end 
= document.cookie.indexOf(";", offset); 
InBlock.gif
InBlock.gif                       
if (end == -1
InBlock.gif
InBlock.gif                       end 
= document.cookie.length; 
InBlock.gif
InBlock.gif                       returnvalue
=unescape(document.cookie.substring(offset, end)) 
InBlock.gif
ExpandedSubBlockEnd.gif                }
 
InBlock.gif
ExpandedSubBlockEnd.gif         }
 
InBlock.gif
InBlock.gif  
return returnvalue; 
InBlock.gif
ExpandedBlockEnd.gif  }
  
None.gif
None.gif  
function loadpopup()
None.gif
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif
InBlock.gif
InBlock.gif         
if (get_cookie('popped')=='')
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif       
dot.gif
InBlock.gif
InBlock.gif                openwin() 
InBlock.gif
InBlock.gif                document.cookie
="popped=yes" 
InBlock.gif
ExpandedSubBlockEnd.gif         }
 
InBlock.gif
ExpandedBlockEnd.gif  }
 
None.gif
None.gif  
</script> 
None.gif
None.gif

  然后,用<body οnlοad="loadpopup()">(注意不是openwin而是loadpop啊!)替换主页面中原有的<BODY>这一句即可。你可以试着刷新一下这个页面或重新进 入该页面,窗口再也不会弹出了。真正的Pop-Only-Once!  
  写到这里弹出窗口的制作和应用技巧基本上算是完成了! 

11、前进后退和定位

None.gif < html >
None.gif
< body >
None.gif
< FORM  NAME ="buttonbar" >
None.gif     
< INPUT  TYPE ="button"  VALUE ="Back"  onClick ="history.back()" >
None.gif     
< INPUT  TYPE ="button"  VALUE ="JS- Home"  onClick ="location='script.html'" >
None.gif     
< INPUT  TYPE ="button"  VALUE ="Next"  onCLick ="history.forward()" >
None.gif
</ FORM >
None.gif
</ body >
None.gif
</ html >


12、Cookies全部搞定

ContractedBlock.gif ExpandedBlockStart.gif Cookie操作
None.gif<script language="JavaScript">
None.gif
<!-- 
None.gif
var bVisitedToday = false;
None.gif
var lastVisit = GetCookie("lastVisit");
None.gif
if (lastVisit != null
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif  lastVisit 
= 1 * lastVisit;
InBlock.gif  
var lastHere = new Date(lastVisit); 
InBlock.gif  
var rightNow = new Date();
InBlock.gif  
if(lastHere.getYear() == rightNow.getYear()
InBlock.gif     
&& lastHere.getMonth() == rightNow.getMonth()
InBlock.gif     
&& lastHere.getDate() == rightNow.getDate())
ExpandedSubBlockStart.gifContractedSubBlock.gif  
dot.gif{
InBlock.gif     bVisitedToday 
= true;
ExpandedSubBlockEnd.gif  }

ExpandedBlockEnd.gif}

None.gif
if(bVisitedToday == false)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif  setLastlastVisitCookie();  window.location
="http://www.thehungersite.com/"
ExpandedBlockEnd.gif}

None.gif
else
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif  
//window.location="about:blank"
ExpandedBlockEnd.gif
}

None.gif
function getCookieVal (offset)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif  
var endstr = document.cookie.indexOf (";", offset);
InBlock.gif  
if (endstr == -1)
InBlock.gif    endstr 
= document.cookie.length;
InBlock.gif  
return unescape(document.cookie.substring(offset, endstr));
ExpandedBlockEnd.gif}

None.gif
None.gif
function GetCookie (name)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif  
var arg = name + "=";
InBlock.gif  
var alen = arg.length;
InBlock.gif  
var clen = document.cookie.length;
InBlock.gif  
var i = 0;
ExpandedSubBlockStart.gifContractedSubBlock.gif  
while (i < clen) dot.gif{
InBlock.gif    
var j = i + alen;
InBlock.gif    
if (document.cookie.substring(i, j) == arg)
InBlock.gif      
return getCookieVal (j);
InBlock.gif    i 
= document.cookie.indexOf(" ", i) + 1;
InBlock.gif    
if (i == 0break
ExpandedSubBlockEnd.gif  }

InBlock.gif  
return null;
ExpandedBlockEnd.gif}

None.gif
None.gif
function SetCookie (name, value)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif  
var argv = SetCookie.arguments;
InBlock.gif  
var argc = SetCookie.arguments.length;
InBlock.gif  
var expires = (argc > 2? argv[2] : null;
InBlock.gif  
var path = (argc > 3? argv[3] : null;
InBlock.gif  
var domain = (argc > 4? argv[4] : null;
InBlock.gif  
var secure = (argc > 5? argv[5] : false;
InBlock.gif  document.cookie 
= name + "=" + escape (value) +
InBlock.gif    ((expires 
== null? "" : ("; expires=" + expires.toGMTString())) +
InBlock.gif    ((path 
== null? "" : ("; path=" + path)) +
InBlock.gif    ((domain 
== null? "" : ("; domain=" + domain)) +
InBlock.gif    ((secure 
== true? "; secure" : "");
ExpandedBlockEnd.gif}

None.gif
None.gif
function setLastlastVisitCookie ()
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif  
var rightNow = new Date();
InBlock.gif  
var expdate = new Date();
InBlock.gif  expdate.setTime (expdate.getTime() 
+ 1 * (24 * 60 * 60 * 1000)); //+1 day
InBlock.gif
  SetCookie ("lastVisit", rightNow.getTime(), expdate, "/");
ExpandedBlockEnd.gif}

None.gif
None.gif
function ResetCookie()
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif  SetCookie(
"lastVisit"0null"/");
ExpandedBlockEnd.gif}

None.gif
// -->
None.gif
</script>


十一、         Asp.net 中 页面无刷新的做法
asp中为了实现无刷新,常常会将数据提交到隐藏框架中,在asp.net中有一个很简单的设置就可以实现      

None.gif void  Page_Load(Object sender, EventArgs e)      
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {         
InBlock.gif 
this.SmartNavigation = true;
ExpandedBlockEnd.gif       }

或者直接写在<%@ 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的属性

None.gif   public   string  getName
ExpandedBlockStart.gifContractedBlock.gif              
dot.gif {
InBlock.gif                     
get
ExpandedSubBlockStart.gifContractedSubBlock.gif                     
dot.gif{
InBlock.gif                            
return txtNumber.Text ;
ExpandedSubBlockEnd.gif                     }

ExpandedBlockEnd.gif              }

 3、添加传送指令如下:       Server.Transfer ("edit.aspx");
4、第二个页面HTML设置如下:       <%@ Reference Page="page1.aspx" %>
5、声明第一个的变量        public page1 fp1;
6、引用方法              //this.IsPostBack方法用于测试页面是否是回传 

None.gif if  ( ! this .IsPostBack )
ExpandedBlockStart.gifContractedBlock.gif       
dot.gif {
InBlock.gif              fp1
=(page1)Context.Handler ;
InBlock.gif              txtRc.Text 
=fp1.getName;
ExpandedBlockEnd.gif       }

None.gif
None.gif

7、完成!

十四、         Application的事件
None.gif < script language = " C# "  runat = " server " >
None.gif    
void  Application_OnBeginRequest(Object sender, EventArgs E)
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {  
ExpandedBlockEnd.gif    }

None.gif    
void  Application_OnEndRequest(Object sender, EventArgs E)
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif {    }
None.gif
</ script >
None.gif
None.gif


十五、         Session的事件

None.gif void  Session_OnStart()
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {     
InBlock.gif       Session[
"username"]="";//初始化参数
ExpandedBlockEnd.gif
}
 
None.gif
void  Session_OnEnd()
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
ExpandedBlockEnd.gif}

None.gif
None.gif


十六、         在本窗口打开页面       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下载             

None.gif   < script language = " javascript " >
None.gif              
var  strDownloadUrl  =   " http://g.china.msn.com/7MEZH_CN/ZH-CHS/SETUPDL.EXE " ;
ExpandedBlockStart.gifContractedBlock.gif              
function  LaunchDownload() dot.gif {location.href=strDownloadUrl;}
None.gif              
</ script >  
None.gif
None.gif

二十二、            滚动字的做法:
       <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

None.gif DataSet dsXml  = new  DataSet ( " Settings " );
None.gif                     
string  filepath = Server.MapPath ( " file://xml//set.xml " );
None.gif                     dsXml.ReadXml(filepath);
None.gif                     DataGrid1.DataSource 
= dsXml;
None.gif                     Response.Write (
" <br><br><br>第一个连接为: "   +  dsXml.Tables [ " Set " ].Rows[ 0 ][ " ConnectionString1 " ].ToString ());
None.gif                     DataGrid1.DataMember 
= " Set " ;
None.gif                     DataGrid1.DataBind (); 

  二十五、            处理传入的参数
       http://mov.hzgwbn.com/movie.asp?addnew=true
       在void Form_Load()中加入:
       string _addnew=Request.QueryString ["addnew"]; 

二十六、            关于__dopostback()
看看这个吧,可能有用!!

None.gif < SCRIPT language = " JavaScript " >  
None.gif     
<!--  Hide from older browsers
None.gif     
function  GetInput() 
ExpandedBlockStart.gifContractedBlock.gif         
dot.gif
InBlock.gif            input 
= prompt('input value that your want to send server:',''); 
InBlock.gif            
if ((input) && (input!=""))
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif
InBlock.gif               document.forms['Form1'].elements['Hidden1'].value 
= input; 
InBlock.gif               __doPostBack('Button1', ''); 
ExpandedSubBlockEnd.gif            }
 
ExpandedBlockEnd.gif         }
  
None.gif     
//  Stop hiding --> 
None.gif
</ SCRIPT >   
None.gif
None.gif

其中使用了__DoPostBack这个系统的客户端函数,用来激发服务器事件。

2、为了完成这个完整的页面我们需要一个如下的Form

None.gif < form  id ="Form1"  method ="post"  runat ="server" >  
None.gif         
< INPUT  id ="Hidden1"  type ="hidden"  name ="Hidden1"  runat ="server" >  
None.gif         
< asp:Button  id ="Button1"  runat ="server"  Text ="Button" ></ asp:Button >  
None.gif         
< asp:TextBox  id ="TextBox1"  runat ="server" ></ asp:TextBox >
None.gif      
</ 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、我自己的示例οnclick="javascript:if(!confirm('ok')){return};__doPostBack('Button3','');"

6、注意:页面上一定要有LinkButton或是别的可以有__doPostBack的控件 


二十七、            Toolbar
1、用Javascript处理

ContractedBlock.gif ExpandedBlockStart.gif ToolBar
None.gif<script language="javascript">   
None.gif
None.gif
function WitchB()   
None.gif
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{if (event.srcNode!= null)   
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif   
dot.gif{   
InBlock.gif
InBlock.gif     
var bt=event.srcNode.getAttribute("id");   
InBlock.gif
InBlock.gif     
switch (bt)   
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif   
dot.gif{   
InBlock.gif
InBlock.gif   
case "C1":   
InBlock.gif
InBlock.gif       aa();   
InBlock.gif
InBlock.gif       
break;   
InBlock.gif
InBlock.gif          
case "C2":   
InBlock.gif
InBlock.gif         这里调用.aspx.cs中的过程,这句话该怎么写,用__dopostback()
????   
InBlock.gif
InBlock.gif       
break;   
InBlock.gif
ExpandedSubBlockEnd.gif   }
   
InBlock.gif
ExpandedSubBlockEnd.gif   }
   
InBlock.gif
ExpandedBlockEnd.gif}
   
None.gif
None.gif
function aa()   
None.gif
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{dot.gif}   
None.gif
None.gif
</script>   
None.gif
None.gif
<body onload="Toolbar1.onbuttοnclick=WitchB;" MS_POSITIONING="GridLayout">   
None.gif
None.gif


2、在C#中处理

None.gif private   void  Toolbar1_ButtonClick( object  sender, EventArgs e)
None.gif
ExpandedBlockStart.gifContractedBlock.gif              
dot.gif {
InBlock.gif
InBlock.gif                     Response.Write (sender.ToString ());
InBlock.gif
InBlock.gif                     TextBox1.Text 
=sender.ToString ();
InBlock.gif
InBlock.gif                     
if(sender.ToString ()=="ToolbarButton - button1")
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif                     
dot.gif{
InBlock.gif
InBlock.gif                            Response.Redirect (
"http://localhost/htcrm");
InBlock.gif
ExpandedSubBlockEnd.gif                     }

InBlock.gif
ExpandedBlockEnd.gif              }

None.gif

       
二十八、            模式对话框

 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个字符。也可以传递对象,例如:

ContractedBlock.gif ExpandedBlockStart.gif test
None.giftest1.htm
None.gif
None.gif ====================
None.gif
ExpandedBlockStart.gifContractedBlock.gif 
<script>dot.gif
InBlock.gif
InBlock.gif  
var mxh1 = new Array("mxh","net_lover","孟子E章")
InBlock.gif
InBlock.gif  
var mxh2 = window.open("about:blank","window_mxh")
InBlock.gif
InBlock.gif  
// 向对话框传递数组
InBlock.gif

InBlock.gif  window.showModalDialog(
"test2.htm",mxh1)
InBlock.gif
InBlock.gif  
// 向对话框传递window对象
InBlock.gif

InBlock.gif  window.showModalDialog(
"test3.htm",mxh2)
InBlock.gif
ExpandedBlockEnd.gif 
</script>
None.gif test2.htm
None.gif
None.gif ====================
None.gif
ExpandedBlockStart.gifContractedBlock.gif 
<script>dot.gif
InBlock.gif
InBlock.gif  
var a = window.dialogArguments
InBlock.gif
InBlock.gif  alert(
"您传递的参数为:" + a)
InBlock.gif
ExpandedBlockEnd.gif 
</script>
None.gif test3.htm
None.gif
None.gif ====================
None.gif
ExpandedBlockStart.gifContractedBlock.gif 
<script>dot.gif
InBlock.gif
InBlock.gif  
var a = window.dialogArguments
InBlock.gif
InBlock.gif  alert(
"您传递的参数为window对象,名称:" + a.name)
InBlock.gif
ExpandedBlockEnd.gif 
</script> 
None.gif
None.gif
None.gif 可以通过window.returnValue向打开对话框的窗口返回信息,当然也可以是对象。例如: 
None.gif
None.gif
None.gif test4.htm
None.gif
None.gif ===================
None.gif
ExpandedBlockStart.gifContractedBlock.gif 
<script>dot.gif
InBlock.gif
InBlock.gif  
var a = window.showModalDialog("test5.htm")
InBlock.gif
InBlock.gif  
for(i=0;i<a.length;i++) alert(a[i])
InBlock.gif
ExpandedBlockEnd.gif 
</script> 
None.gif
None.gif
None.gif test5.htm
None.gif
None.gif ===================
None.gif
ExpandedBlockStart.gifContractedBlock.gif 
<script>dot.gif
InBlock.gif
InBlock.gif 
function sendTo()
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif 
dot.gif{
InBlock.gif
InBlock.gif  
var a=new Array("a","b")
InBlock.gif
InBlock.gif  window.returnValue 
= a
InBlock.gif
InBlock.gif  window.close()
InBlock.gif
ExpandedSubBlockEnd.gif }

InBlock.gif
ExpandedBlockEnd.gif 
</script>
None.gif
None.gif 
<body>
None.gif
None.gif 
<form>
None.gif
None.gif  
<input value="返回" type=button onclick="sendTo()">
None.gif
None.gif 
</form>


  常见问题:

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

2,  <base target="_self">

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


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

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

 3,我的例子

None.gif     < script language = " javascript " >
None.gif       
function  KDMsgBox(info)
ExpandedBlockStart.gifContractedBlock.gif       
dot.gif {
InBlock.gif              
var sUrl = "messagedlg.jsp?locale=zh_cn";
InBlock.gif              
var sFeature="dialogWidth:368px;dialogHeight:212px;center:yes;help:no;resizable:no;status:no;scroll:no";
InBlock.gif              
var retObj= window.showModalDialog("error.htm",info,sFeature);
InBlock.gif              
return retObj;
ExpandedBlockEnd.gif       }

None.gif       
</ script >

二十九、            防止被别人框架
       加在不想被框架的HTML中的<head></head>中:      

None.gif   < SCRIPT LANGUAGE = javascript >
None.gif         
if  (top.location  !=  self.location) top.location = self.location;
None.gif 
</ SCRIPT >  
None.gif

三十、         在重定向中打开新的Window
       response.write("<script>window.open("store/Shop.Type.aspx?id=9")</script>")  \

三十一、            IE的控制

None.gif < html >
None.gif
< head >
None.gif
< title > IE的控制 </ title >
None.gif
</ head >
None.gif
< body >
None.gif
< href ="#"  onclick =document.execCommand("open") > 打开 </ a >< br >
None.gif   
< href ="#"  onclick =location.replace("view-source:"+location) > 使用 记事本 编辑 </ a >< br >
None.gif   
< href ="#"  onclick =document.execCommand("saveAs") > 另存为 </ a >< br >
None.gif   
< href ="#"  onclick =document.execCommand("print") > 打印 </ a >< br >
None.gif   
< href ="#"  onclick =window.close();return  false) > 关闭本窗口 </ a >< br >
None.gif   
< href ="#"  onclick =document.execCommand("selectAll") > 全选 </ a >< br >
None.gif   
< href ="#"  onclick =location.reload() > 刷新 </ a >< href ="#"  onclick =history.go(0) > 刷新 </ a >< br >  
None.gif   
< href ="#"  onclick =location.replace("view-source:"+location) > 查看源文件 </ a >   < br >
None.gif   
< href ="#"  onclick =window.open(document.location,"url","fullscreen") > 全屏显示 </ a >   < br >  
None.gif   
< href ="javascript:window.external.AddFavorite('http://homepage.yesky.com', '天极网页陶吧')" > 添加到收藏夹 </ a >   < br >
None.gif   
< href ="#"  onclick =window.external.showBrowserUI("OrganizeFavorites",null) > 整理收藏夹 </ a >   < br >
None.gif   
< href ="#"  onclick =window.external.showBrowserUI("PrivacySettings",null) > internet选项 </ a >   < br >
None.gif   
< href ="#"  onclick =history.go(1) > 前进1 </ a >< href ="#"  onclick =history.forward() > 前进2 </ a >< br >
None.gif   
< href ="#"  onclick =history.go(-1) > 后退1 </ a >< href ="#"  onclick =history.back() > 后退2 </ a >< br >
None.gif   
< href ="#"  onclick =setTimeout(window.close(),3000) > 3秒关闭本窗口 </ a >< br >
None.gif
</ body >
None.gif
</ html >   


三十二、            .NET Data Provider(.NET数据驱动)
       .Net 的数据连接可以分为两种方式:

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

       2、OLEDB .NET DATA Provider,支持DBase、Foxpro、Excel、Acess、Oracle等,也可以是Sql Server,但速度不如上一个 


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


三十四、            用DataReader读取数据的过程
       1、使用SqlConnection建立连接

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

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

       4、DataReader常见的方法和属性:

              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)

              2和3的区别在于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的,没有操作数据库,但是我们的目的还是要将数据保存到数据中去,所以我们这里就需要调用DataSetCommand的Update方法。下面的程序显示如何将DataSet的数据交给数据库。
MyComm.Update(MyDataSet);

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


MyComm.Update(MyDataSet,"UserList"); 


三十七、            在线人员
本论坛的在线,没有采用传统数据库表格保存的方式,而是利用Cache来做
这样避免了频繁地读写数据库,但相应地增加了服务器内存的开销
好在Online的开销不是很大,而且是应用程序级,但不知这两种方法孰优孰劣?
源代码如下:

ContractedBlock.gif ExpandedBlockStart.gif 在线人员统计
None.gif//保存在线
None.gif
public void SaveOnline(string userPlace)
None.gif
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif
InBlock.gif    DataTable online;
InBlock.gif
InBlock.gif    
if (HttpContext.Current.Cache["online"]==null)
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif
InBlock.gif        online 
= new DataTable();
InBlock.gif
InBlock.gif        online.Columns.Add(
"onlineID",typeof(string));
InBlock.gif
InBlock.gif        online.Columns.Add(
"userID",typeof(string));
InBlock.gif
InBlock.gif        online.Columns.Add(
"userName",typeof(string));
InBlock.gif
InBlock.gif        online.Columns.Add(
"userLevelName",typeof(string));
InBlock.gif
InBlock.gif        online.Columns.Add(
"userLevelImg",typeof(string));
InBlock.gif
InBlock.gif        online.Columns.Add(
"userIP",typeof(string));
InBlock.gif
InBlock.gif        online.Columns.Add(
"userPlace",typeof(string));
InBlock.gif
InBlock.gif        online.Columns.Add(
"logoTime",typeof(DateTime));
InBlock.gif
InBlock.gif        online.Columns.Add(
"actionTime",typeof(DateTime));
InBlock.gif
InBlock.gif        online.Columns.Add(
"userOS",typeof(string));
InBlock.gif
InBlock.gif        online.Columns.Add(
"userCLR",typeof(string));
InBlock.gif
InBlock.gif        online.Columns.Add(
"userBorwser",typeof(string));
InBlock.gif
InBlock.gif        
InBlock.gif
InBlock.gif        HttpContext.Current.Cache[
"online"= online;
InBlock.gif
ExpandedSubBlockEnd.gif    }
 
InBlock.gif
InBlock.gif
InBlock.gif    DataRow[] dr1;
InBlock.gif
InBlock.gif    DataRow   dr2;
InBlock.gif
InBlock.gif    online 
= (DataTable)HttpContext.Current.Cache["online"];
InBlock.gif
InBlock.gif    dr1 
= online.Select("onlineID='" + onlineID + "'");
InBlock.gif
InBlock.gif    
if (dr1.Length>0)
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif
InBlock.gif        dr1[
0][1= UserID;
InBlock.gif
InBlock.gif        dr1[
0][2= UserName;
InBlock.gif
InBlock.gif        dr1[
0][4= UserLevelImg;
InBlock.gif
InBlock.gif        dr1[
0][6= userPlace;
InBlock.gif
InBlock.gif        dr1[
0][8= DateTime.Now;
InBlock.gif
InBlock.gif        online.AcceptChanges();
InBlock.gif
ExpandedSubBlockEnd.gif    }

InBlock.gif
InBlock.gif    
else
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif
InBlock.gif        dr2 
= online.NewRow();
InBlock.gif
InBlock.gif        dr2[
0= onlineID;
InBlock.gif
InBlock.gif        dr2[
1= UserID;
InBlock.gif
InBlock.gif        dr2[
2= UserName;
InBlock.gif
InBlock.gif        dr2[
3= userLevelName;
InBlock.gif
InBlock.gif        dr2[
4= UserLevelImg;
InBlock.gif
InBlock.gif        dr2[
5= UserIP;
InBlock.gif
InBlock.gif        dr2[
6= userPlace;
InBlock.gif
InBlock.gif        dr2[
7= DateTime.Now;
InBlock.gif
InBlock.gif        dr2[
8= DateTime.Now;
InBlock.gif
InBlock.gif        dr2[
9= UserOS;
InBlock.gif
InBlock.gif        dr2[
10= UserCLR;
InBlock.gif
InBlock.gif        dr2[
11= UserBrowser;
InBlock.gif
InBlock.gif        online.Rows.Add(dr2);
InBlock.gif
ExpandedSubBlockEnd.gif    }

InBlock.gif
InBlock.gif    DeleteOnline();
InBlock.gif
ExpandedBlockEnd.gif}

None.gif
None.gif
None.gif 
None.gif
None.gif
None.gif 
None.gif
None.gif
None.gif
//清除超时用户
None.gif

None.gif
private void DeleteOnline()
None.gif
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif
InBlock.gif    DataTable online 
= (DataTable)HttpContext.Current.Cache["online"];
InBlock.gif
InBlock.gif    
for (int i=0;i<online.Rows.Count;i++)
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif
InBlock.gif        
if (Convert.ToDateTime(online.Rows[i][7])<DateTime.Now.AddMinutes(-10.0))
InBlock.gif
InBlock.gif            online.Rows[i].Delete();
InBlock.gif
ExpandedSubBlockEnd.gif    }

InBlock.gif
InBlock.gif    online.AcceptChanges();
InBlock.gif
ExpandedBlockEnd.gif}

None.gif
None.gif

三十八、            关于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; 
 
三十九、            关于呼出表单
注:本处所指表单就是层 

None.gif < SCRIPT LANGUAGE = 'JavaScript' >  
None.gif
None.gif       
function  showdtablesearchlay()
None.gif
ExpandedBlockStart.gifContractedBlock.gif              
dot.gif {
InBlock.gif
InBlock.gif                     
if (document.getElementById('dtablesearch'))
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif                     
dot.gif{
InBlock.gif
InBlock.gif                            
var x=window.screen.width;
InBlock.gif
InBlock.gif                            
var y=window.screen.height;
InBlock.gif
InBlock.gif                            dtablesearch.style.left
=(x-360)/2;dtablesearch.style.top=(y-360)/2;
InBlock.gif
InBlock.gif                            dtablesearch.style.visibility
='visible';
InBlock.gif
ExpandedSubBlockEnd.gif                     }

InBlock.gif
ExpandedBlockEnd.gif              }

None.gif
None.gif       
function  hiddendtablesearchlay()
None.gif
ExpandedBlockStart.gifContractedBlock.gif              
dot.gif {
InBlock.gif
InBlock.gif                     
if (document.getElementById('dtablesearch'))
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif                     
dot.gif{
InBlock.gif
InBlock.gif                            dtablesearch.style.visibility
='hidden';
InBlock.gif
ExpandedSubBlockEnd.gif                     }

InBlock.gif
ExpandedBlockEnd.gif              }

None.gif
None.gif
</ SCRIPT >
None.gif
None.gif


附:建立一个浮动表单 
<div id='dtablesearch' style="position:absolute; width: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:下拉菜单

ContractedBlock.gif ExpandedBlockStart.gif 下拉菜单
None.gif<script Language="JavaScript">
None.gif
None.gif
//***********默认设置定义.*********************
None.gif

None.giftPopWait
=50;//停留tWait豪秒后显示提示。
None.gif

None.giftPopShow
=5000;//显示tShow豪秒后关闭提示
None.gif

None.gifshowPopStep
=20;
None.gif
None.gifpopOpacity
=99
None.gif
None.gif
None.gif
//***************内部变量定义*****************
None.gif

None.gifsPop
=null;
None.gif
None.gifcurShow
=null;
None.gif
None.giftFadeOut
=null;
None.gif
None.giftFadeIn
=null;
None.gif
None.giftFadeWaiting
=null
None.gif
None.gif
None.gifdocument.write(
"<style type='text/css'id='defaultPopStyle'>");
None.gif
None.gifdocument.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)}");
None.gif
None.gifdocument.write(
"</style>");
None.gif
None.gifdocument.write(
"<div id='dypopLayer' style='position:absolute;z-index:1000;' class='cPopText'></div>");  
None.gif
None.gif
ExpandedBlockStart.gifContractedBlock.gif
function showPopupText()dot.gif{
InBlock.gif
InBlock.gif
var o=event.srcElement;
InBlock.gif
InBlock.gif       MouseX
=event.x;
InBlock.gif
InBlock.gif       MouseY
=event.y;
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif       
if(o.alt!=null && o.alt!="")dot.gif{o.dypop=o.alt;o.alt=""};
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif        
if(o.title!=null && o.title!="")dot.gif{o.dypop=o.title;o.title=""};
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif       
if(o.dypop!=sPop) dot.gif{
InBlock.gif
InBlock.gif                     sPop
=o.dypop;
InBlock.gif
InBlock.gif                     clearTimeout(curShow);
InBlock.gif
InBlock.gif                     clearTimeout(tFadeOut);
InBlock.gif
InBlock.gif                     clearTimeout(tFadeIn);
InBlock.gif
InBlock.gif                     clearTimeout(tFadeWaiting);  
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif                     
if(sPop==null || sPop==""dot.gif{
InBlock.gif
InBlock.gif                            dypopLayer.innerHTML
="";
InBlock.gif
InBlock.gif                            dypopLayer.style.filter
="Alpha()";
InBlock.gif
InBlock.gif                            dypopLayer.filters.Alpha.opacity
=0;      
InBlock.gif
ExpandedSubBlockEnd.gif                            }

InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif                     
else dot.gif{
InBlock.gif
InBlock.gif                            
if(o.dyclass!=null) popStyle=o.dyclass 
InBlock.gif
InBlock.gif                                   
else popStyle="cPopText";
InBlock.gif
InBlock.gif                            curShow
=setTimeout("showIt()",tPopWait);
InBlock.gif
ExpandedSubBlockEnd.gif                     }

InBlock.gif
InBlock.gif                     
InBlock.gif
ExpandedSubBlockEnd.gif       }

InBlock.gif
ExpandedBlockEnd.gif}

None.gif
None.gif
None.gif 
None.gif
None.gif
None.gif 
None.gif
None.gif
ExpandedBlockStart.gifContractedBlock.gif
function showIt()dot.gif{
InBlock.gif
InBlock.gif              dypopLayer.className
=popStyle;
InBlock.gif
InBlock.gif              dypopLayer.innerHTML
=sPop;
InBlock.gif
InBlock.gif              popWidth
=dypopLayer.clientWidth;
InBlock.gif
InBlock.gif              popHeight
=dypopLayer.clientHeight;
InBlock.gif
InBlock.gif              
if(MouseX+12+popWidth>document.body.clientWidth) popLeftAdjust=-popWidth-24
InBlock.gif
InBlock.gif                     
else popLeftAdjust=0;
InBlock.gif
InBlock.gif              
if(MouseY+12+popHeight>document.body.clientHeight) popTopAdjust=-popHeight-24
InBlock.gif
InBlock.gif                     
else popTopAdjust=0;
InBlock.gif
InBlock.gif              dypopLayer.style.left
=MouseX+12+document.body.scrollLeft+popLeftAdjust;
InBlock.gif
InBlock.gif              dypopLayer.style.top
=MouseY+12+document.body.scrollTop+popTopAdjust;
InBlock.gif
InBlock.gif              dypopLayer.style.filter
="Alpha(Opacity=0)";
InBlock.gif
InBlock.gif              fadeOut();
InBlock.gif
ExpandedBlockEnd.gif}

None.gif
None.gif
None.gif 
None.gif
None.gif
None.gif 
None.gif
None.gif
ExpandedBlockStart.gifContractedBlock.gif
function fadeOut()dot.gif{
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif       
if(dypopLayer.filters.Alpha.opacity<popOpacity) dot.gif{
InBlock.gif
InBlock.gif              dypopLayer.filters.Alpha.opacity
+=showPopStep;
InBlock.gif
InBlock.gif              tFadeOut
=setTimeout("fadeOut()",1);
InBlock.gif
ExpandedSubBlockEnd.gif              }

InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif              
else dot.gif{
InBlock.gif
InBlock.gif                     dypopLayer.filters.Alpha.opacity
=popOpacity;
InBlock.gif
InBlock.gif                     tFadeWaiting
=setTimeout("fadeIn()",tPopShow);
InBlock.gif
ExpandedSubBlockEnd.gif                     }

InBlock.gif
ExpandedBlockEnd.gif}

None.gif
None.gif
None.gif 
None.gif
None.gif
None.gif 
None.gif
None.gif
ExpandedBlockStart.gifContractedBlock.gif
function fadeIn()dot.gif{
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif       
if(dypopLayer.filters.Alpha.opacity>0dot.gif{
InBlock.gif
InBlock.gif              dypopLayer.filters.Alpha.opacity
-=1;
InBlock.gif
InBlock.gif              tFadeIn
=setTimeout("fadeIn()",1);
InBlock.gif
ExpandedSubBlockEnd.gif              }

InBlock.gif
ExpandedBlockEnd.gif}

None.gif
None.gifdocument.onmouseover
=showPopupText;
None.gif
None.gif
None.gif 
None.gif
None.gif
None.gif 
None.gif
None.gif
ExpandedBlockStart.gifContractedBlock.gif
function CheckAll(form)  dot.gif{
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif  
for (var i=0;i<form.elements.length;i++)    dot.gif{
InBlock.gif
InBlock.gif    
var e = form.elements[i];
InBlock.gif
InBlock.gif    
if (e.name != 'chkall')       e.checked = form.chkall.checked; 
InBlock.gif
ExpandedSubBlockEnd.gif   }

InBlock.gif
ExpandedBlockEnd.gif  }

None.gif
None.gif
None.gif 
None.gif
None.gif
None.gif 
None.gif
None.gif
None.gif
//下拉菜单相关代码
None.gif

None.gif 
var h;
None.gif
None.gif 
var w;
None.gif
None.gif 
var l;
None.gif
None.gif 
var t;
None.gif
None.gif 
var topMar = 1;
None.gif
None.gif 
var leftMar = -2;
None.gif
None.gif 
var space = 1;
None.gif
None.gif 
var isvisible;
None.gif
None.gif 
var MENU_SHADOW_COLOR='#999999';//定义下拉菜单阴影色
None.gif

None.gif 
var global = window.document
None.gif
None.gif global.fo_currentMenu 
= null
None.gif
None.gif global.fo_shadows 
= new Array
None.gif
None.gif
None.gif 
None.gif
None.gif
None.gif 
None.gif
None.gif
None.gif
function HideMenu() 
None.gif
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif
InBlock.gif 
var mX;
InBlock.gif
InBlock.gif 
var mY;
InBlock.gif
InBlock.gif 
var vDiv;
InBlock.gif
InBlock.gif 
var mDiv;
InBlock.gif
InBlock.gif       
if (isvisible == true)
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif
dot.gif{
InBlock.gif
InBlock.gif              vDiv 
= document.all("menuDiv");
InBlock.gif
InBlock.gif              mX 
= window.event.clientX + document.body.scrollLeft;
InBlock.gif
InBlock.gif              mY 
= window.event.clientY + document.body.scrollTop;
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif              
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))dot.gif{
InBlock.gif
InBlock.gif                     vDiv.style.visibility 
= "hidden";
InBlock.gif
InBlock.gif                     isvisible 
= false;
InBlock.gif
ExpandedSubBlockEnd.gif              }

InBlock.gif
ExpandedSubBlockEnd.gif}

InBlock.gif
ExpandedBlockEnd.gif}

None.gif
None.gif
None.gif 
None.gif
None.gif
None.gif 
None.gif
None.gif
ExpandedBlockStart.gifContractedBlock.gif
function ShowMenu(vMnuCode,tWidth) dot.gif{
InBlock.gif
InBlock.gif       vSrc 
= window.event.srcElement;
InBlock.gif
InBlock.gif       vMnuCode 
= "<table id='submenu' cellspacing=1 cellpadding=3 style='width:"+tWidth+"' class=tableborder1 οnmοuseοut='HideMenu()'><tr height=23><td nowrap align=left class=tablebody1>" + vMnuCode + "</td></tr></table>";
InBlock.gif
InBlock.gif
InBlock.gif 
InBlock.gif
InBlock.gif
InBlock.gif 
InBlock.gif
InBlock.gif
InBlock.gif       h 
= vSrc.offsetHeight;
InBlock.gif
InBlock.gif       w 
= vSrc.offsetWidth;
InBlock.gif
InBlock.gif       l 
= vSrc.offsetLeft + leftMar+4;
InBlock.gif
InBlock.gif       t 
= vSrc.offsetTop + topMar + h + space-2;
InBlock.gif
InBlock.gif       vParent 
= vSrc.offsetParent;
InBlock.gif
InBlock.gif       
while (vParent.tagName.toUpperCase() != "BODY")
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif       
dot.gif{
InBlock.gif
InBlock.gif              l 
+= vParent.offsetLeft;
InBlock.gif
InBlock.gif              t 
+= vParent.offsetTop;
InBlock.gif
InBlock.gif              vParent 
= vParent.offsetParent;
InBlock.gif
ExpandedSubBlockEnd.gif       }

InBlock.gif
InBlock.gif
InBlock.gif 
InBlock.gif
InBlock.gif
InBlock.gif 
InBlock.gif
InBlock.gif
InBlock.gif       menuDiv.innerHTML 
= vMnuCode;
InBlock.gif
InBlock.gif       menuDiv.style.top 
= t;
InBlock.gif
InBlock.gif       menuDiv.style.left 
= l;
InBlock.gif
InBlock.gif       menuDiv.style.visibility 
= "visible";
InBlock.gif
InBlock.gif       isvisible 
= true;
InBlock.gif
InBlock.gif    makeRectangularDropShadow(submenu, MENU_SHADOW_COLOR, 
4)
InBlock.gif
ExpandedBlockEnd.gif}

None.gif
None.gif
None.gif 
None.gif
None.gif
None.gif 
None.gif
None.gif
None.gif
function makeRectangularDropShadow(el, color, size)
None.gif
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif
InBlock.gif       
var i;
InBlock.gif
InBlock.gif       
for (i=size; i>0; i--)
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif       
dot.gif{
InBlock.gif
InBlock.gif              
var rect = document.createElement('div');
InBlock.gif
InBlock.gif              
var rs = rect.style
InBlock.gif
InBlock.gif              rs.position 
= 'absolute';
InBlock.gif
InBlock.gif              rs.left 
= (el.style.posLeft + i) + 'px';
InBlock.gif
InBlock.gif              rs.top 
= (el.style.posTop + i) + 'px';
InBlock.gif
InBlock.gif              rs.width 
= el.offsetWidth + 'px';
InBlock.gif
InBlock.gif              rs.height 
= el.offsetHeight + 'px';
InBlock.gif
InBlock.gif              rs.zIndex 
= el.style.zIndex - i;
InBlock.gif
InBlock.gif              rs.backgroundColor 
= color;
InBlock.gif
InBlock.gif              
var opacity = 1 - i / (i + 1);
InBlock.gif
InBlock.gif              rs.filter 
= 'alpha(opacity=+ (100 * opacity) + ')';
InBlock.gif
InBlock.gif              el.insertAdjacentElement('afterEnd', rect);
InBlock.gif
InBlock.gif              global.fo_shadows[global.fo_shadows.length] 
= rect;
InBlock.gif
ExpandedSubBlockEnd.gif       }

InBlock.gif
ExpandedBlockEnd.gif}

None.gif


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

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

然后在程序中采用以下方式访问
System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]
这样做的好处非常明显:当数据库有变动的时候,只需要改变web.config中的连接字符串,而不需要重新编译整个应用程序,给应用的部署和移植带来非常大的方便。
附:写入Web.config的函数

None.gif  ///  < summary >
None.gif
None.gif  ///  修改web.config文件appSettings配置节中的Add里的value属性
None.gif
None.gif  /// 
</ summary >
None.gif
None.gif  /// 
< remarks >
None.gif
None.gif  ///  注意,调用该函数后,会使整个Web Application重启,导致当前所有的会话丢失
None.gif
None.gif  /// 
</ remarks >
None.gif
None.gif  /// 
< param  name ="key" > 要修改的键key </ param >
None.gif
None.gif  /// 
< param  name ="strValue" > 修改后的value </ param >
None.gif
None.gif  /// 
< exception  cref ="" > 找不到相关的键 </ exception >
None.gif
None.gif  /// 
< exception  cref ="" > 权限不够,无法保存到web.config文件中 </ exception >
None.gif

ContractedBlock.gif ExpandedBlockStart.gif 修改Web.Config
None.gifpublic void Modify(string key,string strValue)
None.gif
ExpandedBlockStart.gifContractedBlock.gif  
dot.gif{
InBlock.gif
InBlock.gif   
string XPath="/configuration/appSettings/add[@key='?']";
InBlock.gif
InBlock.gif   XmlDocument domWebConfig
=new XmlDocument();
InBlock.gif
InBlock.gif   
InBlock.gif
InBlock.gif   domWebConfig.Load( (HttpContext.Current.Server.MapPath(
"web.config")) );
InBlock.gif
InBlock.gif   XmlNode addKey
=domWebConfig.SelectSingleNode( (XPath.Replace("?",key)) );
InBlock.gif
InBlock.gif   
if(addKey == null)
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif   
dot.gif{
InBlock.gif
InBlock.gif    
throw new ArgumentException("没有找到<add key='"+key+"' value=dot.gif/>的配置节");
InBlock.gif
ExpandedSubBlockEnd.gif   }

InBlock.gif
InBlock.gif   addKey.Attributes[
"value"].InnerText=strValue;
InBlock.gif
InBlock.gif   domWebConfig.Save( (HttpContext.Current.Server.MapPath(
"web.config")) );
InBlock.gif
InBlock.gif   
InBlock.gif
ExpandedBlockEnd.gif  }

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

None.gif declare   @RunTime   char ( 5 )
None.gif
None.gif
declare   @String   char ( 100 )
None.gif
None.gif
set   @RunTime = left ( convert ( char ( 5 ), getdate (), 8 ), 2 +   ' : '   +   convert ( char ( 2 ), convert ( int , right ( convert ( char ( 5 ), getdate (), 8 ), 2 ) ) + 1 , 2 )
None.gif
None.gif
set   @String = ' at  ' +   @RunTime   +   '  /interactive  '   +   '  C:windowssystem32 otepad.exe '
None.gif
None.gif
exec  ( ' master..xp_cmdshell " ' + @String   + ' " ' )


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

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

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

ContractedBlock.gif ExpandedBlockStart.gif 右键弹出菜单
None.gif<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >  
None.gif
None.gif
None.gif
<html>
None.gif
None.gif  
<head>
None.gif
None.gif    
<title>PopupMenuTest</title>
None.gif
None.gif    
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
None.gif
None.gif    
<meta name="CODE_LANGUAGE" Content="C#">
None.gif
None.gif    
<meta name=vs_defaultClientScript content="JavaScript">
None.gif
None.gif    
<meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
None.gif
None.gif  
</head>
None.gif
None.gif  
<body MS_POSITIONING="GridLayout" oncontextmenu="return DisplayPopupMenu();">
None.gif
ExpandedBlockStart.gifContractedBlock.gif        
<script language="javascript">dot.gif
InBlock.gif
InBlock.gif        
function DisplayPopupMenu()
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif
InBlock.gif            menuTree.show(event.x, event.y);
InBlock.gif
InBlock.gif            
return false;
InBlock.gif
ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif        
InBlock.gif
InBlock.gif        
function menuTreeBeforePopup()
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif
ExpandedSubBlockEnd.gif        }

InBlock.gif
InBlock.gif        
InBlock.gif
InBlock.gif        
function menuTreeClick(objTree)
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif
InBlock.gif            
InBlock.gif
InBlock.gif            
switch(event.menuData)
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif            
dot.gif{
InBlock.gif
InBlock.gif                
case "refresh":    alert('refresh clicked.');
InBlock.gif
InBlock.gif                                
break;
InBlock.gif
InBlock.gif                
case "property":alert('property clicked.');
InBlock.gif
InBlock.gif                                
break;
InBlock.gif
InBlock.gif                
case "message":alert('message clicked.');
InBlock.gif
InBlock.gif                                
break;
InBlock.gif
InBlock.gif                
case "email":alert('email clicked.');
InBlock.gif
InBlock.gif                                
break;
InBlock.gif
ExpandedSubBlockEnd.gif            }

InBlock.gif
ExpandedSubBlockEnd.gif        }

InBlock.gif
ExpandedBlockEnd.gif        
</script>
None.gif
None.gif    
<form id="Form1" method="post" runat="server">
None.gif
None.gif        
<?XML:NAMESPACE PREFIX="hGui" /><?import namespace="hGui" implementation="/webcontrols/sMenu.htc" />
None.gif
None.gif        <hGui:smenu id="menuTree" onmenuclick="menuTreeClick()" onbeforepopup="menuTreeBeforePopup();" style="Z-INDEX: 100">
None.gif
None.gif            刷新,,,,./images/refresh.gif,refresh;
None.gif
None.gif            新建,subMenu1,,,,submenu1;
None.gif
None.gif            -,0,,,,;
None.gif
None.gif            属性,,,,./images/property.gif,property
None.gif
None.gif        </hGui:smenu>
None.gif
None.gif        
None.gif
None.gif        <?XML:NAMESPACE PREFIX="hGui" /><?import namespace="hGui" implementation="/webcontrols/sMenu.htc" />
None.gif
None.gif        
None.gif
None.gif        <hGui:smenu id="subMenu1" onmenuclick="menuTreeClick()" onbeforepopup="menuTreeBeforePopup();" style="Z-INDEX: 100">
None.gif
None.gif            短消息,,,,./images/refresh.gif,message;
None.gif
None.gif            -,0,,,,;
None.gif
None.gif            发送E-Mail,,,,./images/property.gif,email
None.gif
None.gif        </hGui:smenu>
None.gif
None.gif     </form>
None.gif
None.gif  </body>
None.gif
None.gif</html>


四十三、            contentEditable="true" 的妙用 - 打印
不知道各位有没有做过用于打印的Web页。
我帮客户做这个页面的时候,喜欢把某些区域定为contentEditable="true",目的是让客户可以随便修改这些地方。
例如:
<Asp:Panel runat=server contentEditable="true"/>..<Asp:Label runat=server id=PrintTitle Text=PrintTitle/>..</Asp:Panel> 


四十四、            防止重复提交

ContractedBlock.gif ExpandedBlockStart.gif 防止重复提交
ExpandedBlockStart.gifContractedBlock.giffunction _doPostBack()dot.gif{};
None.gif
None.gif
if(typeof("__doPostBack")=="function")
None.gif
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif
InBlock.gif       _doPostBack
=__doPostBack;
InBlock.gif
InBlock.gif       __doPostBack
=_doPostBackNew;
InBlock.gif
ExpandedBlockEnd.gif}

None.gifdocument.attachEvent(
"onmousemove",_onmousemove);
None.gif
None.gif
var _isPosting=false;
None.gif
None.gif
var _divMask=null;
None.gif
None.gif
function _onmousemove()
None.gif
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif
InBlock.gif       
if(_divMask)
InBlock.gif
InBlock.gif       
with(_divMask.runtimeStyle)
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif       
dot.gif{
InBlock.gif
InBlock.gif              left
=event.clientX+document.body.scrollLeft-4;
InBlock.gif
InBlock.gif              top
=event.clientY+document.body.scrollTop-4;
InBlock.gif
ExpandedSubBlockEnd.gif       }

InBlock.gif
ExpandedBlockEnd.gif}

None.gif
None.gif
function _makeMask()
None.gif
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif
InBlock.gif       
var div=document.createElement("DIV");
InBlock.gif
InBlock.gif       
with(div.runtimeStyle)
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif       
dot.gif{
InBlock.gif
InBlock.gif              position
="absolute";
InBlock.gif
InBlock.gif              zIndex
=999999;
InBlock.gif
InBlock.gif              fontSize
="1px";
InBlock.gif
InBlock.gif              left
=event.clientX+document.body.scrollLeft-4;
InBlock.gif
InBlock.gif              top
=event.clientY+document.body.scrollTop-4;
InBlock.gif
InBlock.gif              width
="8px";
InBlock.gif
InBlock.gif              height
="8px";
InBlock.gif
InBlock.gif              cursor
="wait";
InBlock.gif
InBlock.gif              
InBlock.gif
InBlock.gif              backgroundColor
="gray";
InBlock.gif
InBlock.gif              filter
="alpha(opacity=10)";
InBlock.gif
ExpandedSubBlockEnd.gif       }

InBlock.gif
InBlock.gif       
try
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif       
dot.gif{
InBlock.gif
InBlock.gif              document.body.insertAdjacentElement(
"BeforeEnd",div);
InBlock.gif
InBlock.gif              div.onblur
=new Function("this.focus()");
InBlock.gif
InBlock.gif              div.focus();
InBlock.gif
ExpandedSubBlockEnd.gif       }

InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif       
catch(x)dot.gif{}
InBlock.gif
InBlock.gif       
InBlock.gif
InBlock.gif       
if(_divMask)_divMask.removeNode(true);
InBlock.gif
InBlock.gif       _divMask
=div;
InBlock.gif
ExpandedBlockEnd.gif}

None.gif
None.gif
function _doPostBackNew(sender,args)
None.gif
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif
InBlock.gif       
if(_isPosting)
InBlock.gif
InBlock.gif              
return event.returnValue=!(event.cancelBubble=true);
InBlock.gif
InBlock.gif       status
="正在更新页面dot.gif";
InBlock.gif
InBlock.gif       _doPostBack(sender,args);           
InBlock.gif
InBlock.gif       _isPosting
=true;
InBlock.gif
InBlock.gif       _makeMask();
InBlock.gif
ExpandedBlockEnd.gif}

None.gif
None.gif
None.gif
function _onformsubmit()
None.gif
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif
InBlock.gif       
if(_isPosting)
InBlock.gif
InBlock.gif              
return event.returnValue=!(event.cancelBubble=true);
InBlock.gif
InBlock.gif       _isPosting
=true;
InBlock.gif
InBlock.gif       _makeMask();
InBlock.gif
ExpandedBlockEnd.gif}

None.gif
None.gif
new function _attachForms()
None.gif
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{
InBlock.gif
InBlock.gif       
with(new Enumerator(document.forms))
InBlock.gif
InBlock.gif       
for(;!atEnd();moveNext())
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif       
dot.gif{
InBlock.gif
InBlock.gif              item().attachEvent(
"onsubmit",_onformsubmit);
InBlock.gif
InBlock.gif              
var div=document.createElement("div");
InBlock.gif
InBlock.gif              div.runtimeStyle.width
="0px";
InBlock.gif
InBlock.gif              div.runtimeStyle.hight
="0px";
InBlock.gif
InBlock.gif              div.runtimeStyle.overflow
="hidden";
InBlock.gif
InBlock.gif              div.runtimeStyle.position
="absolute";
InBlock.gif
InBlock.gif              item(
0).insertAdjacentElement("afterbegin",div);
InBlock.gif
InBlock.gif              div.innerHTML
="<INPUT TYPE=Submit name='webformpatchsubmitelement' οnclick='return event.returnValue=false' id='webformpatchsubmitelement' value='webformpatchsubmitelement'/>";
InBlock.gif
ExpandedSubBlockEnd.gif       }

InBlock.gif
ExpandedBlockEnd.gif}
 

把这个作为 <-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代码:

ContractedBlock.gif ExpandedBlockStart.gif 实现文本框焦点自佛那个跳转通过回车实现提交
None.gif<script language="JavaScript">
None.gifNS4 
= (document.layers) ? true : false;
None.gif
function checkEnter(event,element)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif{     
InBlock.gif    
var code = 0;
InBlock.gif    
if (NS4)
InBlock.gif        code 
= event.which;
InBlock.gif    
else
InBlock.gif        code 
= event.keyCode;
InBlock.gif
InBlock.gif    
if (code==13)
ExpandedSubBlockStart.gifContractedSubBlock.gif     
dot.gif{
InBlock.gif         
if(element.name=='tbUserName')//tbUserName-用户名文本框的Name
ExpandedSubBlockStart.gifContractedSubBlock.gif
         dot.gif{              document.frmLogin.tbPassword.focus();//frmLogin-表单名称,tbPassword-密码文本杠框的Name
ExpandedSubBlockEnd.gif
         }

InBlock.gif         
if(element.name=='tbPassword')
ExpandedSubBlockStart.gifContractedSubBlock.gif         
dot.gif{
InBlock.gif              
//document.frmLogin.submit();用这种方式提交,Asp.net页面会闪一下,但实际并未提交
InBlock.gif
              //用下面的代码才能提交,我是从asp.net生成的页面中查看源文件然后复制出来的
InBlock.gif
              if (typeof(Page_ClientValidate) != 'function||  Page_ClientValidate()) __doPostBack('lblLogin','');
ExpandedSubBlockEnd.gif         }

ExpandedSubBlockEnd.gif     }

ExpandedBlockEnd.gif}

None.gif
</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")+"file://LoginScript.js/");

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

sr.Close();

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

ContractedBlock.gif ExpandedBlockStart.gif 显示和隐藏主菜单
None.gif<script LANGUAGE="JavaScript">
None.gif
None.gif       
function toggleMenu()
None.gif
ExpandedBlockStart.gifContractedBlock.gif       
dot.gif{
InBlock.gif
InBlock.gif         
InBlock.gif
InBlock.gif         
// hide the menu 
InBlock.gif

InBlock.gif         
if(document.all.toggleMenuImg.value == '1')
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif         
dot.gif{
InBlock.gif
InBlock.gif           document.all.toggleMenuImg.value 
= '0';
InBlock.gif
InBlock.gif           document.all.toggleMenuImg.src
="images/tbnt_mc.gif";
InBlock.gif
InBlock.gif           top.document.getElementById('WindowLeft').cols 
= "0px,*";
InBlock.gif
ExpandedSubBlockEnd.gif         }

InBlock.gif
InBlock.gif         
// display the menu
InBlock.gif

InBlock.gif         
else
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif         
dot.gif{
InBlock.gif
InBlock.gif           document.all.toggleMenuImg.value 
= '1';
InBlock.gif
InBlock.gif           document.all.toggleMenuImg.src
="images/tbtn_mo.gif";
InBlock.gif
InBlock.gif           top.document.getElementById('WindowLeft').cols 
= "170px,*";
InBlock.gif
ExpandedSubBlockEnd.gif         }

InBlock.gif
InBlock.gif         
InBlock.gif
ExpandedBlockEnd.gif       }

None.gif
None.gif
</script>
None.gif
None.gif

四十八、            使用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" οnkeyup="post();" style="Z-INDEX: 101; LEFT: 200px; POSITION: absolute; TOP: 16px"></textarea>

我这里共有二个解决方法(实际上也是一个)
在ASP.NET中,所有的服务器控件提交到服务器的时候,都会调用__doPostBack这个函数,所以,我们第一种方法就是利用__doPostBack

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

ExpandedBlockStart.gif ContractedBlock.gif function  __doPostBack(eventTarget, eventArgument)  dot.gif
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif    
if (theForm.onsubmit == null || theForm.onsubmit()) dot.gif
InBlock.gif
InBlock.gif        theForm.__EVENTTARGET.value 
= eventTarget; 
InBlock.gif
InBlock.gif        theForm.__EVENTARGUMENT.value 
= eventArgument; 
InBlock.gif
InBlock.gif        theForm.submit(); 
InBlock.gif
ExpandedSubBlockEnd.gif    }
 
InBlock.gif
ExpandedBlockEnd.gif}
 


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

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

为方便查看我就直接在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> 

五十三、            关掉FrameSet(上级窗口) 

top.location.href='javascript:window.close()';

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值