文稿本杰.NET培訓(xùn)_第1頁
文稿本杰.NET培訓(xùn)_第2頁
文稿本杰.NET培訓(xùn)_第3頁
文稿本杰.NET培訓(xùn)_第4頁
文稿本杰.NET培訓(xùn)_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余94頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

目標(biāo)(1/4)數(shù)據(jù)源控件(

)SqlDataSourceAccessDataSourceXML

DataSourceSiteMapDataSourceObjectDataSource本杰.NET|

||

z

目標(biāo)(2/4)數(shù)據(jù)綁定控件(前臺)列表類DropDownListListBoxCheckBoxListRadioButtonList數(shù)據(jù)綁定語法多條記錄類GridViewDataListRepeater單行記錄類DetailsViewFormView本杰.NET|

||

z

目標(biāo)(3/4)數(shù)據(jù)綁定控件嵌套模板內(nèi)嵌套基于Web用戶控件的嵌套嵌套時(shí)的參數(shù)傳遞多個(gè)數(shù)據(jù)綁定控件交互同頁面

互丌同頁面

互本杰.NET|

||

z

目標(biāo)(4/4)三層架構(gòu)創(chuàng)建ObjectDataSource控件源對象業(yè)務(wù)對象創(chuàng)建原理業(yè)務(wù)對象類構(gòu)造凼數(shù)原理指定對象方法及使用使用強(qiáng)類型對象及使用顯式

以獲得設(shè)計(jì)器支持使用參數(shù)使用參數(shù)為Insert、Update和Delete方法傳遞參數(shù)標(biāo)識排序和分頁參數(shù)參數(shù)方向傳遞自定義參數(shù)類型緩存篩選檢測本杰.NET|

||

z

目標(biāo)(1/4)-SqlDataSource配置命令&參數(shù)(簡單參數(shù))SelectInsertDeleteUpdate參數(shù)操作給值叏值事件編程參數(shù)(高級)-綁定本杰.NET|

||

z

SqlDataSource-配置(1/5)連接字符串<configuration><connectionStrings><add

name="ProductConnectionString"

connectionString="DataSource=.\sqlexpress;Initial

Catalog=Product;uid=sa;pwd=sa;"providerName="System.Data.SqlClient"/></connectionStrings></configuration>本杰.NET|

||

z

SqlDataSource-配置(2/5)向?qū)?“配置數(shù)據(jù)源”本杰.NET|

||

z

SqlDataSource-配置(3/5)“屬性”窗口本杰.NET|

||

z

SqlDataSource-配置(4/5)“定義命令”本杰.NET|

||

z

本杰.NET張mSqlDataSource-配置(5/5)源代碼中直接配置<asp:SqlDataSource

ID="SqlDataSource1"

runat="server"

ConnectionString="<%$ConnectionStrings:ProductConnectionString

%>"mand="DELETE

FROM[學(xué)生]WHERE[學(xué)號]=@學(xué)號"mand="INSERTINTO

[學(xué)生]

([學(xué)號],

[ ],

[ ])

VALUES

(@學(xué)號,

@ ,

@

)"mand="SELECT

*

FROM

[學(xué)生]

where <=

@

"mand="UPDATE

[學(xué)生]

SET

[ ]

=

@ ,

[ ]

=

@ WHERE

[學(xué)號]

=@學(xué)號"onselecting="SqlDataSource1_Selecting"onselected="SqlDataSource1_Selected"

OnInserting="SqlDataSource1_Inserting"OnInserted="SqlDataSource1_Inserted"

OnUpdated="SqlDataSource1_Updated"OnUpdating="SqlDataSource1_Updating"OnDeleting="SqlDataSource1_Deleting"OnDeleted="SqlDataSource1_Deleted"><DeleteParameters><asp:Parameter

Name="學(xué)號"Type="String"/></DeleteParameters><UpdateParameters><asp:Parameter

Name=""

Type="String"

/><asp:Parameter

Name=" "

Type="Int32"

/><asp:Parameter

Name="學(xué)號"Type="String"/></UpdateParameters><InsertParameters><asp:Parameter

Name="<asp:Parameter

Name=""

Type="String"

/>"

Type="Int32"

/><asp:Parameter

Name="學(xué)號"/></InsertParameters><SelectParameters><asp:Parameter

Name=""

Type="Int32"

/></SelectParameters></asp:SqlDataSource>純使用DataSource的事件進(jìn)行參數(shù)編程Parameter類是所有參數(shù)對象的基類,其中包括所有參數(shù)類型通用的Name、Type、Direction和DefaultValue屬性本杰.NET|

||

z

SqlDataSource-命令(Select)命令參數(shù)事件事件激發(fā)mand="SELECT

*

FROM

[學(xué)生]

where <=

@

""

Type="Int32"

/><SelectParameters><asp:Parameter

Name="</SelectParameters>onselecting="SqlDataSource1_Selecting“onselected="SqlDataSource1_Selected"der,

EventArgse)protected

void

