Asp.Net中幾種相似的標記符號:解釋及用法 還有許多細節

1.Asp.Net中幾種相似的標記符號: < %=...%>< %#... %>< % %>< %@ %>解釋及用法

答: < %#... %>: 是在綁定控件DataBind()方法執行時被執行,用於數據綁定

                    如: < %# Container.DataItem("tit") %>

       < %= %>: 在程序執行時被調用,可以顯示後臺變量值或者方法值

                    如:        *.aspx中: < %= aaa %>

                            *.cs中:         protected string aaa="姓名";

         < %.... %>: 內嵌代碼塊裏面可以在頁面文件*.aspx或*.ascx文件裏面嵌入後臺代碼

                  如:       < %  if(Session[Roles].IndexOf(1)>-1)   {   %>

                                HTML內容

                               <% } %>

         < %@ %>是在*.aspx頁面前臺代碼導入命名空間,

                如:< %@ Import namespace="System.Data"%>

2.控件接收哪些類型數據?

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

3  .DataBind,獲得的數據,系統會將其默認爲String,怎樣轉化爲其它的類型?

         DataBinder.Eval(Object container,"轉換的類型","格式")                                默認返回string類型   

         如     <%# DataBinder.Eval(Container.DataItem, "Price", "{0:c}") %> 將Price字符串格式化爲請求瀏覽器顯示區域的特定貨幣字符串

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

   實際上DataBinder還有Eval(Container.DataItem, string expression) 返回Object類型

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 取得活動的連接

myCommand.CommandTimeout = 15;

myCommand.CommandType = CommandType.Text;

7.打開和關閉數據庫兩種方法:

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

MyConnection.Close();

2.MyCommand.ActiveConnection.Open();

MyCommand.ActiveConnection.Close()

8.使用DataSet,在數據庫中增加、修改、刪除一個數據

a.添加數據

DataRow dr=MyDataSet.Tables["UserList"].NewRow();   //初始化 DataRow對象

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.顯示一共有多少頁,並且報告當前爲第幾頁

當前頁是:< %=DataGrid1.CurrentPageIndex+1%>

總頁數是:< %=DataGrid1.PageCount%>

11.個性化分頁

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

12.要將頁面重置爲有效的狀態

Validator val;

foreach(val in Validators)

{

Val.IsValid = true;

}

13.重新執行整個客戶端驗證控件序列 

Validator val;

foreach(val in Validators)

{

Val.Validate();

}

14.禁用客戶端驗證

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

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

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

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

所以我們可以看到在 <headerTemplate><ul></henderTemplate>  <footerTemplate></ul></footerTemplate>

16. Response.Redirect(),   Server.Execute("another.aspx")   和Server.Transfer("another.aspx")區別:

Response.Redirect():  當Response.Redirect()方法被調用時,它會創建一個應答,應答頭中指出了狀態代碼302(表示目標已經改變)以及新的目標URL。瀏覽器從服務器收到該應答,利用應答頭中的信息發出一個對新URL的請求。

Execute是從當前頁面轉移到指定頁面,並將執行返回到當前頁面

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

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

18.XML文件的讀取

FileStream myfs=new Filestream(Server.MapPath("xmldtagrid.xml"),FileMode.Open,FileAccess.Read);   //FileStream 是字節流,對象本身具有讀寫功能

StreamReader myreader=new StreamReader(myfs);  // 字符流,StreamReader對象只具有讀功能,這種對象需要字節流作爲初始化參數

DataSet myds=new DataSet();

myds.ReadXml(myreader);   // 將字符流對象讀入DataSet數據集中

19.正則表達式 控件RegularExpressionValidator

符號 含義

^          匹配行開始處 ,例如正則表達式^When in能夠匹配字符串"When in the course of human events"的開始,但是不能匹配"What and When in the"

$         匹配行結束處,例如正則表達式weasel$ 能夠匹配字符串"He's a weasel"的末尾 ,但是不能匹配字符串"They are a bunch of weasels."

[]        匹配中括號中的任意字符

\W        允許輸入任何值

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

+        匹配前一個字符的一個或者多個, 例如正則表達式9+匹配9、99、999等

示例:電子郵件格式(具有@號,且以.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];  

   //  檢索所要更新的行的主鍵  ( dg.DataKeys[int]獲得當前選定的事件行索引int對應的主鍵值)

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用於指定自定義控件的名稱,像ASP:TextBox中的TextBox

                //Src指定控件文件源

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(其實就是加了背景圖片的Button)用於將數據傳遞迴服務器.

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文件的節中

25.設置緩存:

1.輸出緩存:

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

註釋:在請求該頁的後兩分鐘120秒之內,輸出內容不變

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).給DataView對象mySource賦值;

(3).Cache["myCache"]=mySource;  //設置緩存的內容  (4).mySource=(DataView)Cache["myCache"]   //將緩存內容輸出給DataView對象

26.部署: 直接複製到產品服務器即可 複製語句: XCOPY //XOPY只接受物理路徑,不接受虛擬路徑

26.自定義分頁按鈕

1.

protected void ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)

{

System.Web.UI.WebControls.ListItemType elemType = e.Item.ItemType;

if (elemType == System.Web.UI.WebControls.ListItemType.Pager)

{

TableCell pager = (TableCell) e.Item.Controls[0];

for (int i=0; i {

Object o = pager.Controls[i];

if (o is LinkButton)

{

LinkButton h = (LinkButton) o;

h.Text = " " + h.Text + " ";

}

else

{

Label l = (Label) o;

l.Text = String.Format("[第{0}頁]", l.Text);

}

}

}

}

2. 引用:zhangzs8896(小二)

private void MyDataGrid_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)

{

ListItemType lit_item=e.Item.ItemType;

TableCell tc_item=(TableCell)e.Item.Controls[0];

if (lit_item==ListItemType.Pager)

{

for (int i=0;i {

object obj_item=tc_item.Controls[i];

if (obj_item is LinkButton)

{

LinkButton lbn_item=(LinkButton)obj_item;

lbn_item.Text=lbn_item.Text;

lbn_item.Font.Size=10;

lbn_item.ForeColor=Color.FromName("#666666");

lbn_item.Attributes.Add ("onmouseover","currentcolor=this.style.color;this.style.color='#14AC05'");

lbn_item.Attributes.Add("onmouseout","this.style.color=currentcolor");

}

else

{

Label lbl_item=(Label)obj_item;

lbl_item.ForeColor=Color.Blue;

lbl_item.Font.Bold=true;

lbl_item.Font.Underline=true;

lbl_item.Text="" + lbl_item.Text + "";

lbl_item.Font.Size=10;

}

}

}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章