即刻完成你的ASP.NET程式
最後更新:2017-02-28
來源:互聯網
上載者:User
asp.net|程式 ASP.NET的出現,使網路程式員們設計程式的時候完全找到了“設計程式”的感覺,當然,更多的,他們感覺到了ASP.NET的得心應手。但是,沒有想偷懶就沒有進步,如果你僅僅依靠ASP.NET自己的強大功能而不想其他手段,那你很快就會發現別人設計程式比你會快很多而且輕輕鬆鬆。現在,我們來學習幾招偷懶的手段,讓別人跟在你後面敬佩吧。
使用過ASP的朋友一定都記得,ASP的很多功能需要一些第三方的組件實現,比如檔案上傳功能的實現就往往使用ASPCNUP組件實現。使用這些組件,不但可以擴充ASP程式的功能,而且,大大提高程式開發速度。我們這裡介紹的偷懶手段,也就是介紹幾款與我們平時設計密切相關的組件。
一、超級資料表格:SuperDataGrid
ASP.NET內建的DatGrid功能強大,定製也很方便,但是,因為它不是專門為資料庫應用設計的。所以,在串連資料庫的時候,我們不得不首先串連資料庫,然後綁定資料。而SuperDataGrid是專門為資料庫設計的,所以,那些繁瑣的串連資料庫我們也就沒有必要去寫了。需要
SuperDataGrid將DataGrid的一些屬性簡單化,使用這個控制項,我們可以方便的實現資料庫資料的顯示、排序、修改資料,這些功能的實現,只要簡單幾行代碼就可以。我們現在來看它的使用。
一)顯示資料表
以下代碼示範怎樣使用SuperDataGrid來簡單的顯示資料表中的所有資料:
<%@ Register TagPrefix="Super" Namespace="Superexpert.Data"
Assembly="Superexpert.SuperDataGrid" %>
<Super:SuperDataGrid
ConnectionString="Server=localhost;UID=demo;pwd=secret;database=pubs"
TableName="Titles"
Runat="Server" />
具體效果請看:
http://www.superexpertcontrols.com/superdatagrid/samples/sample1.aspx
現在,我們來簡單分析以上代碼。第一行使調用SuperDataGrid控制項,我們在以後的舉例中都將使用到。第二行,和標準的DataGrid使用差不多,我們看看SuperDataGrid的一些屬性:
ConnectionString:因為是串連資料庫,當然少不了資料庫連接語句。這個參數就是串連資料的語句;
TableName:要顯示具體的表,我們就在這裡定義。
看到這裡,我們已經感覺到了“簡單”,但是,在實際的應用中,像這種直接顯示一個表的情況是很少的。所以,我們需要其他更多的功能。最直接的,我們需要Select語句的返回結果。
<%@ Register TagPrefix="Super" Namespace="Superexpert.Data"
Assembly="Superexpert.SuperDataGrid" %>
<Super:SuperDataGrid
ConnectionString="Server=localhost;UID=sa;pwd=secret;database=Northwind"
CommandText="Select ProductName, CategoryName
From Products, Categories Where Products.CategoryID=Categories.CategoryID"
Runat="Server" />
具體效果請看:
http://www.superexpertcontrols.com/superdatagrid/samples/sample2.aspx
以上代碼返回Select語句的結果。在這裡,我們見到一個新的屬性:
CommandText:和Command一樣,就是Select語句;
二)資料排序
在DataGrid中,資料排序雖然簡單,但是代碼還是不少。我們現在來看SuperDataGrid中怎樣給資料排序:
<%@ Register TagPrefix="Super" Namespace="Superexpert.Data"
Assembly="Superexpert.SuperDataGrid" %>
<form runat="Server">
<Super:SuperDataGrid
ConnectionString="Server=localhost;UID=sa;pwd=secret;database=Pubs"
TableName="Titles"
EnableSorting="True"
Runat="Server" />
</form>
具體效果請看:
http://www.superexpertcontrols.com/superdatagrid/samples/sample3.aspx
仔細看以上代碼,其實就是設定了一個EnableSortinga屬性為真。也就是開啟排序功能。需要仔細注意的一點,要將SuperDataGrid包括在Form中。
三)資料分頁
在ASP中,很多朋友會為分頁煩惱,現在,我們看看SuperDataGrid中怎樣分頁:
<%@ Register TagPrefix="Super" Namespace="Superexpert.Data"
Assembly="Superexpert.SuperDataGrid" %>
<form runat="Server">
<Super:SuperDataGrid
ConnectionString="Server=localhost;UID=sa;pwd=secret;database=pubs"
TableName="Titles"
EnablePaging="True"
PageSize="3"
PagerStyle-Mode="NumericPages"
Runat="Server" />
</form>
具體效果請看:
http://www.superexpertcontrols.com/superdatagrid/samples/sample4.aspx
我們來看看SuperDataGrid的幾個新屬性:
EnablePaging:首先,我們當然要開啟資料分頁;
PageSize:和DataGrid一樣,每頁資料顯示的條數;
PagerStyle-Mode:和DataGrid一樣,頁碼顯示方式;
四)資料編輯
我們知道,在DataGrid中,我們可以在直接編輯資料,但是,一般我們很少使用這樣功能,因為這樣編輯資料不是很方便也不是很實用,代碼編寫也比較多。現在,SuperDataGrid也提供這個功能,當然,我們不需要寫那麼多代碼,只需要簡單的設定就可以,其他,SuperDataGrid全部幫我們弄好了。
<%@ Register TagPrefix="Super" Namespace="Superexpert.Data"
Assembly="Superexpert.SuperDataGrid" %>
<form runat="Server">
<Super:SuperDataGrid
ConnectionString="Server=localhost;UID=sa;pwd=secret;database=Northwind"
TableName="Products"
EnableEditing="True"
EnablePaging="True"
Runat="Server" />
</form>
具體效果請看:
http://www.superexpertcontrols.com/superdatagrid/samples/sample5.aspx
看以上代碼,如果需要編輯資料,只要加EnableEditing屬性就可以了。是不是特別簡單?當然,我們仍然要將SuperDataGrid放在Form中。
五)緩衝
ASP.NET的緩衝功能我們已經知道很強大,但是,具體到SuperDataGrid,你會發現它更加方便。使用SuperDataGrid的時候,會自動緩衝已經顯示過的資料來提高程式效率。設定緩衝功能可以使用CacheScope屬性,我們可以設定緩衝類型為Application,,Session和 None。
SuperDataGrid預設緩衝類型為Application,也就是所有使用者共用緩衝;如果採用Session,緩衝只針對特殊的使用者;如果設定為None,那就是不要緩衝功能。
預設的,緩衝會保持30分鐘,當然,我們可以使用CacheDuration屬性設定緩衝時間,單位為分鐘。
二、超級表單:Superexpert DataForm
剛才我們看到SuperDataGrid已經具有資料修改功能,但是,由於資料瀏覽和修改同時進行,實際上我們很少使用那種方式,更多的,我們還說採用單個記錄修改。
以往我們在使用表單修改或者增加資料庫資料的時候,需要作的工作很多,比如設定資料格式等,如果資料比較多,那更加繁瑣。現在,使用Superexpert DataForm,我們可以簡單的實現這些功能。
Superexpert DataForm可以自動儲存或者修改資料庫資料,還可以使用它自動從資料庫產生表單(實際是瀏覽資料),我們甚至可以自訂樣式來自動修改、更新資料庫表。
一)從資料庫自動產生表單
假設我們使用以下SQL語句產生一個叫CustomerSurveys的資料表:
Create Table CustomerSurvey
(
Customer_ID INT NOT NULL IDENTITY Primary Key,
Customer Varchar( 50 ) NOT NULL,
Age INT NOT NULL,
Birthdate DateTime NOT NULL,
Comments Text
)
這個資料表有Customer_ID、Customer、 Age、Birthdate和Comments五個欄位。我們可以使用Superexpert DataForm自動產生一個表單,使用這個表單,我們可以直接向該資料表增加資料。
<%@ Register TagPrefix="Super" Namespace="Superexpert.Data"
Assembly="Superexpert.DataForm" %>
<html>
<head><title>SimpleDataForm.aspx</title></head>
<body>
<super:SqlDataForm
TableName="CustomerSurvey"
ConnectionString="Server=Localhost;UID=sa;PWD=secret;Database=Pubs"
Mode="AddRecord"
runat="Server" />
</body>
</html>
具體效果如下:
http://www.superexpertcontrols.com/dataform/samples/sample1.aspx
為了更好的理解Superexpert DataForm,我們必須瞭解那些東西是可以自動產生的:
1、表單中的TextBox寬度是根據資料表資料寬度自動產生的;
2、填入表單中資料的驗證是自動產生的。如果資料表要求資料不為Null,那麼提交表單的時候就要求輸入;如果資料為Int,要求填入Integer;如果資料為DateTime,要求填入DateTime資料。
3、點擊提交按鈕以後,資料自動儲存到資料表。
所有我們要做的只是提供資料表名稱和資料庫連接字串。
二)設定DataForm模式
DataForm有以下幾種模式:
1、AddRecord:增加資料模式;
2、UpdateRecord:修改單條資料模式;
3、UpdateTable:成批修改資料模式;
4、Custom:提交資料時可以自己設定邏輯驗證;
為了修改一條已經存在的資料,我們必須設定DataForm模式為UpdateRecord。然後,我們必須確定修改那一條資料,我們通過DataKeyField和DataKeyValue唯一確定一條資料,DataKeyField是資料表主鍵;DataKeyValue是一條資料的主鍵的值。
以下代碼修改資料表中第三條記錄:
<%@ Register TagPrefix="Super" Namespace="Superexpert.Data"
Assembly="Superexpert.DataForm" %>
<html>
<head><title>DataFormUpdateRecord.aspx</title></head>
<body>
<super:SqlDataForm
TableName="CustomerSurvey"
ConnectionString="Server=Localhost;UID=sa;PWD=secret;Database=Pubs"
DataKeyField="Customer_ID"
DataKeyValue="3"
Mode="UpdateRecord"
runat="Server" />
</body>
</html>
具體效果如下:
http://www.superexpertcontrols.com/dataform/samples/sample2.aspx
以上代碼設定Mode為UpdateRecord,設定DataKeyField為Customer_ID,設定DataKeyValue為3。
如果我們需要修改資料表中的所有資料,可以將DataForm模式設定為UpdateTable。在設定為修改整個表以後,會在資料表單上方產生一個導航條,通過這個導航條,我們可以瀏覽資料表中的所有資料。
<%@ Register TagPrefix="Super" Namespace="Superexpert.Data"
Assembly="Superexpert.DataForm" %>
<html>
<head><title>DataFormUpdateTable.aspx</title></head>
<body>
<super:SqlDataForm
TableName="CustomerSurvey"
ConnectionString="Server=Localhost;UID=sa;PWD=secret;Database=Pubs"
DataKeyField="Customer_ID"
Mode="UpdateTable"
runat="Server" />
</body>
</html>
具體效果如下:
http://www.superexpertcontrols.com/dataform/samples/sample3.aspx
如果我們將模式設定為Custom,我們就可以設定提交表單以後的動作。比如,以下代碼實現提交表單以後自動轉到ThankYou.aspx頁面。
<%@ Register TagPrefix="Super" Namespace="Superexpert.Data"
Assembly="Superexpert.DataForm" %>
<Script runat="Server">
Sub Form_Submit( s As Object, e As EventArgs )
myForm.Save()
Response.Redirect( "ThankYou.aspx" )
End Sub
</Script>
<html>
<head><title>DataFormCustom.aspx</title></head>
<body>
<super:SqlDataForm
id="myForm"
TableName="CustomerSurvey"
ConnectionString="Server=Localhost;UID=sa;PWD=secret;Database=Pubs"
Mode="Custom"
runat="Server" />
</body>
</html>
具體效果如下:
http://www.superexpertcontrols.com/dataform/samples/sample4.aspx
三)設定DataForm樣式
DataForm有四種樣式我們可以修改:
1、HeaderStyle:定義資料表單的Header樣式;
2、LabelStyle:定義資料表單的Label樣式;
3、FieldStyle:定義資料表單的Field樣式;
4、FooterStyle:定義資料表單的Footer樣式;
DataForm還支援以下屬性設定:
GridLines:定義資料表單的線格式,包括:None、Both、Horizontal和Vertical。
Height:資料表單控制項高度;
Width:資料表單控制項寬度;
BoderStyle:資料表單邊框格式;
BorderWidth:資料表單邊框寬度;
BorderColor:資料表單邊框顏色;
CellPadding:資料表單控制項大小;
CellSpacing:資料表單控制項間間距;
我們現在看一個舉例:
<%@ Register TagPrefix="Super" Namespace="Superexpert.Data"
Assembly="Superexpert.DataForm" %>
<html>
<head><title>DataFormStyle.aspx</title></head>
<body>
<super:SqlDataForm
HeaderStyle-backColor="Salmon"
FieldStyle-backColor="yellow"
LabelStyle-Font-Name="Script"
LabelStyle-Font-Size="28pt"
FooterStyle-backColor="blue"
Cellpadding="10"
Cellspacing="0"
GridLines="Both"
BorderStyle="Dashed"
BorderColor="red"
BorerWidth="10px"
LabelStyle-BackColor="lightgreen"
TableName="CustomerSurvey"
ConnectionString="Server=Localhost;UID=sa;PWD=secret;Database=Pubs"
runat="Server" />
</body>
</html>
具體效果如下:
http://www.superexpertcontrols.com/dataform/samples/sample5.aspx
四)自訂布局的DataForm
我們也可以自己增加控制項設計資料表單布局,可以增加的控制項如下:
● DataTextBox
● DataDropDownList
● DataRadioButton
● DataCheckbox
● DataListBox
● DataRadioButtonList
● DataLabel
沒一個控制項都擴充了標準控制項的功能。這些控制項都有兩個屬性:DataField和DataType。DataField讓控制項和資料庫的具體欄位聯絡起來,DataType定義輸入資料的類型。以下是一個增加資料的舉例:
<%@ Register TagPrefix="Super" Namespace="Superexpert.Data"
Assembly="Superexpert.DataForm" %>
<Script runat="Server">
Sub Form_Submit( s As Object, e As EventArgs )
myForm.Save()
Response.Redirect( "ThankYou.aspx" )
End Sub
</Script>
<html>
<head><title>DataFormCustomLayout.aspx</title></head>
<body>
<super:SqlDataForm
id="myForm"
TableName="CustomerSurvey"
ConnectionString="Server=Localhost;UID=sa;PWD=secret;Database=Pubs"
runat="Server">
Customer Name:
<br>
<super:DataTextBox
DataField="Customer"
Runat="Server" />
<p>
Age:
<br>
<super:DataTextBox
DataField="Age"
Runat="Server" />
<p>
Birthdate:
<br>
<super:DataTextBox
DataField="Birthdate"
Runat="Server" />
<p>
<asp:Button
Text="Add New Customer!"
Runat="Server" />
<p>
</super:SqlDataForm>
</body>
</html>
具體效果請看:
http://www.superexpertcontrols.com/dataform/samples/sample6.aspx
三、超級映像文字控制項:Superexpert ImageText
我們知道,ASP.NET可以將文字產生圖象,只是,對我大部分使用者而言,這些功能藏的有點深。Superexpert ImageText讓我們可以很簡單的實現將文字產生圖象。我們可以使用安裝在伺服器上的任何一款字型來產生圖象,也可以使用我們下面將要提到的所有圖象特效來產生圖象。
我們可以利用Superexpert ImageText來快速的產生圖象,它的好處是我們可以完全控制文字的樣式。
一)自動產生圖象
要使用Superexpert ImageText,我們只要簡單的提供一個唯一ID和需要轉化的文字。下面的舉例將產生“Hello World”:
<%@ Register TagPrefix="Super" Namespace="Superexpert"
Assembly="Superexpert.ImageText" %>
<Super:ImageText
ID="ctrlHello"
Text="Hello World!"
Runat="Server"/>
具體效果請看:
http://www.superexpertcontrols.com/imagetextbeta2/samples/sample1.aspx
為了取得更好的效果,我們可以為文字設定字型和顏色,也可以設定圖象背景,下面的舉例就是這樣:
<%@ Register TagPrefix="Super" Namespace="Superexpert"
Assembly="Superexpert.ImageText" %>
<Super:ImageText
ID="ctrlComic"
Text="Hello World!"
Font-Name="Comic Sans MS"
Font-Size="34"
ForeColor="DarkBlue"
Runat="Server"/>
<p>
<Super:ImageText
ID="ctrlImpact"
Text="Hello World!"
Font-Name="Impact"
Font-Size="24"
ForeColor="Red"
BackColor="Black"
Runat="Server"/>
具體效果請看:
http://www.superexpertcontrols.com/imagetextbeta2/samples/sample2.aspx
需要瞭解的是,無論採用什麼字型,只要伺服器上安裝了所使用的字型就行,只要已經轉化為圖象,所有瀏覽器都可以正確的顯示。
二)陰影特效
通過設定DropShadow屬性,我們可以將文字轉化為帶有陰影製作效果的圖象:
<%@ Register TagPrefix="Super" Namespace="Superexpert"
Assembly="Superexpert.ImageText" %>
<Super:ImageText
ID="ctrlDrop"
Text="Hello World!"
Font-Name="Impact"
Font-Size="34"
DropShadow-Display="True"
DropShadow-xOffSet="3"
Runat="Server"/>
具體效果如下:
http://www.superexpertcontrols.com/imagetextbeta2/samples/sample3.aspx
針對陰影製作效果,我們還可以設定以下屬性來增強:
● DropShadow-xOffSet:水平方向位移
● DropShadow-yOffSet :垂直方向位移
● DropShadow-Alpha :設定陰影透明度
● DropShadow-Color :設定陰影顏色
三)旋轉文字效果
通過設定文字的RotateFlip屬性,我們可以將文字進行旋轉:
<%@ Register TagPrefix="Super" Namespace="Superexpert"
Assembly="Superexpert.ImageText" %>
<Super:ImageText
ID="ctrlHello"
Text="Hello World!"
Font-Size="24"
RotateFlip="Rotate90FlipNone"
Runat="Server"/>
<p>
<Super:ImageText
ID="ctrlHello2"
Text="Hello World!"
Font-Size="24"
RotateFlip="Rotate180FlipNone"
Runat="Server"/>
具體效果請看:
http://www.superexpertcontrols.com/imagetextbeta2/samples/sample4.aspx
四)控製圖象背景
我們可以設定背景為漸進顏色、圖片或者特殊圖案,以下是一個漸進顏色背景的舉例:
<%@ Register TagPrefix="Super" Namespace="Superexpert"
Assembly="Superexpert.ImageText" %>
<Super:ImageText
ID="ctrlHello"
BackGround-Gradient="True"
CellPadding="4"
Text="Hello World!"
Runat="Server"/>
具體效果請看:
http://www.superexpertcontrols.com/imagetextbeta2/samples/sample5.aspx
我們還可以使用BackGround-HatchStyle屬性來設定特殊背景圖案和圖案顏色,以下舉例就是一個錯網圖案背景的圖象:
<%@ Register TagPrefix="Super" Namespace="Superexpert"
Assembly="Superexpert.ImageText" %>
<Super:ImageText
ID="ctrlHello"
CellPadding="10"
BackGround-HatchStyle="Weave"
BackGround-StartColor="Green"
Text="Hello World!"
Runat="Server"/>
具體效果請看:
http://www.superexpertcontrols.com/imagetextbeta2/samples/sample6.aspx
五)多行文字
通過設定圖象的寬度,可以實現多行文字的效果:
<%@ Register TagPrefix="Super" Namespace="Superexpert"
Assembly="Superexpert.ImageText" %>
<Super:ImageText
ID="ctrlHello"
Text="This is a long paragraph that demonstrates how you can wrap text with the ImageText control"
CellPadding="20"
Width="200"
BackColor="Orange"
Runat="Server"/>
具體效果請看:
http://www.superexpertcontrols.com/imagetextbeta2/samples/sample7.aspx
六)定稿圖象
如果不想每次頁面變動都重建圖象,可以設定Final屬性為True。
四、總結
以上介紹的一些控制項,我們在平時的設計中用的可能都比較多,非常使用。在我我們潛心研究ASP.NET的同時,我們可以學習利用這些工具來提高我們的工作效率和工作效果。