Button1_Click(objec{this.ListBox1.DataBind();}protected

void

SqlDataSource1_Selecting(objec

der,SqlDataSourceSelectingEventArgs

e){

mand.Parameters["@

"].Value

=

29;

}事件protected

voidSqlDataSource1_Selected(objec

der,SqlDataSourceStatusEventArgs

e){this.Label1.Text

=

string.Format(“叏回了:{0}行”,

e.AffectedRows);

}本杰.NET|

||

z

SqlDataSource-命令(Insert)件件命令mand="INSERT

INTO

[學(xué)生]

([學(xué)號],

[ ],

[ ])

VALUES

(@學(xué)號,

@ ,

@

)"參數(shù)<InsertParameters><asp:Parameter

Name=" "

Type="String"

/><asp:Parameter

Name=" "

Type="Int32"

/><asp:Parameter

Name="學(xué)號"/></InsertParameters>OnInserting="SqlDataSource1_Inserting"

OnInserted="SqlDataSource1_Inserted"protected

voidButton3_Click(objec der,

EventArgse){

this.SqlDataSource1.Insert();}事件事事protected

void

Button2_Click(objec

der,

EventArgs

e){

this.SqlDataSource1.InsertParameters["學(xué)號"].DefaultValue

=

"088";this.SqlDataSource1.InsertParameters["

"].DefaultValue

=

"

";this.SqlDataSource1.InsertParameters["

"].DefaultValue

=

"18“;this.SqlDataSource1.Insert();

}protected

void

SqlDataSource1_Inserting(objec

der,

mandEventArgs

e){

mand.Parameters["@學(xué)號"].Value="099";mand.Parameters["@"].Value="";

mand.Parameters[“@”].Value=“21“;}protected

void

SqlDataSource1_Inserted(objec

der,

SqlDataSourceStatusEventArgs

e){this.Label1.Text=string.Format("增加了:{0}行",e.AffectedRows);}本杰.NET|

||

z

SqlDataSource-命令(Delete)命令參數(shù)事件事事件件mand="DELETE

FROM[學(xué)生]WHERE[學(xué)號]=@學(xué)號"<DeleteParameters><asp:Parameter

Name="學(xué)號"Type="String"/></DeleteParameters>OnDeleting="SqlDataSource1_Deleting"

OnDeleted="SqlDataSource1_Deleted"protected

void

Button7_Click(objec

der,

EventArgs

e){

this.SqlDataSource1.Delete();}protected

void

Button6_Click(objec

der,

EventArgse){

this.SqlDataSource1.DeleteParameters["學(xué)號"].DefaultValue="099";this.SqlDataSource1.Delete();}protected

void

SqlDataSource1_Deleting(objec

der,mandEventArgs

e){

if(

mand.Parameters["@學(xué)號"].Value!=null){ string學(xué)號

=

mand.Parameters["@學(xué)號"].Value.ToString();if

(學(xué)號

==

"099"){

this.Label1.Text="丌能刪除099";e.Cancel

=

true;

}

}}protected

void

SqlDataSource1_Deleted(objec der,

SqlDataSourceStatusEventArgs

e){

this.Label1.Text=string.Format("刪除了:{0}行",e.AffectedRows);}本杰.NET|

||

z

SqlDataSource-命令(Update)命令參數(shù)事件事事件件mand="UPDATE

[學(xué)生]

SET

[ ]

=

@ ,

[ ]

=

@WHERE[學(xué)號]=@學(xué)號"<UpdateParameters><asp:Parameter

Name="<asp:Parameter

Name=""

Type="String"

/>"

Type="Int32"

/><asp:Parameter

Name="學(xué)號"Type="String"/></UpdateParameters>OnUpdated="SqlDataSource1_Updated"

OnUpdating="SqlDataSource1_Updating"protected

void

Button5_Click(objec

der,

EventArgs

e){

this.SqlDataSource1.Update();}protected

void

Button4_Click(objecder,

EventArgs

e){

this.SqlDataSource1.UpdateParameters["學(xué)號"].DefaultValue="088";this.SqlDataSource1.UpdateParameters["this.SqlDataSource1.UpdateParameters[""].DefaultValue="李思思";"].DefaultValue="18“;this.SqlDataSource1.Update();

}protected

void

SqlDataSource1_Updating(objec

der,mandEventArgs

e){

mand.Parameters["@學(xué)號"].Value="088";mand.Parameters["@

"].Value="李思思同學(xué)";mand.Parameters[“@

”].Value

=

“21”;protectedvoid

SqlDataSource1_Updated(objec}der,

SqlDataSourceStatusEventArgs

e){this.Label1.Text=

string.Format("修改了:{0}行",

e.AffectedRows);

}本杰.NET|

||

z

參數(shù)(高級)Parameter類是所有參數(shù)對象的基類,其中包括所有參數(shù)類型通用的Name、Type、Direction和

DefaultValue屬性可以使用從Parameter類派生的參數(shù)類型來獲叏其他源中的值本杰.NET|

||

z

ControlParameterParameterFormParameterProfileParameterQueryStringParameterSessionParameter參數(shù)(高級)本杰.NET|

||

z

ControlParameter將參數(shù)設(shè)置為ASP.NET網(wǎng)頁中的Control的屬性值。使用ControlID

屬性指定

Control。使用ControlParameter對象的PropertyName

屬性指定提供參數(shù)值的屬性的名稱。從Control派生的某些控件將定義ControlValuePropertyAttribute,從而確定從中檢索控件值的默認(rèn)屬性。只要沒有顯式設(shè)置PropertyName屬性,就會使用默認(rèn)屬性。ControlValuePropertyAttribute應(yīng)用于以下控件屬性:Calendar.SelectedDateCheckBox.CheckedDetailsView.SelectedValueFileUpload.FileBytesGridView.SelectedValueLabel.TextTextBox.TextTreeView.SelectedValue本杰.NET|

||

z

Parameter將參數(shù)設(shè)置為Http對象的值。使用Name

屬性指定

Http

對象的名稱。如果指定的

Http

對象丌存在,則將使用DefaultValue

屬性的值作為參數(shù)值。本杰.NET|

||

z

FormParameter將參數(shù)設(shè)置為HTML窗體字段的值。使用

FormField屬性指定HTML窗體字段的名稱。如果指定的HTML窗體字段值丌存在,則將使用

DefaultValue屬性的值作為參數(shù)值。本杰.NET|

||

z

ProfileParameter將參數(shù)設(shè)置為當(dāng)前用戶配置文件(Profile)中的屬性的值。使用PropertyName屬性指定配置文件屬性的名稱。如果指定的配置文件屬性丌存在,則將使用DefaultValue屬性的值作為參數(shù)值。本杰.NET|

||

z

QueryStringParameter將參數(shù)設(shè)置為QueryString字段的值。使用

QueryStringField屬性指定QueryString字段的名稱。如果指定的QueryString字段丌存在,則將使用DefaultValue屬性的值作為參數(shù)值。UrlEncode本杰.NET|

||

z

SessionParameter將參數(shù)設(shè)置為Session對象的值。使用

SessionField屬性指定Session對象的名稱。如果指定的Session對象丌存在,則將使用DefaultValue屬性的值作為參數(shù)值。本杰.NET|

||

z

目標(biāo)(2/4)-數(shù)據(jù)綁定控件(前臺)為前臺提供數(shù)據(jù)的兩種方式DataSourceDataSourceID簡單綁定控件DropDownListListBoxCheckBoxListRadioButtonList數(shù)據(jù)綁定語法高級綁定控件GridViewDataListRepeaterDetailsViewFormView同一綁定控件使用多個(gè)數(shù)據(jù)源(案例)模板編程(查找模板內(nèi)控件元素)(案例:批量更新)本杰.NET|

||

z

為前臺提供數(shù)據(jù)的兩種方式DataSource直接數(shù)據(jù)源(DataSet,DataTable…)DataSourceID關(guān)聯(lián)到一個(gè)DataSource控件的ID支持雙向數(shù)據(jù)綁定兩者丌能同時(shí)定義本杰.NET|

||

z

簡單綁定控件DropDownListListBoxCheckBoxListRadioButtonList本杰.NET|

||

z

數(shù)據(jù)綁定語法?語法只讀(單向綁定):<%#Eval(“列名”)%>可讀可寫(雙向綁定):<%#Bind(“列名”)%>語法應(yīng)用字符拼接:<%#“abc”+Eval(“列名”).ToString()%><%#Eval(“列名”,”abc{0}”)%>格式化:<%#Eval(“列名”,”{0:yyyy-MM-dd}”)%>調(diào)用凼數(shù):<%#凼數(shù)(Eval(“列名”))%>調(diào)用綁定Page.DataBind();Control.DataBind();本杰.NET|

||

z

GridView可以使用GridView執(zhí)行以下操作:通過數(shù)據(jù)源控件自勱綁定和顯示數(shù)據(jù)。通過數(shù)據(jù)源控件對數(shù)據(jù)迚行選擇、排序、分頁、編輯和刪除。指定自定義列和樣式。利用模板創(chuàng)建自定義用戶界面(UI)元素。通過處理事件將自己的代碼添加到GridView控件的功能中。前丐:DataGrid(.Framework1.1)本杰.NET|

||

z

GridView綁定和顯示數(shù)據(jù)列本杰.NET|

||

z

GridView分頁排序編輯自帶編輯功能:TextBox自定義編輯功能:使用模板Template(后續(xù))刪除自帶刪除自定義刪除,如”確定要?jiǎng)h除嗎?”本杰.NET|

||

z

GridView選擇DataKeyNames屬性DataKeys屬性取選中行的數(shù)據(jù)取DataKey單一Key復(fù)合Key取非Key列默認(rèn)方法:Cells[0].Text使用模板里的控件(復(fù)雜列)在”模板里講”本杰.NET|

||

z

GridView樣式本杰.NET|

||

z

GridView模板模板

說明AlternatingItemTemplate為TemplateField對象中的交替項(xiàng)指定要顯示的內(nèi)容。EditItemTemplate為TemplateField對象中處于編輯模式中的項(xiàng)指定要顯示的內(nèi)容。FooterTemplate為TemplateField對象的腳注部分指定要顯示的內(nèi)容。HeaderTemplate為TemplateField對象的標(biāo)頭部分指定要顯示的內(nèi)容。InsertItemTemplate為TemplateField對象中處于揑入模式中的項(xiàng)指定要顯示的內(nèi)容。DetailsView,FormView控件支持該模板。ItemTemplate為TemplateField對象中的項(xiàng)指定要顯示的內(nèi)容。本杰.NET|

||

z

GridView模板<asp:TemplateField

HeaderText="排序"SortExpression="排序"><ItemTemplate><asp:TextBox

ID="TextBox排序"Width="20"runat="server"Text='<%#Eval("排序")%>'

onmouseover="this.select();this.style.background='yellow';this.style.cursor='hand';"onmouseleave="this.style.background='white';"></asp:TextBox><asp:RequiredFieldValidator

ID="RequiredFieldValidator1"runat="server"ControlToValidate="TextBox排序"ErrorMessage="必須輸入"></asp:RequiredFieldValidator>< pareValidator

ID="CompareValidator1"runat="server"ControlToValidate="TextBox排序"ErrorMessage="整數(shù)"Operator="DataTypeCheck"Type="Integer"><</ItemTemplate></asp:TemplateField>pareValidator><asp:TemplateField

HeaderText="操作"><ItemTemplate><asp:CheckBox

ID="CheckBoxDelete"

runat="server"

/></ItemTemplate></asp:TemplateField>本杰.NET|

||

z

GridView處理事件(1/2)mand在GridView

控件中單擊某個(gè)按鈕時(shí)發(fā)生。此事件通常用于在該控件中單擊某個(gè)按鈕時(shí)執(zhí)行某項(xiàng)任務(wù)。PageIndexChanging在單擊頁導(dǎo)航按鈕時(shí)發(fā)生,但在GridView

控件執(zhí)行分頁操作之前。此事件通常用于取消分頁操作。PageIndexChanged在單擊頁導(dǎo)航按鈕時(shí)發(fā)生,但在GridView

控件執(zhí)行分頁操作之后。此事件通常用于在用戶定位到該控件中不同的頁之后需要執(zhí)行某項(xiàng)任務(wù)時(shí)。SelectedIndexChanging在單擊GridView

控件內(nèi)某一行的Select

按鈕(其CommandName

屬性設(shè)置為“Select”的按鈕)時(shí)發(fā)生,但在GridView控件執(zhí)行選擇操作之前。此事件通常用于取消選擇操作。SelectedIndexChanged在單擊GridView

控件內(nèi)某一行的Select

按鈕時(shí)發(fā)生,但在GridView

控件執(zhí)行選擇操作之后。此事件通常用于在選擇了該控件中的某行后執(zhí)行某項(xiàng)任務(wù)。Sorting在單擊某個(gè)用于對列進(jìn)行排序的超 時(shí)發(fā)生,但在

GridView

控件執(zhí)行排序操作之前。此事件通常用于取消排序操作或執(zhí)行自定義的排序例程。Sorted在單擊某個(gè)用于對列進(jìn)行排序的超 時(shí)發(fā)生,但在

GridView

控件執(zhí)行排序操作之后。此事件通常用于在用戶單擊對列進(jìn)行排序的超

之后執(zhí)行某項(xiàng)任務(wù)。RowDataBound在GridView

控件中的某個(gè)行被綁定到一個(gè)數(shù)據(jù)記錄時(shí)發(fā)生。此事件通常用于在某個(gè)行被綁定到數(shù)據(jù)時(shí)修改該行的內(nèi)容。本杰.NET|

||

z

本杰.NETcomGridView處理事件(2/2)RowCreated在GridView

控件中創(chuàng)建新行時(shí)發(fā)生。此事件通常用于在創(chuàng)建某個(gè)行時(shí)修改該行的布局或外觀。RowDeleting在單擊GridView

控件內(nèi)某一行的Delete

按鈕(其CommandName

屬性設(shè)置為“Delete”的按鈕)時(shí)發(fā)生,但在GridView

控件從數(shù)據(jù)源刪除記錄之前。此事件通常用于取消刪除操作。RowDeleted在單擊GridView

控件內(nèi)某一行的Delete

按鈕時(shí)發(fā)生,但在GridView

控件從數(shù)據(jù)源刪除記錄之后。此事件通常用于檢查刪除操作的結(jié)果。RowEditing在單擊GridView

控件內(nèi)某一行的Edit

按鈕(其CommandName

屬性設(shè)置為“Edit”的按鈕)時(shí)發(fā)生,但在GridView控件進(jìn)入編輯模式之前。此事件通常用于取消編輯操作。RowCancelingEdit在單擊GridView

控件內(nèi)某一行的Cancel

按鈕(其CommandName

屬性設(shè)置為“Cancel”的按鈕)時(shí)發(fā)生,但在GridView

控件退出編輯模式之前。此事件通常用于停止取消操作。RowUpdating在單擊GridView

控件內(nèi)某一行的Update按鈕(其CommandName

屬性設(shè)置為“Update”的按鈕)時(shí)發(fā)生,但在

GridView

控件更新記錄之前。此事件通常用于取消更新操作。RowUpdated在單擊GridView

控件內(nèi)某一行的Update

按鈕時(shí)發(fā)生,但在GridView

控件更新記錄之后。此事件通常用來檢查更新操作的結(jié)果。DataBound此事件繼承自BaseDataBoundControl

控件,在GridView

控件完成到數(shù)據(jù)源的綁定后發(fā)生。課堂練習(xí)DropDownList綁定數(shù)據(jù)SqlDataSourceDataSource:DataSet本杰.NET|

||

z

課堂練習(xí)ControlParameter使用TextBox綁定到SqlDataSource參數(shù)實(shí)現(xiàn)InsertDeleteUpdateSelect本杰.NET|

||

z

課堂練習(xí)GridView實(shí)現(xiàn)刪除和編輯本杰.NET|

||

z

案例:模板編程(查找模板內(nèi)控件元素)全選/全丌選/反選批量刪除批量更新統(tǒng)計(jì)匯總本杰.NET|

||

z

全選//全選中//思路://1.把所有的行遍歷//2.在每一行中,找到CheckBox//3.設(shè)置CheckBox.Checked=true;foreach

(GridViewRowrow

inthis.GridView1.Rows){//row有很多類型,只需要使用數(shù)據(jù)行if

(row.RowType==

D

ontrolRowType.DataRow){CheckBox

chk

=

row.FindControl("CheckBoxDelete")

as

CheckBox;chk.Checked

=

true;}}本杰.NET|

||

z

批量更新//1.遍歷所有行//2.叏當(dāng)前行的ID,名稱,順序//3.更新操作,只對當(dāng)前行foreach

(GridViewRow

row

in

this.GridView1.Rows){if

(row.RowType

==D

ontrolRowType.DataRow){string

ID

=

this.GridView1.DataKeys[row.RowIndex].Value.ToString();string

NewName

=

"";TextBox

txt名稱=row.FindControl("TextBox名稱")as

TextBox;NewName=txt名稱.Text;int

Sort

=0;TextBox

txt排序=row.FindControl("TextBox排序")as

TextBox;Sort=int.Parse(txt排序.Text);//Update操作this.SqlDataSource1.UpdateParameters["航空公司ID"].DefaultValue=ID;this.SqlDataSource1.UpdateParameters["名稱"].DefaultValue=NewName;this.SqlDataSource1.UpdateParameters["排序"].DefaultValue=Sort.ToString();this.SqlDataSource1.Update();}}this.GridView1.DataBind();本杰.NET|

||

z

批量刪除//批量刪除foreach

(GridViewRow

row

in

this.GridView1.Rows){if

(row.RowType

==

D

ontrolRowType.DataRow){CheckBox

chk

=

row.FindControl("CheckBoxDelete")

as

CheckBox;if

(chk.Checked){string

ID

=

this.GridView1.DataKeys[row.RowIndex].Value.ToString();//delete操作this.SqlDataSource1.DeleteParameters["航空公司ID"].DefaultValue=ID;this.SqlDataSource1.Delete();}}}this.GridView1.DataBind();本杰.NET|

||

z

統(tǒng)計(jì)匯總-DataBound事件//做統(tǒng)計(jì)//1.遍歷所有行//2.把每一行中的"排序"叏出//3.做統(tǒng)計(jì)int

sum=0;int

count

=

0;foreach

(GridViewRow

row

in

this.GridView1.Rows){ontrolRowType.DataRow)if

(row.RowType

==D{int

Sort

=0;TextBox

txt排序=row.FindControl("TextBox排序")as

TextBox;Sort=int.Parse(txt排序.Text);if(Sort<=3){///

row.Cells[3].BackColor=System.Drawing.Color.Yellow;//此處可順便設(shè)置行和行中單元格的樣式}sum

+=

Sort;count++;}}this.Label1.Text=string.Format("共有{0}行,排序字段的總和為:{1},平均排序?yàn)?{2}",count,sum,

sum/count);本杰.NET|

||

z

Row級別的控制RowDataBound和RowCreated事件//難點(diǎn):通過當(dāng)前的Row,叏得

對應(yīng)的數(shù)據(jù)行if

(e.Row.RowType==

D

ontrolRowType.DataRow){System.Data.DataRowView

datarow

=

e.Row.DataItem

as

System.Data.DataRowView;intsort=(int)datarow["排序"];if(sort<=3){e.Row.BackColor=

System.Drawing.Color.LightGreen;e.Row.Cells[3].BackColor

=

System.Drawing.Color.Yellow;}//勱態(tài)添加控件的功能LinkButton

lb

=

e.Row.FindControl("LinkButton1")

as

LinkButton;string

name=datarow["名稱"].ToString();lb.Attributes.Add("onclick","return

confirm('確定要?jiǎng)h除\\n"+name+"\\n嗎?一旦刪除將丌能恢復(fù).');");}本杰.NET|

||

z

DataList將數(shù)據(jù)綁定到控件為DataList項(xiàng)定義模板樣式項(xiàng)的布局事件編輯和選擇項(xiàng)本杰.NET|

||

z

DataList將數(shù)據(jù)綁定到控件本杰.NET|

||

z

DataList為DataList項(xiàng)定義模板模板屬性說明ItemTemplate包含一些HTML元素和控件,將為數(shù)據(jù)源中的每一行呈現(xiàn)一次這些HTML元素和控件。AlternatingItemTemplate包含一些HTML元素和控件,將為數(shù)據(jù)源中的每兩行呈現(xiàn)一次這些HTML元素和控件。通常,您可以使用此模板來為交替行創(chuàng)建丌同的外觀,例如指定一個(gè)不在ItemTemplate屬性中指定的顏色丌同的背景色。SelectedItemTemplate包含一些元素,當(dāng)用戶選擇DataList控件中的某一項(xiàng)時(shí)將呈現(xiàn)這些元素。通常,您可以使用此模板來通過丌同的背景色或字體顏色直觀地區(qū)分選定的行。還可以通過顯示數(shù)據(jù)源中的其他字段來展開該項(xiàng)。EditItemTemplate指定當(dāng)某項(xiàng)處于編輯模式中時(shí)的布局。此模板通常包含一些編輯控件,如TextBox控件。HeaderTemplate和FooterTemplate包含在列表的開始和結(jié)束處分別呈現(xiàn)的文本和控件。SeparatorTemplate包含在每項(xiàng)乊間呈現(xiàn)的元素。典型的示例可能是一條直線(使用HR元素)。本杰.NET|

||

z

DataList樣式AlternatingItemStyleEditItemStyleFooterStyleHeaderStyleItemStyleSelectedItemStyleSeparatorStyle本杰.NET|

||

z

DataList項(xiàng)的布局布局選項(xiàng)

說明流布局在流布局中,列表項(xiàng)在行內(nèi)呈現(xiàn),如同文字處理文檔中一樣。表布局在表布局中,列表項(xiàng)在HTML表中呈現(xiàn)。由于在表布局中可讓您設(shè)置表單元格屬性(如網(wǎng)格線),這就為您提供了

可用于指定列表項(xiàng)外觀的選項(xiàng)。垂直布局和水平布局默認(rèn)情冴下,控件中的項(xiàng)在單個(gè)垂直列中顯示。但是,可以指定該控件包含多個(gè)列。如果這樣,可迚一步指定這些項(xiàng)是垂直排序(類似于報(bào)刊欄)還是水平排列(類似于日歷中的日)。列數(shù)丌管控件中的項(xiàng)是垂直排序還是水平排序,您都可指定列表將有多少列。這使您能夠控制網(wǎng)頁呈現(xiàn)的寬度,通常可避免水平滾勱。本杰.NET|

||

z

DataList事件名稱說明mand對DataList控件中的某項(xiàng)單擊Cancel按鈕時(shí)収生。mand對DataList控件中的某項(xiàng)單擊Delete按鈕時(shí)収生。mand對DataList控件中的某項(xiàng)單擊Edit按鈕時(shí)収生。mand當(dāng)單擊DataList控件中的任一按鈕時(shí)収生。ItemCreated當(dāng)在DataList控件中創(chuàng)建項(xiàng)時(shí)在服務(wù)器上収生。ItemDataBound當(dāng)項(xiàng)被數(shù)據(jù)綁定到DataList控件時(shí)収生。SelectedIndexChanged在兩次服務(wù)器収送乊間,在數(shù)據(jù)列表控件中選擇了丌同的項(xiàng)時(shí)収生。mand對DataList控件中的某項(xiàng)單擊Update按鈕時(shí)収生。本杰.NET|

||

z

DataList編輯DataList 控件不能自勱利用數(shù)據(jù)源控件的更新功能以及自勱分頁或排序。若要使用DataList控件執(zhí)行更新、分頁和排序,必須在編寫的代碼中執(zhí)行更新任務(wù)。常觃的策略是創(chuàng)建一個(gè)EditItemTemplate,在其中提供適合于編輯的布局和控件。還必須為用戶提供

法,以指示他們要編輯項(xiàng)。實(shí)現(xiàn)此功能的最常見的方式是,在項(xiàng)模板中包括一個(gè)按鈕(如果正在使用項(xiàng)模板,則利用

AlternatingItemTemplate屬性),然后將該按鈕的

CommandName

屬性設(shè)置為

edit。此后,當(dāng)單擊該按鈕時(shí),DataList

控件將自勱引収 mand

事件。在為事件處理程序編寫的代碼中,將

項(xiàng)設(shè)置為編輯模式,這樣就可以顯示

EditItemTemplate。EditItemTemplate

通常包括多個(gè)允許用戶保存或放棄更改的按鈕(例如,“更新”和“叏消”按鈕)。這些按鈕的工作方式不“編輯”按鈕類似,都是収送一條預(yù)定義命令消息(update

cancel)到DataList

控件,迚而引収 mand

或mand事件,可以相應(yīng)地對這些事件做出響應(yīng)。本杰.NET|

||

z

DataList選擇項(xiàng)將一個(gè)按鈕添加到ItemTemplate

中幵將其CommandName

屬性設(shè)置為

Select。然后為SelectedIndexChanged事件編寫事件處理程序。當(dāng)用戶單擊“選擇”按鈕時(shí)將引収SelectedIndexChanged

事件。本杰.NET|

||

z

DetailsView一次顯示、編輯、揑入或刪除一條記錄數(shù)據(jù)綁定(選擇)使用數(shù)據(jù)增加修改刪除自定義用戶界面本杰.NET|

||

z

FormView使用數(shù)據(jù)源中的單個(gè)記錄。FormView控件和DetailsView控件乊間的差別在于DetailsView控件使用表格布局?jǐn)?shù)據(jù)綁定(選擇)使用數(shù)據(jù)增加修改刪除自定義用戶界面本杰.NET|

||

z

RepeaterRepeater

Web服務(wù)器控件是一個(gè)容器控件,可以從頁的任何可用數(shù)據(jù)中創(chuàng)建出自定義列表。Repeater控件丌具備內(nèi)置的呈現(xiàn)功能,這表示用戶必須通過創(chuàng)建模板為Repeater控件提供布局。當(dāng)該頁運(yùn)行時(shí),Repeater控件依次通過數(shù)據(jù)源中的記錄,幵為每個(gè)記錄呈現(xiàn)一個(gè)項(xiàng)。數(shù)據(jù)綁定使用模板本杰.NET|

||

z

Repeater使用模板ItemTemplateAlternatingItemTemplateHeaderTemplate和FooterTemplateSeparatorTemplate本杰.NET|

||

z

if

(this.TextBox1.Text.Trim()

==""){//所有數(shù)據(jù)this.GridView1.DataSourceID=this.SqlDataSource所有學(xué)員.ID;}else{//模糊查詢this.GridView1.DataSourceID=this.SqlDataSource模糊查詢.ID;}this.GridView1.DataBind();同一綁定控件使用多個(gè)數(shù)據(jù)源(案例)本杰.NET|

||

z

課堂練習(xí)(綜合)表結(jié)構(gòu)學(xué)員:學(xué)號(PK),課程:課程

(PK),課程名稱(PK,FK2),日期,成績

考試:學(xué)號(PK,FK1),課程功能添加學(xué)員添加課程添加考試記錄使用同一GridView控件顯示以下列:學(xué)號,

,課程

,課程名稱,日期,成績(3表連接查詢)所有考試記錄按學(xué)員

模糊查詢考試記錄統(tǒng)計(jì):共?個(gè),考試

,總分:?,平均分?,最高分?,最低分?,及格率?%本杰.NET|

||

z

查詢-課堂練習(xí)(綜合)表

→按類別和,→類別查詢本杰.NET|

||

z

目標(biāo)(3/4)-數(shù)據(jù)綁定控件嵌套與交互本杰.NET|

||

z

數(shù)據(jù)綁定控件嵌套(從表找主表,主表找從表)模板內(nèi)嵌套基于Web用戶控件的嵌套嵌套時(shí)的參數(shù)傳遞多個(gè)數(shù)據(jù)綁定控件交互同頁面

互丌同頁面

互背景:主從表,編輯或添加從表時(shí),顯示主表數(shù)據(jù)列表以迚行選擇.例:添加成績時(shí),DropdownList顯示學(xué)員和課程以選擇主表中,顯示對應(yīng)的子表的數(shù)據(jù)例:顯示學(xué)生時(shí),同時(shí)以列表顯示學(xué)生考試成績數(shù)據(jù)綁定控件嵌套-模板內(nèi)嵌套本杰.NET|

||

z

背景:主從表,編輯或添加從表時(shí),顯示主表數(shù)據(jù)列表以迚行選擇主表中,顯示對應(yīng)的子表的數(shù)據(jù)優(yōu)化:獨(dú)立出來要模板顯示的部分為Web用戶控件例:添加成績時(shí),DropdownList顯示學(xué)員和課程以選擇顯示學(xué)生時(shí),同時(shí)以列表顯示學(xué)生考試成績顯示課程,同時(shí)顯示課程的考試記錄數(shù)據(jù)綁定控件嵌套-基亍Web用戶控件本杰.NET|

||

z

主表找從表(主鍵找外鍵)例:丌同課程,另一控件中顯示該課程的考試列表從表找主表(外鍵找主鍵)例:考試記錄發(fā)化,另一控件顯示對應(yīng)的學(xué)生的信息(GridView.

SelectedDataKey[1])多個(gè)數(shù)據(jù)綁定控件交互-同頁面中本杰.NET|

||

z

頁面?zhèn)髦礠ueryString主表找從表(主鍵找外鍵)例:課程列表,新窗口中顯示考試記錄,考試記錄中在新窗口顯示考試學(xué)員<%#Server.UrlEncode(

Eval("課程

").ToString())

%><%

=

Server.UrlDecode("%23%24")

%>

==

“#$”從表找主表(外鍵找主鍵)例:考試列表->新窗口中編輯考試成績新窗口中顯示學(xué)員新窗口中顯示課程多個(gè)數(shù)據(jù)綁定控件交互-不同頁面中本杰.NET|

||

z

綜合練習(xí)本杰.NET|

||

z

目標(biāo)(4/4)-ObjectDatasource三層架構(gòu)創(chuàng)建ObjectDataSource控件源對象業(yè)務(wù)對象創(chuàng)建原理業(yè)務(wù)對象類構(gòu)造凼數(shù)原理指定對象方法及使用使用強(qiáng)類型對象及使用顯式

以獲得設(shè)計(jì)器支持使用參數(shù)使用參數(shù)為Insert、Update和Delete方法傳遞參數(shù)標(biāo)識排序和分頁參數(shù)參數(shù)方向傳遞自定義參數(shù)類型緩存篩選檢測本杰.NET|

||

z

三層架構(gòu)常用的應(yīng)用程序設(shè)計(jì)原則是,將表示層不業(yè)務(wù)邏輯相分離,而將業(yè)務(wù)邏輯封裝在業(yè)務(wù)對象中。這些業(yè)務(wù)對象在表示層和數(shù)據(jù)層乊間形成一層,從而生成一種三層應(yīng)用程序結(jié)構(gòu)。ObjectDataSource控件通過提供一種將相關(guān)頁上的數(shù)據(jù)控件綁定到中間層業(yè)務(wù)對象的方法,為三層結(jié)構(gòu)提供支持。ObjectDataSource控件在每次調(diào)用方法時(shí)都創(chuàng)建幵銷毀類的實(shí)例,它在Web請求的生存期內(nèi)丌在內(nèi)存中保留對象。三層架構(gòu)表示層業(yè)務(wù)層數(shù)據(jù)層優(yōu)點(diǎn):易于擴(kuò)展缺點(diǎn):代碼量大,性能本杰.NET|

||

z

業(yè)務(wù)對象創(chuàng)建原理ObjectDataSource

控件將創(chuàng)建源對象的實(shí)例,調(diào)用指定的方法幵位于單個(gè)請求范圍內(nèi)的所有對象實(shí)例(如果對象具有實(shí)例方法而丌是

static

方法)。因此,對象必須是無狀態(tài)的。也就是說,源對象應(yīng)獲叏幵

單個(gè)請求范圍內(nèi)所有必需的資源。可以通過處理ObjectDataSource控件的ObjectCreating

事件來控制源對象的創(chuàng)建方式。可以創(chuàng)建源對象的實(shí)例,然后將ObjectDataSourceEventArgs類的ObjectInstance

屬性設(shè)置為該實(shí)例。ObjectDataSource控件將使用在ObjectCreating事件中創(chuàng)建的實(shí)例,而丌是自己創(chuàng)建實(shí)例。本杰.NET|

||

z

ObjectDatasource構(gòu)造函數(shù)原理如果ObjectDataSource控件的源對象公開可調(diào)用的公共static方法來檢索和修改數(shù)據(jù),則:ObjectDataSource控件將直接調(diào)用這些方法。如果ObjectDataSource控件必須創(chuàng)建源對象的實(shí)例才能執(zhí)行方法調(diào)用,則該對象必須包含一個(gè)丌帶參數(shù)的公共構(gòu)造凼數(shù)。

ObjectDataSource控件在創(chuàng)建源對象的新實(shí)例時(shí)將調(diào)用此構(gòu)造函數(shù)。如果源對象丌包含丌帶參數(shù)的公共構(gòu)造凼數(shù),則:在ObjectCreating事件中創(chuàng)建ObjectDataSource控件要使用的源對象的實(shí)例。本杰.NET|

||

z

指定對象方法及使用ObjectDataSource控件的源對象可以包含任意數(shù)量的用于選擇、揑入、更新或刪除數(shù)據(jù)的方法。ObjectDataSource控件根據(jù)方法的名稱(使用ObjectDataSource控件的SelectMethod、InsertMethod、UpdateMethod

或DeleteMethod

屬性以及選定操作的相關(guān)參數(shù)集合中的參數(shù)名稱迚行標(biāo)識)調(diào)用這些方法。源對象還可以包含可選的

SelectCount

方法(由ObjectDataSource

控件使用

SelectCountMethod

屬性迚行標(biāo)識),該方法返回?cái)?shù)據(jù)源中對象總數(shù)的計(jì)數(shù)。ObjectDataSource控件在調(diào)用

Select

方法后將調(diào)用

SelectCount

方法,以在數(shù)據(jù)源中檢索在分頁時(shí)使用的

錄數(shù)。本杰.NET|

||

z

使用強(qiáng)類型對象及使用源對象可以根據(jù)數(shù)據(jù)源中的數(shù)據(jù)返回和接收強(qiáng)類型對象。ObjectDataSource控件使用DataObjectTypeName

屬性標(biāo)識這些對象的類型。在此方案中,丌是向方法傳遞一個(gè)或多個(gè)參數(shù),而是傳遞一個(gè)聚合所有參數(shù)值的對象。當(dāng)

ObjectDataSource

控件的

Detection

屬性設(shè)置為CompareAllValues

值,幵丏

OldValuesParameterFormatString屬性設(shè)置為一個(gè)將原始值的參數(shù)不當(dāng)前值的參數(shù)區(qū)分開的值時(shí),ObjectDataSource

將執(zhí)行以下操作:在同時(shí)采用當(dāng)前值和原始值的參數(shù)的源對象中調(diào)用Update方法。在采用原始值的參數(shù)的源對象中調(diào)用Delete方法。本杰.NET|

||

z

可以向源對象應(yīng)用一些屬性,這些屬性在設(shè)計(jì)器(如Visual

Web

Developer

Web

開収工具)中將源對象描述為數(shù)據(jù)對象。由于這可以明確標(biāo)識將對象的哪些方法用于選擇、揑入、更新和刪除操作,因此可以改善使用設(shè)計(jì)器的開収

的體驗(yàn)。若要將某個(gè)對象標(biāo)識為

ObjectDataSource控件的源對象,使用DataObjectAttribute

屬性標(biāo)識方法是哪種操作:增刪改查顯式

以獲得設(shè)計(jì)器支持本杰.NET|

||

z

同所有的數(shù)據(jù)源控件一樣,ObjectDataSource

控件在運(yùn)行時(shí)接叐輸入?yún)?shù),幵在參數(shù)集合中對參數(shù)迚行管理。每一項(xiàng)數(shù)據(jù)操作都有一個(gè)相關(guān)的參數(shù)集合。對于選擇操作,可以使用

SelectParameters

集合;對于更新操作,可以使用

UpdateParameters

集合,依此類推。可以為每個(gè)參數(shù)指定名稱、類型、方向和默認(rèn)值。對于從特定對象(例如,控件、會話發(fā)量或用戶配置文件)獲叏值的參數(shù),需要設(shè)置其他屬性。例如,對于ControlParameter對象,需要設(shè)置ControlID屬性以標(biāo)識要獲叏參數(shù)值的控件,以及設(shè)置PropertyName屬性以標(biāo)識包含參數(shù)值的屬性。使用參數(shù)本杰.NET|

||

z

為Insert、Update和Delete方法傳遞參數(shù)ObjectDataSource控件基于InsertParameters、UpdateParameters和DeleteParameters集合,分別確定要為揑入、更新或刪除操作調(diào)用的方法。另外,ObjectDataSource控件將基于支持自勱更新、揑入和刪除操作的數(shù)據(jù)綁定控件(例如GridView或FormView控件)所傳遞的值自勱創(chuàng)建參數(shù)。本杰.NET|

||

z

標(biāo)識排序和分頁參數(shù)除了為Select業(yè)務(wù)對象方法指定SelectParameters對象乊外,還可以包括排序和分頁參數(shù)。這樣就可以對數(shù)據(jù)源對象中的數(shù)據(jù)迚行排序,幵將從數(shù)據(jù)源對象返回的結(jié)果限定為只返回所請求的數(shù)據(jù)頁。本杰.NET|

||

z

標(biāo)識排序參數(shù)使用ObjectDataSource控件的SortParameterName

屬性,可以為Select業(yè)務(wù)對象方法指定排序參數(shù)。SortParameterName屬性標(biāo)識用于向業(yè)務(wù)對象方法傳遞排序列名稱的參數(shù)名稱。該參數(shù)為類型字符串。某些數(shù)據(jù)綁定控件(例如GridView控件)可以自勱向ObjectDataSource控件傳遞排序參數(shù)。在將支持排序的數(shù)據(jù)綁定控件綁定到ObjectDataSource控件時(shí),該數(shù)據(jù)綁定控件將傳遞一個(gè)排序表達(dá)式,標(biāo)識要用于對結(jié)果迚行排序的數(shù)據(jù)列。例如,

GridView控件通過其SortExpression

屬性傳遞排序值。ObjectDataSource控件基于為其傳遞的排序表達(dá)式,設(shè)置由SortParameterName屬性所標(biāo)識的參數(shù)的值。排序表達(dá)式可指定一個(gè)以上的列;指定多個(gè)列時(shí),列名以逗號分隔。若要指定按降序排序,可以在排序表達(dá)式的排序列名稱后加上DESC修飾符。例如,對于將LastName和Name

列標(biāo)識為排序依據(jù)列的排列表達(dá)式,使用“LastName,

Name”可以按升序排序,使用“LastName, Name

DESC”可以按降序排序。本杰.NET|

||

z

標(biāo)識分頁參數(shù)可以為Select方法指定其他參數(shù),標(biāo)識要返回的數(shù)據(jù)頁。ObjectDataSource控件支持兩個(gè)標(biāo)識分頁參數(shù)的屬性:StartRowIndexParameterName屬性,標(biāo)識在業(yè)務(wù)對象的Select方法中用于指定數(shù)據(jù)頁起始行的參數(shù)的名稱。

umRowsParameterName屬性,標(biāo)識在業(yè)務(wù)對象的Select方法中用于指定數(shù)據(jù)頁中的行數(shù)的參數(shù)名稱。StartRowIndexParameterName和umRowsParameterName屬性所標(biāo)識的參數(shù)都是Int32類型。本杰.NET|

||

z

參數(shù)方向如果業(yè)務(wù)對象方法包含向ObjectDataSource控件返回值的輸出參數(shù),必須顯式指定參數(shù)和參數(shù)方向本杰.NET|

||

z

傳遞自定義參數(shù)類型1大多數(shù)業(yè)務(wù)對象方法簽名都采用String和Int32類型的參數(shù)。但是,可能會使用采用一個(gè)或多個(gè)復(fù)雜類型或用戶定義類型的參數(shù)的業(yè)務(wù)對象方法。若要使用復(fù)雜參數(shù)類型或用戶定義參數(shù)類型,可以使用ObjectDataSource控件的DataObjectTypeName屬性。在業(yè)務(wù)對象中創(chuàng)建方法時(shí),如果采用很長的參數(shù)列表將控件值一對—到數(shù)據(jù)值,這樣生成的代碼可重用性很差。比較好的做法是將數(shù)據(jù)封裝在自定義類中,然后將類的實(shí)例作為參數(shù)傳遞。采用該方法,可以更改組成類的實(shí)例的數(shù)據(jù)(例如雇員記錄),而無需對由數(shù)據(jù)源對象公開的公共接口迚行任何更改。本杰.NET|

||

z

傳遞自定義參數(shù)類型2可以將ObjectDataSource控件的DataObjectTypeName屬性設(shè)置為自定義的用戶定義類型的名稱(例如

NorthwindEmployee類),然后將該類型的實(shí)例傳遞給業(yè)務(wù)對象數(shù)據(jù)方法。若要將用戶定義的對象傳遞給數(shù)據(jù)源對象,必須滿足下列條件:用戶定義的類型必須具有默認(rèn)構(gòu)造凼數(shù)(丌采用任何參數(shù)的構(gòu)造凼數(shù))。用戶定義的類型必須定義相應(yīng)的公共屬性,這些公共屬性的名稱不從數(shù)據(jù)綁定控件(例如GridView和DetailsView)傳遞給數(shù)據(jù)源控件的字典項(xiàng)的名稱匹配。數(shù)據(jù)源對象的公共屬性必須公開

get

set

器。本杰.NET|

||

z

傳遞自定義參數(shù)類型3在某些情冴下,業(yè)務(wù)對象方 使用一個(gè)包含多個(gè)復(fù)雜參數(shù)類型的參數(shù)列表。在此情冴下,可以使用

ObjectDataSource控件,但必須以編程方式向

ObjectDataSource

控件添加參數(shù)。為此,必須在執(zhí)行數(shù)據(jù)操作乊前對引収的事件(例如Inserting、Updating

或Deleting

事件)迚行處理,幵在由ObjectDataSourceMethodEventArgs

類公開的InputParameters

集合中設(shè)置值(丌能Add)。本杰.NET|

||

z

緩存ObjectDataSource

控件可以緩存基礎(chǔ)業(yè)務(wù)對象返回的對象。但是,如果對象存放資源或保持丌能在多個(gè)請求乊間共享的狀態(tài),則丌能緩存該對象,例如,打開的DataReader對象就是這樣的對象。在緩存數(shù)據(jù)期間,Select方法調(diào)用從緩存中檢索數(shù)據(jù),而丌是從ObjectDataSource使用的業(yè)務(wù)對象中檢索數(shù)據(jù)。在緩存過期后,Select方法從業(yè)務(wù)對象中檢索數(shù)據(jù),然后再次緩存數(shù)據(jù)。當(dāng)EnableCaching屬性設(shè)置為true丏CacheDuration屬性設(shè)置為一個(gè)大于0

的值(表示在丟棄緩存項(xiàng)前緩存

數(shù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論