一、 关于DataGrid的分页
除了设置:AllowPaging是指允许分页,这个是最主要的。有了它,我们才能分页。PageSize是指定每页显示的记录数,如果不写,就会默认为10条。另外,还要加入:
OnPageIndexChanged
=
"
DataGrid1_PageIndexChanged
"
public
void
DataGrid1_PageIndexChanged(
object
sender, DataGridPageChangedEventArgs e)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{ DataGrid1.CurrentPageIndex =e.NewPageIndex;
DataGrid1.DataBind();
}
二、 关于上传文件
上传文件应加入: <form id="Form1" enctype="multipart/form-data" method="post" runat="server">
源文件里边加入:
上传文件
if(File1.PostedFile !=null)
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
File1.PostedFile.SaveAs (Server.MapPath ("file://1.jpg/"));
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
Image1.ImageUrl =Server.MapPath ("file://1.jpg/");
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![None.gif](/Images/OutliningIndicators/None.gif)
三、 关于自动刷新
HTML应加入: <meta http-equiv ="REFRESH" content ="10;URL=chat.aspx">
自动窗口ScrollWindow():
自动窗口
<script language =javascript 1.1>
![None.gif](/Images/OutliningIndicators/None.gif)
function scrollWindow()
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
this.scroll(0,65000);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
setTimeout('scrollWindow()',200);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![None.gif](/Images/OutliningIndicators/None.gif)
scrollWindow();
![None.gif](/Images/OutliningIndicators/None.gif)
</script>
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
四、 连到SQL Server数据库
连接SQL Server数据库
string _sql;
![None.gif](/Images/OutliningIndicators/None.gif)
SqlConnection cn;
![None.gif](/Images/OutliningIndicators/None.gif)
_sql="server=localhost;uid=sa;pwd=hz0222;database=Northwind";
![None.gif](/Images/OutliningIndicators/None.gif)
cn=new SqlConnection (_sql);
![None.gif](/Images/OutliningIndicators/None.gif)
cn.Open ();
![None.gif](/Images/OutliningIndicators/None.gif)
//SqlCommand cmd =new SqlCommand ("select * from Products ",cn);
![None.gif](/Images/OutliningIndicators/None.gif)
//SqlDataReader rs;
![None.gif](/Images/OutliningIndicators/None.gif)
//rs=cmd.ExecuteReader();
![None.gif](/Images/OutliningIndicators/None.gif)
SqlDataAdapter da=new SqlDataAdapter ("select * from Products",cn);
![None.gif](/Images/OutliningIndicators/None.gif)
DataSet ds=new DataSet ();
![None.gif](/Images/OutliningIndicators/None.gif)
da.Fill (ds,"Products");
![None.gif](/Images/OutliningIndicators/None.gif)
DataGrid1.DataSource =ds.Tables["Products"].DefaultView ;
![None.gif](/Images/OutliningIndicators/None.gif)
//DataGrid1.CurrentPageIndex = 0;
![None.gif](/Images/OutliningIndicators/None.gif)
DataGrid1.DataBind ();
![None.gif](/Images/OutliningIndicators/None.gif)
cn.Close ();
![None.gif](/Images/OutliningIndicators/None.gif)
五、 查询IP地址
当然记得用引名字空间 System.Net
六、 在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的代码片如下:
<script language="javascript">
![None.gif](/Images/OutliningIndicators/None.gif)
function closeWnd()
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
window.close();
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![None.gif](/Images/OutliningIndicators/None.gif)
</script>
![None.gif](/Images/OutliningIndicators/None.gif)
<input type="button" value='关闭' onclick='closeWnd()'>
![None.gif](/Images/OutliningIndicators/None.gif)
3、 关于Document对象的使用:如果你的窗体(名称是Form1)中有一个控件(名称是Keyword)那么,引用方法为: Document.form1.Keyword.value
4、 相关示例见test_js.sln项目
5、 使用状态条:
<
a
href
="tpage.htm"
temp_href
="tpage.htm"
onMouseOver
="window.status='Just another stupid link
'; return true"
>
![None.gif](/Images/OutliningIndicators/None.gif)
input type="button" name="look" value="?" οnclick="statbar('这是状态条喔
![None.gif](/Images/OutliningIndicators/None.gif)
(statusbar) !');">
![None.gif](/Images/OutliningIndicators/None.gif)
<
input
type
="button"
name
="erase"
value
="d)"
onclick
="statbar('');"
>
![None.gif](/Images/OutliningIndicators/None.gif)
6、使用日期的例子:
<
script language
=
"
LiveScript
"
>
![None.gif](/Images/OutliningIndicators/None.gif)
<!--
Hiding
![None.gif](/Images/OutliningIndicators/None.gif)
today
=
new
Date()
![None.gif](/Images/OutliningIndicators/None.gif)
document.write(
"
?( ??/
"
,today.getHours(),
"
:
"
,today.getMinutes())
![None.gif](/Images/OutliningIndicators/None.gif)
document.write(
"
<br>?) ?- :
"
, today.getMonth()
+
1
,
"
/
"
,today.getDate(),
"
/
"
,today.getYear());
![None.gif](/Images/OutliningIndicators/None.gif)
//
end hiding contents -->
</
script
>
![None.gif](/Images/OutliningIndicators/None.gif)
7、产生随机数
<
script language
=
"
LiveScript
"
>
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
function
RandomNumber()
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
today = new Date();
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
num = Math.abs(Math.sin(today.getTime()));
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
return num;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![None.gif](/Images/OutliningIndicators/None.gif)
</
script
>
![None.gif](/Images/OutliningIndicators/None.gif)
8、打开一个新窗口:
<
SCRIPT LANGUAGE
=
"
javascript
"
>
![None.gif](/Images/OutliningIndicators/None.gif)
<!--
![None.gif](/Images/OutliningIndicators/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](/Images/OutliningIndicators/None.gif)
</
SCRIPT
>
![None.gif](/Images/OutliningIndicators/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、自动关闭窗口
<
script language
=
"
JavaScript
"
>
![None.gif](/Images/OutliningIndicators/None.gif)
function
closeit()
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
setTimeout("self.close()",10000) //毫秒
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![None.gif](/Images/OutliningIndicators/None.gif)
</
script
>
![None.gif](/Images/OutliningIndicators/None.gif)
10、打开窗口之Cookies
回想一下,上面的弹出窗口虽然酷,但是有一点小毛病(沉浸在喜悦之中,一定 没有发现吧?)比如你将上面的脚本放在一个需要频繁经过的页面里(例如首页),那么每次刷新这个页面,窗口都会弹出一次,是不是非常烦人?
有解决的办法吗?Yes! Follow me.我们使用cookie来控制一下就可以了。
首先,将如下代码加入主页面HTML的<HEAD>区:
打开窗口Cookie
<script>
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
function openwin()
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
window.open("page.html","","width=200,height=200")
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![None.gif](/Images/OutliningIndicators/None.gif)
function get_cookie(Name)
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
var search = Name + "="
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
var returnvalue = "";
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
if (document.cookie.length > 0)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
offset = document.cookie.indexOf(search)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
if (offset != -1)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
offset += search.length
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
end = document.cookie.indexOf(";", offset);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
if (end == -1)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
end = document.cookie.length;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
returnvalue=unescape(document.cookie.substring(offset, end))
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
return returnvalue;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![None.gif](/Images/OutliningIndicators/None.gif)
function loadpopup()
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
if (get_cookie('popped')=='')
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
openwin()
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
document.cookie="popped=yes"
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![None.gif](/Images/OutliningIndicators/None.gif)
</script>
![None.gif](/Images/OutliningIndicators/None.gif)
然后,用<body οnlοad="loadpopup()">(注意不是openwin而是loadpop啊!)替换主页面中原有的<BODY>这一句即可。你可以试着刷新一下这个页面或重新进 入该页面,窗口再也不会弹出了。真正的Pop-Only-Once!
写到这里弹出窗口的制作和应用技巧基本上算是完成了!
11、前进后退和定位
<
html
>
<
body
>
<
FORM
NAME
="buttonbar"
>
<
INPUT
TYPE
="button"
VALUE
="Back"
onClick
="history.back()"
>
<
INPUT
TYPE
="button"
VALUE
="JS- Home"
onClick
="location='script.html'"
>
<
INPUT
TYPE
="button"
VALUE
="Next"
onCLick
="history.forward()"
>
</
FORM
>
</
body
>
</
html
>
12、Cookies全部搞定
Cookie操作
<script language="JavaScript">
<!--
var bVisitedToday = false;
var lastVisit = GetCookie("lastVisit");
if (lastVisit != null)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
{
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())
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
bVisitedToday = true;
}
}
if(bVisitedToday == false)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
{
setLastlastVisitCookie(); window.location="http://www.thehungersite.com/"
}
else
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
{
//window.location="about:blank"
}
function getCookieVal (offset)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
{
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}
![None.gif](/Images/OutliningIndicators/None.gif)
function GetCookie (name)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
{
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
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;
}
![None.gif](/Images/OutliningIndicators/None.gif)
function SetCookie (name, value)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
{
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" : "");
}
![None.gif](/Images/OutliningIndicators/None.gif)
function setLastlastVisitCookie ()
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
{
var rightNow = new Date();
var expdate = new Date();
expdate.setTime (expdate.getTime() + 1 * (24 * 60 * 60 * 1000)); //+1 day
SetCookie ("lastVisit", rightNow.getTime(), expdate, "/");
}
![None.gif](/Images/OutliningIndicators/None.gif)
function ResetCookie()
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
{
SetCookie("lastVisit", 0, null, "/");
}
// -->
</script>
十一、 Asp.net 中 页面无刷新的做法
asp中为了实现无刷新,常常会将数据提交到隐藏框架中,在asp.net中有一个很简单的设置就可以实现
void
Page_Load(Object sender, EventArgs e)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
this.SmartNavigation = true;
}
或者直接写在<%@ Page language="c#" Codebehind="AllBook.aspx.cs" SmartNavigation = true AutoEventWireup="false" Inherits="wx.AllBook" %>
十二、 关于Asp的性能优化
前一段时间,因为工作需要,对一旧系统进行了性能优化。环境描述如下:
1.该系统为以信息为主要内容。采用asp实现表现层,数据库采用MS SqlServer 2000 .
2.asp代码混乱,并伴有许多错误,由于错误被屏蔽了,所以,系统才勉强可以使用。
3.所有的数据访问直接通过在asp程序中编写混合代码实现,并在同一文件中重复访问同一张表。
针对以上情况,经过分析,确定一下原则,
1.将数据库的处理和访问逻辑全部写到存储过程中。
2.asp只做显示输出的部分。
3.将原有的bug修正。
4.建立索引,并更改数据访问的sql,注意要点有
1)Where 的条件需要将索引字段的条件置前。
2)不允许出现count(*) ,以count(field1)取代。
3)不允许出现 select * 以select field1,field2 ...等代替
4)尽量不用IN ,采用exits替代
5) 对于单条的Insert Update和delete ,不采用事务,采用事务锁定表,影响并发的效率,某些特殊情况还需要进行
强制不锁表with(nolock)
十三、 关于传值(隐藏代码方式)
1、在第一个页的HTML中,确认Inherits属性添加到@Page指令:<%@ Page language="c#" Inherits="test_js.page1" %>
2、在第一个页中建立一个Public的属性
public
string
getName
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
get
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return txtNumber.Text ;
}
}
3、添加传送指令如下: Server.Transfer ("edit.aspx");
4、第二个页面HTML设置如下: <%@ Reference Page="page1.aspx" %>
5、声明第一个的变量 public page1 fp1;
6、引用方法 //this.IsPostBack方法用于测试页面是否是回传
if
(
!
this
.IsPostBack )
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
fp1=(page1)Context.Handler ;
txtRc.Text =fp1.getName;
}
![None.gif](/Images/OutliningIndicators/None.gif)
7、完成!
十四、 Application的事件
<
script language
=
"
C#
"
runat
=
"
server
"
>
void
Application_OnBeginRequest(Object sender, EventArgs E)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
}
void
Application_OnEndRequest(Object sender, EventArgs E)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{ }
</
script
>
![None.gif](/Images/OutliningIndicators/None.gif)
十五、 Session的事件
void
Session_OnStart()
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
Session["username"]="";//初始化参数
}
void
Session_OnEnd()
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
}
![None.gif](/Images/OutliningIndicators/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"> </td>来合并列,合并行用rowspan,Span的意思是跨度
十九、 DropDownList设置Item被选的方法
DropDownList2.Items.FindByText ("2").Selected =true;
二十、 在HTML中去掉多的边框(整体)
leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"
二十一、 用Java下载
<
script language
=
"
javascript
"
>
var
strDownloadUrl
=
"
http://g.china.msn.com/7MEZH_CN/ZH-CHS/SETUPDL.EXE
"
;
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
function
LaunchDownload()
{location.href=strDownloadUrl;}
</
script
>
![None.gif](/Images/OutliningIndicators/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
DataSet dsXml
=
new
DataSet (
"
Settings
"
);
string
filepath
=
Server.MapPath (
"
file://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()
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
input = prompt('input value that your want to send server:','');
if ((input) && (input!=""))
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
document.forms['Form1'].elements['Hidden1'].value = input;
__doPostBack('Button1', '');
}
}
//
Stop hiding -->
</
SCRIPT
>
![None.gif](/Images/OutliningIndicators/None.gif)
其中使用了__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、我自己的示例οnclick="javascript:if(!confirm('ok')){return};__doPostBack('Button3','');"
6、注意:页面上一定要有LinkButton或是别的可以有__doPostBack的控件
二十七、 Toolbar
1、用Javascript处理
ToolBar
<script language="javascript">
![None.gif](/Images/OutliningIndicators/None.gif)
function WitchB()
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
{if (event.srcNode!= null)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
var bt=event.srcNode.getAttribute("id");
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
switch (bt)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
case "C1":
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
aa();
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
break;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
case "C2":
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
这里调用.aspx.cs中的过程,这句话该怎么写,用__dopostback()????
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
break;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![None.gif](/Images/OutliningIndicators/None.gif)
function aa()
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
{
}
![None.gif](/Images/OutliningIndicators/None.gif)
</script>
![None.gif](/Images/OutliningIndicators/None.gif)
<body onload="Toolbar1.onbuttοnclick=WitchB;" MS_POSITIONING="GridLayout">
![None.gif](/Images/OutliningIndicators/None.gif)
2、在C#中处理
private
void
Toolbar1_ButtonClick(
object
sender, EventArgs e)
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
Response.Write (sender.ToString ());
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
TextBox1.Text =sender.ToString ();
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
if(sender.ToString ()=="ToolbarButton - button1")
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
Response.Redirect ("http://localhost/htcrm");
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.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个字符。也可以传递对象,例如:
test
test1.htm
![None.gif](/Images/OutliningIndicators/None.gif)
====================
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
<script>![dot.gif](/Images/dot.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
var mxh1 = new Array("mxh","net_lover","孟子E章")
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
var mxh2 = window.open("about:blank","window_mxh")
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
// 向对话框传递数组
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
window.showModalDialog("test2.htm",mxh1)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
// 向对话框传递window对象
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
window.showModalDialog("test3.htm",mxh2)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
</script>
test2.htm
![None.gif](/Images/OutliningIndicators/None.gif)
====================
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
<script>![dot.gif](/Images/dot.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
var a = window.dialogArguments
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
alert("您传递的参数为:" + a)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
</script>
test3.htm
![None.gif](/Images/OutliningIndicators/None.gif)
====================
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
<script>![dot.gif](/Images/dot.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
var a = window.dialogArguments
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
alert("您传递的参数为window对象,名称:" + a.name)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
</script>
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
可以通过window.returnValue向打开对话框的窗口返回信息,当然也可以是对象。例如:
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
test4.htm
![None.gif](/Images/OutliningIndicators/None.gif)
===================
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
<script>![dot.gif](/Images/dot.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
var a = window.showModalDialog("test5.htm")
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
for(i=0;i<a.length;i++) alert(a[i])
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
</script>
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
test5.htm
![None.gif](/Images/OutliningIndicators/None.gif)
===================
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
<script>![dot.gif](/Images/dot.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
function sendTo()
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
var a=new Array("a","b")
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
window.returnValue = a
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
window.close()
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
</script>
![None.gif](/Images/OutliningIndicators/None.gif)
<body>
![None.gif](/Images/OutliningIndicators/None.gif)
<form>
![None.gif](/Images/OutliningIndicators/None.gif)
<input value="返回" type=button onclick="sendTo()">
![None.gif](/Images/OutliningIndicators/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,我的例子
<
script language
=
"
javascript
"
>
function
KDMsgBox(info)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
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 的数据连接可以分为两种方式:
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的开销不是很大,而且是应用程序级,但不知这两种方法孰优孰劣?
源代码如下:
在线人员统计
//保存在线
public void SaveOnline(string userPlace)
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
DataTable online;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
if (HttpContext.Current.Cache["online"]==null)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
online = new DataTable();
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
online.Columns.Add("onlineID",typeof(string));
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
online.Columns.Add("userID",typeof(string));
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
online.Columns.Add("userName",typeof(string));
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
online.Columns.Add("userLevelName",typeof(string));
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
online.Columns.Add("userLevelImg",typeof(string));
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
online.Columns.Add("userIP",typeof(string));
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
online.Columns.Add("userPlace",typeof(string));
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
online.Columns.Add("logoTime",typeof(DateTime));
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
online.Columns.Add("actionTime",typeof(DateTime));
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
online.Columns.Add("userOS",typeof(string));
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
online.Columns.Add("userCLR",typeof(string));
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
online.Columns.Add("userBorwser",typeof(string));
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
HttpContext.Current.Cache["online"] = online;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
DataRow[] dr1;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
DataRow dr2;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
online = (DataTable)HttpContext.Current.Cache["online"];
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dr1 = online.Select("onlineID='" + onlineID + "'");
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
if (dr1.Length>0)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dr1[0][1] = UserID;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dr1[0][2] = UserName;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dr1[0][4] = UserLevelImg;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dr1[0][6] = userPlace;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dr1[0][8] = DateTime.Now;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
online.AcceptChanges();
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
else
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dr2 = online.NewRow();
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dr2[0] = onlineID;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dr2[1] = UserID;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dr2[2] = UserName;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dr2[3] = userLevelName;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dr2[4] = UserLevelImg;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dr2[5] = UserIP;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dr2[6] = userPlace;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dr2[7] = DateTime.Now;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dr2[8] = DateTime.Now;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dr2[9] = UserOS;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dr2[10] = UserCLR;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dr2[11] = UserBrowser;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
online.Rows.Add(dr2);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
DeleteOnline();
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
//清除超时用户
![None.gif](/Images/OutliningIndicators/None.gif)
private void DeleteOnline()
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
DataTable online = (DataTable)HttpContext.Current.Cache["online"];
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
for (int i=0;i<online.Rows.Count;i++)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
if (Convert.ToDateTime(online.Rows[i][7])<DateTime.Now.AddMinutes(-10.0))
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
online.Rows[i].Delete();
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
online.AcceptChanges();
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![None.gif](/Images/OutliningIndicators/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;
三十九、 关于呼出表单
注:本处所指表单就是层
<
SCRIPT LANGUAGE
=
'JavaScript'
>
![None.gif](/Images/OutliningIndicators/None.gif)
function
showdtablesearchlay()
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
if (document.getElementById('dtablesearch'))
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
var x=window.screen.width;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
var y=window.screen.height;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dtablesearch.style.left=(x-360)/2;dtablesearch.style.top=(y-360)/2;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dtablesearch.style.visibility='visible';
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![None.gif](/Images/OutliningIndicators/None.gif)
function
hiddendtablesearchlay()
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
if (document.getElementById('dtablesearch'))
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dtablesearch.style.visibility='hidden';
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![None.gif](/Images/OutliningIndicators/None.gif)
</
SCRIPT
>
![None.gif](/Images/OutliningIndicators/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:下拉菜单
下拉菜单
<script Language="JavaScript">
![None.gif](/Images/OutliningIndicators/None.gif)
//***********默认设置定义.*********************
![None.gif](/Images/OutliningIndicators/None.gif)
tPopWait=50;//停留tWait豪秒后显示提示。
![None.gif](/Images/OutliningIndicators/None.gif)
tPopShow=5000;//显示tShow豪秒后关闭提示
![None.gif](/Images/OutliningIndicators/None.gif)
showPopStep=20;
![None.gif](/Images/OutliningIndicators/None.gif)
popOpacity=99;
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
//***************内部变量定义*****************
![None.gif](/Images/OutliningIndicators/None.gif)
sPop=null;
![None.gif](/Images/OutliningIndicators/None.gif)
curShow=null;
![None.gif](/Images/OutliningIndicators/None.gif)
tFadeOut=null;
![None.gif](/Images/OutliningIndicators/None.gif)
tFadeIn=null;
![None.gif](/Images/OutliningIndicators/None.gif)
tFadeWaiting=null;
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
document.write("<style type='text/css'id='defaultPopStyle'>");
![None.gif](/Images/OutliningIndicators/None.gif)
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)}");
![None.gif](/Images/OutliningIndicators/None.gif)
document.write("</style>");
![None.gif](/Images/OutliningIndicators/None.gif)
document.write("<div id='dypopLayer' style='position:absolute;z-index:1000;' class='cPopText'></div>");
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
function showPopupText()
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
var o=event.srcElement;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
MouseX=event.x;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
MouseY=event.y;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if(o.alt!=null && o.alt!="")
{o.dypop=o.alt;o.alt=""};
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if(o.title!=null && o.title!="")
{o.dypop=o.title;o.title=""};
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if(o.dypop!=sPop)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
sPop=o.dypop;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
clearTimeout(curShow);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
clearTimeout(tFadeOut);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
clearTimeout(tFadeIn);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
clearTimeout(tFadeWaiting);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if(sPop==null || sPop=="")
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dypopLayer.innerHTML="";
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dypopLayer.style.filter="Alpha()";
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dypopLayer.filters.Alpha.opacity=0;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
else
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
if(o.dyclass!=null) popStyle=o.dyclass
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
else popStyle="cPopText";
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
curShow=setTimeout("showIt()",tPopWait);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
function showIt()
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dypopLayer.className=popStyle;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dypopLayer.innerHTML=sPop;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
popWidth=dypopLayer.clientWidth;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
popHeight=dypopLayer.clientHeight;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
if(MouseX+12+popWidth>document.body.clientWidth) popLeftAdjust=-popWidth-24
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
else popLeftAdjust=0;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
if(MouseY+12+popHeight>document.body.clientHeight) popTopAdjust=-popHeight-24
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
else popTopAdjust=0;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dypopLayer.style.left=MouseX+12+document.body.scrollLeft+popLeftAdjust;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dypopLayer.style.top=MouseY+12+document.body.scrollTop+popTopAdjust;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dypopLayer.style.filter="Alpha(Opacity=0)";
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
fadeOut();
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
function fadeOut()
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if(dypopLayer.filters.Alpha.opacity<popOpacity)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dypopLayer.filters.Alpha.opacity+=showPopStep;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
tFadeOut=setTimeout("fadeOut()",1);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
else
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dypopLayer.filters.Alpha.opacity=popOpacity;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
tFadeWaiting=setTimeout("fadeIn()",tPopShow);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
function fadeIn()
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if(dypopLayer.filters.Alpha.opacity>0)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
dypopLayer.filters.Alpha.opacity-=1;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
tFadeIn=setTimeout("fadeIn()",1);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![None.gif](/Images/OutliningIndicators/None.gif)
document.onmouseover=showPopupText;
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
function CheckAll(form)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
for (var i=0;i<form.elements.length;i++)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
var e = form.elements[i];
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
if (e.name != 'chkall') e.checked = form.chkall.checked;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
//下拉菜单相关代码
![None.gif](/Images/OutliningIndicators/None.gif)
var h;
![None.gif](/Images/OutliningIndicators/None.gif)
var w;
![None.gif](/Images/OutliningIndicators/None.gif)
var l;
![None.gif](/Images/OutliningIndicators/None.gif)
var t;
![None.gif](/Images/OutliningIndicators/None.gif)
var topMar = 1;
![None.gif](/Images/OutliningIndicators/None.gif)
var leftMar = -2;
![None.gif](/Images/OutliningIndicators/None.gif)
var space = 1;
![None.gif](/Images/OutliningIndicators/None.gif)
var isvisible;
![None.gif](/Images/OutliningIndicators/None.gif)
var MENU_SHADOW_COLOR='#999999';//定义下拉菜单阴影色
![None.gif](/Images/OutliningIndicators/None.gif)
var global = window.document
![None.gif](/Images/OutliningIndicators/None.gif)
global.fo_currentMenu = null
![None.gif](/Images/OutliningIndicators/None.gif)
global.fo_shadows = new Array
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
function HideMenu()
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
var mX;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
var mY;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
var vDiv;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
var mDiv;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
if (isvisible == true)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![ContractedSubBlock.gif](/Images/OutliningIndicators/ContractedSubBlock.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
vDiv = document.all("menuDiv");
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
mX = window.event.clientX + document.body.scrollLeft;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
mY = window.event.clientY + document.body.scrollTop;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.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))
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
vDiv.style.visibility = "hidden";
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
isvisible = false;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
function ShowMenu(vMnuCode,tWidth)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
vSrc = window.event.srcElement;
![InBlock.gif](/Images/OutliningIndicators/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](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
h = vSrc.offsetHeight;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
w = vSrc.offsetWidth;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
l = vSrc.offsetLeft + leftMar+4;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
t = vSrc.offsetTop + topMar + h + space-2;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
vParent = vSrc.offsetParent;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
while (vParent.tagName.toUpperCase() != "BODY")
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
l += vParent.offsetLeft;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
t += vParent.offsetTop;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
vParent = vParent.offsetParent;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
menuDiv.innerHTML = vMnuCode;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
menuDiv.style.top = t;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
menuDiv.style.left = l;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
menuDiv.style.visibility = "visible";
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
isvisible = true;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
makeRectangularDropShadow(submenu, MENU_SHADOW_COLOR, 4)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
function makeRectangularDropShadow(el, color, size)
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
var i;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
for (i=size; i>0; i--)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
var rect = document.createElement('div');
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
var rs = rect.style
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
rs.position = 'absolute';
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
rs.left = (el.style.posLeft + i) + 'px';
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
rs.top = (el.style.posTop + i) + 'px';
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
rs.width = el.offsetWidth + 'px';
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
rs.height = el.offsetHeight + 'px';
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
rs.zIndex = el.style.zIndex - i;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
rs.backgroundColor = color;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
var opacity = 1 - i / (i + 1);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
rs.filter = 'alpha(opacity=' + (100 * opacity) + ')';
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
el.insertAdjacentElement('afterEnd', rect);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
global.fo_shadows[global.fo_shadows.length] = rect;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
四十、 关于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
>
![None.gif](/Images/OutliningIndicators/None.gif)
/// 修改web.config文件appSettings配置节中的Add里的value属性
![None.gif](/Images/OutliningIndicators/None.gif)
///
</
summary
>
![None.gif](/Images/OutliningIndicators/None.gif)
///
<
remarks
>
![None.gif](/Images/OutliningIndicators/None.gif)
/// 注意,调用该函数后,会使整个Web Application重启,导致当前所有的会话丢失
![None.gif](/Images/OutliningIndicators/None.gif)
///
</
remarks
>
![None.gif](/Images/OutliningIndicators/None.gif)
///
<
param
name
="key"
>
要修改的键key
</
param
>
![None.gif](/Images/OutliningIndicators/None.gif)
///
<
param
name
="strValue"
>
修改后的value
</
param
>
![None.gif](/Images/OutliningIndicators/None.gif)
///
<
exception
cref
=""
>
找不到相关的键
</
exception
>
![None.gif](/Images/OutliningIndicators/None.gif)
///
<
exception
cref
=""
>
权限不够,无法保存到web.config文件中
</
exception
>
修改Web.Config
public void Modify(string key,string strValue)
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
string XPath="/configuration/appSettings/add[@key='?']";
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
XmlDocument domWebConfig=new XmlDocument();
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
domWebConfig.Load( (HttpContext.Current.Server.MapPath("web.config")) );
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
XmlNode addKey=domWebConfig.SelectSingleNode( (XPath.Replace("?",key)) );
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
if(addKey == null)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
throw new ArgumentException("没有找到<add key='"+key+"' value=
/>的配置节");
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
addKey.Attributes["value"].InnerText=strValue;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
domWebConfig.Save( (HttpContext.Current.Server.MapPath("web.config")) );
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
四十一、 如何使用T-SQL来给系统增加计划任务
declare
@RunTime
char
(
5
)
![None.gif](/Images/OutliningIndicators/None.gif)
declare
@String
char
(
100
)
![None.gif](/Images/OutliningIndicators/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](/Images/OutliningIndicators/None.gif)
set
@String
=
'
at
'
+
@RunTime
+
'
/interactive
'
+
'
C:windowssystem32 otepad.exe
'
![None.gif](/Images/OutliningIndicators/None.gif)
exec
(
'
master..xp_cmdshell "
'
+
@String
+
'
"
'
)
上面的脚本是在当前时间后的1分钟增加一个任务。如果直接执行
xp_cmdshell @String 会报错,最终还是在MSDN的Community中找到了解决的办法。
四十二、 在网页上右键弹出菜单的子菜单范例
右键弹出菜单
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
<html>
![None.gif](/Images/OutliningIndicators/None.gif)
<head>
![None.gif](/Images/OutliningIndicators/None.gif)
<title>PopupMenuTest</title>
![None.gif](/Images/OutliningIndicators/None.gif)
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
![None.gif](/Images/OutliningIndicators/None.gif)
<meta name="CODE_LANGUAGE" Content="C#">
![None.gif](/Images/OutliningIndicators/None.gif)
<meta name=vs_defaultClientScript content="JavaScript">
![None.gif](/Images/OutliningIndicators/None.gif)
<meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
![None.gif](/Images/OutliningIndicators/None.gif)
</head>
![None.gif](/Images/OutliningIndicators/None.gif)
<body MS_POSITIONING="GridLayout" oncontextmenu="return DisplayPopupMenu();">
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
<script language="javascript">![dot.gif](/Images/dot.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
function DisplayPopupMenu()
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
menuTree.show(event.x, event.y);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
return false;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
function menuTreeBeforePopup()
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
function menuTreeClick(objTree)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
switch(event.menuData)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
case "refresh": alert('refresh clicked.');
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
break;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
case "property":alert('property clicked.');
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
break;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
case "message":alert('message clicked.');
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
break;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
case "email":alert('email clicked.');
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
break;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
</script>
![None.gif](/Images/OutliningIndicators/None.gif)
<form id="Form1" method="post" runat="server">
![None.gif](/Images/OutliningIndicators/None.gif)
<?XML:NAMESPACE PREFIX="hGui" /><?import namespace="hGui" implementation="/webcontrols/sMenu.htc" />
![None.gif](/Images/OutliningIndicators/None.gif)
<hGui:smenu id="menuTree" onmenuclick="menuTreeClick()" onbeforepopup="menuTreeBeforePopup();" style="Z-INDEX: 100">
![None.gif](/Images/OutliningIndicators/None.gif)
刷新,,,,./images/refresh.gif,refresh;
![None.gif](/Images/OutliningIndicators/None.gif)
新建,subMenu1,,,,submenu1;
![None.gif](/Images/OutliningIndicators/None.gif)
-,0,,,,;
![None.gif](/Images/OutliningIndicators/None.gif)
属性,,,,./images/property.gif,property
![None.gif](/Images/OutliningIndicators/None.gif)
</hGui:smenu>
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
<?XML:NAMESPACE PREFIX="hGui" /><?import namespace="hGui" implementation="/webcontrols/sMenu.htc" />
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
<hGui:smenu id="subMenu1" onmenuclick="menuTreeClick()" onbeforepopup="menuTreeBeforePopup();" style="Z-INDEX: 100">
![None.gif](/Images/OutliningIndicators/None.gif)
短消息,,,,./images/refresh.gif,message;
![None.gif](/Images/OutliningIndicators/None.gif)
-,0,,,,;
![None.gif](/Images/OutliningIndicators/None.gif)
发送E-Mail,,,,./images/property.gif,email
![None.gif](/Images/OutliningIndicators/None.gif)
</hGui:smenu>
![None.gif](/Images/OutliningIndicators/None.gif)
</form>
![None.gif](/Images/OutliningIndicators/None.gif)
</body>
![None.gif](/Images/OutliningIndicators/None.gif)
</html>
四十三、 contentEditable="true" 的妙用 - 打印
不知道各位有没有做过用于打印的Web页。
我帮客户做这个页面的时候,喜欢把某些区域定为contentEditable="true",目的是让客户可以随便修改这些地方。
例如:
<Asp:Panel runat=server contentEditable="true"/>..<Asp:Label runat=server id=PrintTitle Text=PrintTitle/>..</Asp:Panel>
四十四、 防止重复提交
防止重复提交
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
function _doPostBack()
{};
![None.gif](/Images/OutliningIndicators/None.gif)
if(typeof("__doPostBack")=="function")
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
_doPostBack=__doPostBack;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
__doPostBack=_doPostBackNew;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
document.attachEvent("onmousemove",_onmousemove);
![None.gif](/Images/OutliningIndicators/None.gif)
var _isPosting=false;
![None.gif](/Images/OutliningIndicators/None.gif)
var _divMask=null;
![None.gif](/Images/OutliningIndicators/None.gif)
function _onmousemove()
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
if(_divMask)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
with(_divMask.runtimeStyle)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
left=event.clientX+document.body.scrollLeft-4;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
top=event.clientY+document.body.scrollTop-4;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![None.gif](/Images/OutliningIndicators/None.gif)
function _makeMask()
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
var div=document.createElement("DIV");
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
with(div.runtimeStyle)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
position="absolute";
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
zIndex=999999;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
fontSize="1px";
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
left=event.clientX+document.body.scrollLeft-4;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
top=event.clientY+document.body.scrollTop-4;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
width="8px";
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
height="8px";
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
cursor="wait";
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
backgroundColor="gray";
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
filter="alpha(opacity=10)";
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
try
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
document.body.insertAdjacentElement("BeforeEnd",div);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
div.onblur=new Function("this.focus()");
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
div.focus();
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
catch(x)
{}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
if(_divMask)_divMask.removeNode(true);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
_divMask=div;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![None.gif](/Images/OutliningIndicators/None.gif)
function _doPostBackNew(sender,args)
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
if(_isPosting)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
return event.returnValue=!(event.cancelBubble=true);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
status="正在更新页面
";
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
_doPostBack(sender,args);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
_isPosting=true;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
_makeMask();
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![None.gif](/Images/OutliningIndicators/None.gif)
![None.gif](/Images/OutliningIndicators/None.gif)
function _onformsubmit()
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
if(_isPosting)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
return event.returnValue=!(event.cancelBubble=true);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
_isPosting=true;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
_makeMask();
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![None.gif](/Images/OutliningIndicators/None.gif)
new function _attachForms()
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
with(new Enumerator(document.forms))
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
for(;!atEnd();moveNext())
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
item().attachEvent("onsubmit",_onformsubmit);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
var div=document.createElement("div");
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
div.runtimeStyle.width="0px";
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
div.runtimeStyle.hight="0px";
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
div.runtimeStyle.overflow="hidden";
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
div.runtimeStyle.position="absolute";
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
item(0).insertAdjacentElement("afterbegin",div);
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
div.innerHTML="<INPUT TYPE=Submit name='webformpatchsubmitelement' οnclick='return event.returnValue=false' id='webformpatchsubmitelement' value='webformpatchsubmitelement'/>";
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.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代码:
实现文本框焦点自佛那个跳转通过回车实现提交
<script language="JavaScript">
NS4 = (document.layers) ? true : false;
function checkEnter(event,element)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![ContractedBlock.gif](/Images/OutliningIndicators/ContractedBlock.gif)
{
var code = 0;
if (NS4)
code = event.which;
else
code = event.keyCode;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
if (code==13)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
if(element.name=='tbUserName')//tbUserName-用户名文本框的Name
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{ document.frmLogin.tbPassword.focus();//frmLogin-表单名称,tbPassword-密码文本杠框的Name
}
if(element.name=='tbPassword')
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
//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")+"file://LoginScript.js/");
this.RegisterClientScriptBlock("LoginScript",sr.ReadToEnd());
sr.Close();
四十七、 显示和隐藏主菜单
显示和隐藏主菜单
<script LANGUAGE="JavaScript">
![None.gif](/Images/OutliningIndicators/None.gif)
function toggleMenu()
![None.gif](/Images/OutliningIndicators/None.gif)
![ExpandedBlockStart.gif](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
// hide the menu
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
if(document.all.toggleMenuImg.value == '1')
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
document.all.toggleMenuImg.value = '0';
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
document.all.toggleMenuImg.src="images/tbnt_mc.gif";
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
top.document.getElementById('WindowLeft').cols = "0px,*";
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
// display the menu
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
else
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
document.all.toggleMenuImg.value = '1';
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
document.all.toggleMenuImg.src="images/tbtn_mo.gif";
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
top.document.getElementById('WindowLeft').cols = "170px,*";
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![None.gif](/Images/OutliningIndicators/None.gif)
</script>
![None.gif](/Images/OutliningIndicators/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函数:
function
__doPostBack(eventTarget, eventArgument)
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
![ExpandedSubBlockStart.gif](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (theForm.onsubmit == null || theForm.onsubmit())
{
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
theForm.__EVENTTARGET.value = eventTarget;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
theForm.__EVENTARGUMENT.value = eventArgument;
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
theForm.submit();
![InBlock.gif](/Images/OutliningIndicators/InBlock.gif)
}
![InBlock.gif](/Images/OutliningIndicators/InBlock.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()';