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.重新執行整個驗證序列
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文檔的根節點中指定該信息,如下所示:
<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-][email protected][/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只接受物理路徑,不接受虛擬路徑
中國最大的web開發資源網站及技術社區,新聞熱點
疑難解答
圖片精選