天天看點

Asp.Net細節性問題技巧精萃(轉)

1.<%=...%>與<%#... %>的差別:

答:<%=...%>是在程式執行時調用,<%#... %>是在DataBind()方法之後被調用

2.控件接收哪些類型資料?

答:接收Bind的控件,一般有DropDownList,DataList,DataGrid,ListBox這些集合性質的控件,而被捆綁 的主要是ArrayList(數組),Hashtable(哈稀表),DataView(資料視圖),DataReader這四個,以後我們就可以 對号入座,不會出現DataTable被捆綁的錯誤了:)

3.DataBind,獲得的資料,系統會将其預設為String,怎樣轉化為其它的類型?

DataBinder.Eval(Container.DataItem,"轉換的類型","格式")

最後一個"格式"是可選的,一般不用去管他,Container.DataItem是捆綁的資料項,"轉換類型"指的是 Integer,String,Boolean這一類東西.

4.主要命名空間:

<% @ Import Namespace="System.Data" %> 處理資料時用到

<% @ Import Namespace="System.Data.ADO" % > 使用ADO.net ; 時用到

<% @ Import Namespace="System.Data.SQL" %> SQL Server 資料庫專用

<% @ Import Namespace="System.Data.XML" %> 不用看處理XML用到

<% @ Import Namespace="System.IO" %> 處理檔案時用到

<% @ Import Namespace="System.Web.Util" %> 發郵件時大家會用到

<% @ Import Namespace="System.Text" %> 文本編碼時用到

5.Connections(SQLConection 或者 ADOConnection)的常用屬性和方法:

| ConnectionString 取得或設定連結資料庫的語句

| ConnectionTimeout 取得或設定連結資料庫的最長時間,也是就逾時時間

| DataBase 取得或設定在資料庫伺服器上要打開的資料庫名

| DataSource 取得或設定DSN,大家不會陌生吧:)

| Password 取得或設定密碼

| UserID 取得或設定登陸名

| State 取得目前聯結的狀态

| Open() 打開聯結

| Close() 關閉聯結

| Clone() 克隆一個聯結。(呵呵,綿羊可以Connection我也可以)

示例:

SQLConnection myConnection = new SQLConnection();

myConnection.DataSource = "mySQLServer";

myConnection.Password = "";

myConnection.UserID = "sa";

myConnection.ConnectionTimeout = 30;

myConnection.Open();

myConnection.Database = "northwind";

myConnection.IsolationLevel = IsolationLevel.ReadCommitted

6.Command常用的方法和屬性

| ActiveConnection 取得或設定聯結Connections

| CommandText 執行的SQL語句或儲存過程(StoredProcedure)名

| CommandTimeout 執行的最長時間

| CommandType Command操作的類型(StoredProcedure,Text,TableDirect)三種,預設Text

| Parameters 操作儲存過程時使用

| Execute() 執行SQL語句或儲存過程

| ExecuteNonQuery() 同上,差別在于不傳回記錄集

| Clone() 克隆Command

示例:

string mySelectQuery = "SELECT * FROM Categories ORDER BY CategoryID";

stringmyConnectString="userid=sa;password=;database=northwind;server=mySQLServer";

SQLCommand myCommand = new SQLCommand(mySelectQuery);

myCommand.ActiveConnection = new SQLConnection(myConnectString);

myCommand.CommandTimeout = 15;

myCommand.CommandType = CommandType.Text;< /FONT >

7.打開和關閉資料庫兩種方法:

1.MyConnection.Open(); //打開聯結

MyConnection.Close();

2.MyCommand.ActiveConnection.Open();

MyCommand.ActiveConnection.Close()

8.使用DataSet,在資料庫中增加、修改、删除一個資料

a.添加資料

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

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

dr["ReMark"] = "100";

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

MyDataSet.Tables.Rows.Add(dr);

b.修改資料

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

c.删除資料

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

d.恢複資料

if(MyDataSet.HasErrors)

{

MyDataSet.RejectChanges();

}

e.探測DataSet是否有改動

if(MyDataSet.HasChanges)

