• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ASP.NET 小技巧汇总

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

OnPageIndexChanged="DataGrid1_PageIndexChanged"
       
public void DataGrid1_PageIndexChanged(object sender, DataGridPageChangedEventArgs e) 
 

   二、      关于上传文件
上传文件应加入:       <form >
源文件里边加入:      


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

      
四、      连到SQL Server数据库


五、      查询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 onkeydown="if(event.keyCode==13)query_data()">

0、  调用JS弹出对话框

       Page.Response.Write("<script language=javascript>alert('密码错误!');window.history.back(-1);</script>");
       Page.Response.End();

1、  调用JS程序要把"()"加上,例如:checkinput()
2、  在HTML中调用JS的代码片如下:         

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

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

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

              input type="button" name="look" value="?" onclick="statbar('这是状态条喔

               (statusbar) !');">

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

            
6、使用日期的例子:

<script language="LiveScript">

       
<!-- Hiding

         today 
= new Date()

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

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

       
// end hiding contents -->

       
</script> 

      
7、产生随机数

 <script language="LiveScript">

      
8、打开一个新窗口:

<SCRIPT LANGUAGE="javascript"> 

  
<!-- 

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

  
--> 

</SCRIPT>  


  参数解释:
<SCRIPT LANGUAGE="javascript"> js脚本开始;

  window.open 弹出新窗口的命令;

  'page.html' 弹出窗口的文件名;

  'newwindow' 弹出窗口的名字(不是文件名),非必须,可用空''代替;

  height=100 窗口高度;

  width=400 窗口宽度;

  top=0 窗口距离屏幕上方的象素值;

  left=0 窗口距离屏幕左侧的象素值;

  toolbar=no 是否显示工具栏,yes为显示;

  menubar,scrollbars 表示菜单栏和滚动栏。

  resizable=no 是否允许改变窗口大小,yes为允许;

  location=no 是否显示地址栏,yes为允许;

  status=no 是否显示状态栏内的信息(通常是文件已经打开),yes为允许;

</SCRIPT> js脚本结束 


9、自动关闭窗口

    <script language="JavaScript"> 

                
function closeit() 


10、打开窗口之Cookies

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

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

11、前进后退和定位

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


12、Cookies全部搞定

>


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

void Page_Load(Object sender, EventArgs e)      
       }

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

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

if (!this.IsPostBack )

7、完成!

十四、         Application的事件

<script language="C#" runat="server">
    
void Application_OnBeginRequest(Object sender, EventArgs E)


十五、         Session的事件

void Session_OnStart()


十六、         在本窗口打开页面       onclick ="window.open('?addnew=true','_self','')"

十七、         关于DropDownList的数据绑定
                     drp_Tech.DataSource =ds.Tables["职员表"].DefaultView ;
                     drp_Tech.DataTextField ="技术员";
                     drp_Tech.DataBind (); 

十八、         Table的使用
       1、可以用width=100%来使Table填充窗体的宽度
       2、可以用<td colspan="3" align="center">&nbsp;</td>来合并列,合并行用rowspan,Span的意思是跨度 

十九、         DropDownList设置Item被选的方法
       DropDownList2.Items.FindByText ("2").Selected =true;  

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

二十一、            用Java下载             

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

二十二、            滚动字的做法:
       <marquee scrolldelay="180">欢迎登录海天客户关系管理系统!</marquee> 

二十三、            层
       在Login.aspx中可以使用层来解决位置的问题

       <div ></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() 

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

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

<form id="Form1" method="post" runat="server"> 
         
<INPUT id="Hidden1" type="hidden" name="Hidden1" runat="server"> 
         
<asp:Button id="Button1" runat="server" Text="Button"></asp:Button> 
         
<asp:TextBox id="TextBox1" runat="server"></asp:TextBox>
      
</form>

请注意里面的细节,这些都是运行在服务器上的(runat=server)  
3、接着就是服务器端的代码(cs文件里面的),Page_load函数使得服务器控件Button1可以在呈现到客户端的时候具有onclick事件代码如下:
private void Page_Load(object sender, System.EventArgs e) 
      {               this.Button1.Attributes.Add("onclick","GetInput();");       }  


4、最后就是按钮的事件了,代码如下,它将取到用户输入的一个值并且将这个值显示在TextBox里面,代码如下:
private void Button1_Click(object sender, System.EventArgs e)

         string str = this.Hidden1.Value; 
         this.TextBox1.Text = str; 
  }

5、我自己的示例onclick="javascript:if(!confirm('ok')){return};__doPostBack('Button3','');"

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


二十七、            Toolbar
1、用Javascript处理


2、在C#中处理

private void Toolbar1_ButtonClick(object sender, EventArgs e)

       
二十八、            模式对话框

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

>


  常见问题:

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)
>

二十九、            防止被别人框架
       加在不想被框架的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>
<href="#" onclick=document.execCommand("open")>打开</a><br>
   
<href="#" onclick=location.replace("view-source:"+location)>使用 记事本 编辑</a><br>
   
<href="#" onclick=document.execCommand("saveAs")>另存为</a><br>
   
<href="#" onclick=document.execCommand("print")>打印</a><br>
   
<href="#" onclick=window.close();return false)>关闭本窗口</a><br>
   
<href="#" onclick=document.execCommand("selectAll")>全选</a><br>
   
<href="#" onclick=location.reload()>刷新</a><href="#" onclick=history.go(0)>刷新</a><br> 
   
<href="#" onclick=location.replace("view-source:"+location)>查看源文件</a> <br>
   
<href="#" onclick=window.open(document.location,"url","fullscreen")>全屏显示</a> <br> 
   
<href="javascript:window.external.AddFavorite('http://homepage.yesky.com', '天极网页陶吧')">添加到收藏夹</a> <br>
   
<href="#" onclick=window.external.showBrowserUI("OrganizeFavorites",null)>整理收藏夹</a> <br>
   
<href="#" onclick=window.external.showBrowserUI("PrivacySettings",null)>internet选项</a> <br>
   
<href="#" onclick=history.go(1)>前进1</a><href="#" onclick=history.forward()>前进2</a><br>
   
<href="#" onclick=history.go(-1)>后退1</a><href="#" onclick=history.back()>后退2</a><br>
   
<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的开销不是很大,而且是应用程序级,但不知这两种方法孰优孰劣?
源代码如下:

三十八、            关于Cache
1、无变化的Cache

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

2、根据参数变化的Cache

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

3、通过复杂控制Cache

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

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

       Response.Cache.SetCacheability(HttpCacheability.Public);

      

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

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

       Response.Cache.SetCacheability(HttpCacheability.Public);

       Response.Cache.SetSlidingExpiration(true);

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

从 ASP 移植过来的应用程序可能已用 ASP 属性设置了缓存策略;例如:  
       Response.CacheControl = "Public";
       Response.Expires = 60; 
 
三十九、            关于呼出表单
注:本处所指表单就是层 

<SCRIPT LANGUAGE='JavaScript'> 

       
function showdtablesearchlay()


附:建立一个浮动表单 
<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:下拉菜单


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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Asp.NetCore之@Html.Action迁移发布时间:2022-07-10
下一篇:
ASP.NET路由模型解析发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap