Asp.Net 中幾種相似的標記符號

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

答: < %#... %>: 是在綁定控件DataBind()方法執行時被執行,用於數據綁定
如: <asp:Label  runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"數據源某字段") %>' />

    

     


< %= %>: 在程序執行時被調用,可以顯示後臺變量值
如:
*.aspx中: < %= aaa %>
*.cs中: protected string aaa="姓名";

//補充   (帶ruant="server",無法js裏直接用<%=xx%>調用後臺變量,必須通過中間體)

 

 

順便說一上取服務器端控 件的方法:
(1)用JS取本頁面 中的 服 務器端控件 值:

服務器端控件 值:

function a()
     {
      
var i;
        i
= document.getElementById( ' <%= 服務器控件id.ClientID %> ' ).value;   
       
// 取Label控件值
         document.getElementById( ' <%=lblUserName.ClientID %> ' ).innerText = i;
     }

(2)用JS取自定義用戶控件 (**.ascx) 中的

 

function b()
{
     
// .ascx用戶控件在本頁面上的id,即<uc>標籤中的ID名稱,再加 上.ascx頁面裏面的服務器控件ID
     
// 並用"_"連 接
     var j = document.getElementById( ' <%=UC 的ID.ClientID %> ' + " _txtID " ).value; // TextBox
     
// 在取Label控件 的值時改用下面的寫法,可能有些朋友也用了上面的寫法,所以取不到吧……
     var jj = document.getElementById( ' <%=UC 的ID.ClientID %> ' + " _txtID " )..innerHTML; // Label
}
  

 

轉自:http://blog.csdn.net/zwjxxm/archive/2008/04/09/2270653.aspx

我這裏補充一下:
對於服務器端控件裏調用js,不可以直接綁後臺變量,要先聲明一下js變量,賦值爲後臺變量
<script>
    var testTxt=" <%=stetValue %>";
    </script>
    <div>
<input type="button" οnclick="return confirm('<%=stetValue %>')" value="測試" /> //客戶端控件可以直接用
        <asp:Button ID="Button1" runat="server" Text="測試" OnClientClick="return confirm(testTxt)" />
    </div>

 

 

//end

 

 

 

< % %>: 內聯代碼塊裏面可以在頁面文件*.aspx或*.ascx文件裏面嵌入後臺代碼
如:
< %
for(int i=0;i<100;i++)
{
Reaponse.Write(i.ToString());
}
%>


< %@ %>是在*.aspx頁面前臺代碼導入命名空間,
如:
< %@ Import namespace="System.Data"%>


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

 

3.DataBind,獲得的數據,系統會將其默認爲String,怎樣轉化爲其它的類型?
DataBinder.eval_r(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.顯示一共有多少頁,並且報告當前爲第幾頁
當前頁是:< %=DataGrid1.CurrentPageIndex+1%>

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

 

11.個性化分頁
程序員大本營之"親密接觸ASP.Net(14)"有 完整代碼

 

12.要將頁面重置爲有效的狀態
IValidator val;
foreach(val in Validators)
{
Val.IsValid = true;
}


13.重新執行整個驗證序列
IValidator val;
foreach(val in Validators)
{
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 文檔的根節點中指定該信息,如下所示:

 

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指定控件文件源
身體:
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文件的節中


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 //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;

}
}
}

}

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