//儲存代碼

}else{

//因為沒有變化,是以不用儲存,以節省時間

f.更新資料庫

MyComm.Update(MyDataSet); //更新資料庫中所有的表

MyComm.Update(MyDataSet,"UserList"); //更新某個表

9.DataGrid實作分頁功能

AllowPaging="True" //是指允許分頁,這個是最主要的。有了它,我們才能分頁。

PageSize="5" //是指定每頁顯示的記錄數,如果不寫,就會預設為10條。

PagerStyle-HorizontalAlign="Right" //是指定分面顯示的定位,預設是Left

PagerStyle-NextPageText="下一頁" //把<>改為上一頁和下一頁字元串

PagerStyle-PrevPageText="上一頁"

PagerStyle-Mode="NumericPages" //把<>改為123數字顯示

10.顯示一共有多少頁,并且報告目前為第幾頁

目前頁是:<font color=red><%=DataGrid1.CurrentPageIndex+1%></font><br>

總頁數是:<font color=red><%=DataGrid1.PageCount%></font><br>

11.個性化分頁

程式員大學營之"親密接觸ASP.Net(14)"有完整代碼

12.要将頁面重置為有效的狀态

IValidator val;

foreach(val in Validators)

Val.IsValid = true;

13.重新執行整個驗證序列

Val.Validate();

14.禁用用戶端驗證

<%@ Page Language="c#" clienttarget=downlevel %>

15.Repeater、DataList和DataGrid控件用途"

這些控件可以簡化幾種常見的 Web 應用程式方案,包括報表、購物車、産品清單、查詢

結果和導航菜單。 Repeater是唯一允許在其模闆中存在 HTML片段的控件.

16.Server.Execute("another.aspx")和Server.Transfer("another.aspx")差別:

Execute是從目前頁面轉移到指定頁面,并将執行傳回到目前頁面

Transfer是将執行完全轉移到指定頁面

17.XML檔案中可以自己存有架構,也可以存在于*.xsl檔案中,但必須通過xmlns屬性在xml文檔的根節點中指定該資訊,如下所示:

<rootelement xmlns="x-schema:scheduledSchema.xsl">

18.XML檔案的讀取

FileStream myfs=new Filestream(Server.MapPath("xmldtagrid.xml"),FileMode.Open,FileAccess.Read);

StreamReader myreader=new StreamReader(myfs);

DataSet myds=new DataSet();

myds.ReadXml(myreader);

19.正規表達式 控件RegularExpressionValidator

符号 含義

^ 指定檢查開始處

$ 指定檢查結束處

[] 檢查輸入的值是否與方括弧中的字元之一相比對

\W 允許輸入任何值

\d{} "\d"指定輸入的值是一個數字,{}表示已指定資料類型的出現次數

+ 表明一個或多個元素将被添加到正在檢查的表達式

示例:電子郵件格式(具有@号,且以.com/.net/.org/.edu結尾)

validationexpression="^[\w-]+@[\w-]+\.(com|net|org|edu)$"

20.DataGrid控件中資料操作重要語句:

屬性:DataKeyField="userid" //設userid為表的主鍵,無法将該字段的值更新到資料庫,最好設表的主鍵為DataGrid的主鍵

SqlCommand.Parameters["@userid"].Value=dg.DataKeys[(int)e.Item.ItemIndex]; //檢索所要更新的行的主鍵(将目前標明的行的 主鍵值賦給指令的一個參)數

SqlCommand.Parameters["@fname"].Value=((TextBox)e.Item.Cells[2].Controls[0]).Text; //為參數賦予已修改的行值

21.自定義控件:

a.使用者控件(ASP建立頁面一樣)

(I). 建立頁面,拖入控件,設定屬性/方法. <% @Control Language="C#" Debug="True" %>中的@Control指令來定義此頁 将包含控件代碼

(II) 儲存為*.ascx檔案,如a.ascx.

(III).使用: 頭<%@Register Tagprefix="MyFirstControl" TagName="MyLbl" Src="a.axcs" %>

//Tagprefix為控件的字首,像ASP:TextBox中的ASP

//TagName用于指定自定義控件的名稱

//Src指定控件檔案源

身體:<MyFirstControl:MyLbl runat="Server" id="AllMine" MyText="成功了" />

b.使用C#建立自定義控件

(I). 建立純代碼檔案,繼承基類Control,并儲存為*.cs,如a.cs.

(II).将代碼編譯生成程式集: csc /t:library /r:System.dll,System.Web.Dll a.cs

//library告訴C#編譯器生成程式集

// /r:System.dll System.Web.Dll告訴C#編譯器引用指定的程式集

(III).将生成dll檔案放在bin目錄中

(IV).使用: <% @Register TagPrefix="Mine" Namespace="MyOwnControls" Assembly="a" %>

22.複合控件注意事項:

public class MyCompositin:Control,INamingContainer //INamingContainer:如果在頁面上有多個此控件執行個體,則此結口可以給每 {} //個執行個體有唯一标志

this.EnsureChildControls();//表示将複合控件的子控件都呈現到頁面上,此方法檢查伺服器控件是否包含子控件

CreateChildControls

23.Button/LinkButton/ImageButton/HyperLink什麼時候用?

1.Button和ImageButton用于将資料傳遞回伺服器.

2.Hyperlink用于在頁面之間導航

3.LinkButton用于将資料儲存到伺服器或通路伺服器上的資料

24.跟蹤調試

跟蹤:

1.頁級别跟蹤: 在頁的開頭包括如下的頁指令<%@ Page Trace="True" TraceMode="SortByCategory/SortByTime" %>

自定義消息:

Trace.Write("這裡為要顯示的字元串");

Trace.Warn("這裡為要顯示的字元串"); //與Trace.Write相同,隻是字型為紅色

檢查是否使用了跟蹤

例句: if(Trace.IsEnabled) { Trace.Warn("已啟用跟蹤")}

2.應用程式級别跟蹤: 在Web.config檔案的<System.Web>節中 <trace enabled="true" pageOutput="true"/>

25.設定緩存:

1.輸出緩存:

I.頁面設定: 将 <%@ OutputCache Duration="120" VaryByParam="none" %> 加在需要緩存頁的開頭

注釋:在請求該頁的後兩分鐘之内,輸出内容不變

II.程式設計方式設定:

主要使用類System.Web.HttpCachePolicy類下的方法

(1). Response.Cache.SetExpires(DateTime.Now.AddSeconds(120));

//在此方法中必須指定到期時間,如本語句為兩分鐘

(2). Response.Cache.SetExpires(DateTime.Now.AddSeconds(120));

Response.Cache.SetSlidingExpiration(true);

// "可調到期",主要用于那些開始通路量大,但随後通路量平衡的情況

功能:第一句設定緩存到期時間,第二行打開 sliding expiration(可調到期).

2.資料緩存:

(1).DataView mySource; (2).給mySource指派;

(3).Cache["myCache"]=mySource; (4).mySource=(DataView)Cache["myCache"]

26.部署: 直接複制到産品伺服器即可 複制語句: XCOPY <source_path> <destination_path> //XOPY隻接受實體路徑,不接受虛拟路徑

本文轉自鋼鋼部落格園部落格,原文連結:http://www.cnblogs.com/xugang/archive/2007/07/02/802874.html,如需轉載請自行聯系原作者