第6章系統(tǒng)基礎(chǔ)數(shù)據(jù)維護(hù)模塊_第1頁
第6章系統(tǒng)基礎(chǔ)數(shù)據(jù)維護(hù)模塊_第2頁
第6章系統(tǒng)基礎(chǔ)數(shù)據(jù)維護(hù)模塊_第3頁
第6章系統(tǒng)基礎(chǔ)數(shù)據(jù)維護(hù)模塊_第4頁
第6章系統(tǒng)基礎(chǔ)數(shù)據(jù)維護(hù)模塊_第5頁
已閱讀5頁,還剩137頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第6章系統(tǒng)基礎(chǔ)數(shù)據(jù)維護(hù)模塊第一頁,共142頁。任務(wù)目標(biāo)完成后的數(shù)據(jù)維護(hù)界面如圖6.1、圖6.2、圖6.3所示。圖6.1課程信息維護(hù)第二頁,共142頁。圖6.2教師信息維護(hù)第三頁,共142頁。圖6.3排課信息維護(hù)第四頁,共142頁。6.1完成課程信息的維護(hù)采用SqlDataSource+ListView的方式來完成課程信息的維護(hù),用SqlDataSource實(shí)現(xiàn)與數(shù)據(jù)庫之間的訪問,用ListView提供所需的數(shù)據(jù)查詢、修改、插入、刪除視圖。1.規(guī)劃課程信息維護(hù)界面課程信息維護(hù)頁面的基本布局如圖6.4所示。圖6.4課程信息維護(hù)頁面的基本布局第五頁,共142頁。6.1完成課程信息的維護(hù)2.設(shè)計(jì)數(shù)據(jù)維護(hù)界面(1)打開前面創(chuàng)建的網(wǎng)站項(xiàng)目,右擊“解決方案資源管理器”內(nèi)的Admin文件夾,選擇“添加新項(xiàng)”,在彈出的窗口中選擇“Web窗體”,命名為“course.aspx”,語言選擇“VisualC#”,選中“選擇母版頁”復(fù)選框,完成后單擊“添加”按鈕,在出現(xiàn)的窗口中選擇Admin文件夾下的adminMasterPage.master,單擊“確定”按鈕完成新頁面的創(chuàng)建。(2)打開Web.sitemap文件,在<siteMapNodeurl=""title="管理員子系統(tǒng)"description="">標(biāo)記內(nèi)部加入如下的內(nèi)容:<siteMapNodeurl="~/admin/course.aspx"title="課程信息管理"description=""/>。(3)切換到course.aspx頁面的設(shè)計(jì)視圖,打開屬性窗口,在窗口的下拉框中選擇“Document”,設(shè)置StyleSheetTheme屬性為“主題1”。(4)切換到“源”視圖,把光標(biāo)定位到ID為“Content2”的標(biāo)記內(nèi),雙擊“工具欄”中HTML內(nèi)的“DIV”,并設(shè)置其ID為“content”,設(shè)置Style屬性值為“border-style:solid;border-width:1pt”。第六頁,共142頁。6.1完成課程信息的維護(hù)(5)打開頁面的“源”視圖,把光標(biāo)定位到ID為“content”層內(nèi)部,雙擊“工具欄”中HTML內(nèi)的“DIV”,在頁面上插入一個(gè)層,設(shè)置其ID屬性為“search”。切換到“設(shè)計(jì)”視圖,把光標(biāo)定位到此層內(nèi),單擊“應(yīng)用樣式”窗口中的“innerLayout”樣式規(guī)則,給該層應(yīng)用樣式規(guī)則。(6)把光標(biāo)定位到ID為“search”的DIV內(nèi),如圖6.5所示向DIV內(nèi)添加控件。圖6.5搜索欄設(shè)計(jì)第七頁,共142頁。6.1完成課程信息的維護(hù)從左到右分別設(shè)置DIV內(nèi)控件的屬性,如表6.1所示。控件類型相關(guān)屬性和值TextboxID=“searchTextBoxcourseName”TextboxID=“searchTextBoxcourseScore”ButtonID=“searchButton”Width=“80px”表6.1控件屬性設(shè)置第八頁,共142頁。6.1完成課程信息的維護(hù)(7)在“源”視圖中,把光標(biāo)定位到ID為“search”的DIV標(biāo)記的下部,雙擊“工具欄”中HTML中的DIV,在光標(biāo)處插入一個(gè)DIV。選中此DIV,設(shè)置其ID為“result”,在“應(yīng)用樣式”窗口中,單擊“innerLayout”樣式規(guī)則,給該層應(yīng)用樣式規(guī)則。(8)把光標(biāo)定位到ID為“result”的DIV內(nèi),如圖6.6所示向DIV內(nèi)添加控件。圖6.6搜索結(jié)果欄設(shè)計(jì)第九頁,共142頁。6.1完成課程信息的維護(hù)從左到右分別設(shè)置DIV內(nèi)控件的屬性,如表6.2所示??丶愋拖嚓P(guān)屬性和值LabelID=“LabelSearchResult”,Text=“”ListViewID=“ListViewResult”DataPagerID=“DataPagerResult”SqlDataSourceID=“SqlDataSourceResult”表6.2控件屬性設(shè)置第十頁,共142頁。6.1完成課程信息的維護(hù)(9)選中“SqlDataSourceResult”控件,單擊右上角的“SqlDataSource任務(wù)”中“配置數(shù)據(jù)源”項(xiàng),在彈出的“配置數(shù)據(jù)源”對(duì)話框的下拉框中選擇“SqlServer2005ConnectionString”,單擊“下一步”按鈕,進(jìn)入“配置Select語句”對(duì)話框,在“指定來自表或視圖的列”的下拉框選中“Course”表,在列中,選中courseID、courseName和courseScore,則所生成的Select語句為“SELECT[courseID],[courseName],[courseScore]FROM[Course]”,單擊“下一步”按鈕,進(jìn)入“測(cè)試查詢”窗口。單擊“測(cè)試查詢”按鈕,查看查詢出的結(jié)果是否滿足要求,如果滿足,則單擊“完成”按鈕;如果不滿足,則返回上一個(gè)窗口進(jìn)行修改。第十一頁,共142頁。6.1完成課程信息的維護(hù)(10)選中“SqlDataSourceResult”控件,單擊右上角的“SqlDataSource任務(wù)”中的“配置數(shù)據(jù)源”項(xiàng),在彈出的“選擇您的數(shù)據(jù)連接”對(duì)話框中單擊“下一步”按鈕,進(jìn)入“配置Select語句”對(duì)話框,選擇“指定自定義SQL語句和存儲(chǔ)過程”,單擊“下一步”按鈕,在彈出的“定義自定義語句和存儲(chǔ)過程”對(duì)話框在中分別選擇“UPDATE”、“INSERT”、“DELETE”選項(xiàng)卡,在對(duì)應(yīng)的文本框中輸入如下SQL的語句:UPDATECourseSETcourseName=@courseName,courseScore=@courseScoreWHEREcourseID= @courseIDINSERTINTOCourse(courseName,courseScore)VALUES(@courseName,@courseScore)DELETEFROMCourseWHEREcourseID=@courseID單擊“下一步”、“完成”按鈕。(11)選中“ListView”控件,單擊右上角“ListView任務(wù)”,在“選擇數(shù)據(jù)源”下拉框中選擇“SqlDataSourceResult”控件。單擊“配置ListView”按鈕,在彈出的“配置ListView”對(duì)話框中選擇“網(wǎng)格”布局,選擇“專業(yè)型”樣式,并選中“啟用編輯”、“啟動(dòng)插入”、“啟動(dòng)刪除”和“啟動(dòng)分頁”選項(xiàng),單擊“確定”按鈕完成ListView配置。第十二頁,共142頁。6.1完成課程信息的維護(hù)(12)打開“ListViewResult”的屬性窗口,設(shè)置其PagedControlID為“ListView-Result”,PageSize為“10”,設(shè)置后的界面效果如圖6.7所示。圖6.7頁面外觀第十三頁,共142頁。6.1完成課程信息的維護(hù)3.編寫本頁面所需的相關(guān)代碼(1)單擊搜索欄中的按鈕后,會(huì)根據(jù)用戶錄入的信息進(jìn)行查詢,并把查詢的結(jié)果顯示在下部的GridView中,因此“搜索”按鈕的Click事件需要添加代碼。雙擊“搜索”按鈕,在對(duì)應(yīng)的事件中添加如下的代碼://首先定義需要查詢的內(nèi)容,具體查詢的條件根據(jù)用戶的錄入自動(dòng)生成stringsql="SELECTcourseID,courseName,courseScoreFROMCoursewhere1=1";//如果錄入課程名稱,則根據(jù)課程名稱進(jìn)行模糊查找if(this.searchTextBoxcourseName.Text!=""){sql+="andcourseNameLIKE'%"+this.searchTextBoxcourseName.Text.Trim()+"%'";}//如果錄入課程學(xué)分,則根據(jù)課程學(xué)分查找if(this.searchTextBoxcourseScore.Text!=""){sql+="andcourseScore='"+this.searchTextBoxcourseScore.Text.Trim()+"'";}this.SqlDataSourceResult.SelectCommand=sql;第十四頁,共142頁。6.1完成課程信息的維護(hù)(2)頁面初次加載的時(shí)候,GridView中只顯示數(shù)據(jù)庫的前6條記錄,查看更多的數(shù)據(jù),需要通過“查詢”按鈕完成,因此需要在Page_load事件中添加如下的代碼:if(Session["userType"].ToString()!="0")//如果不是管理員則返回{Response.Write("<scriptlanguage=javascript>history.go(-1);</script>"); } //重定向到前面頁面//頁面第一次請(qǐng)求的時(shí)候執(zhí)行if(!Page.IsPostBack){stringsql="SELECTTOP6courseID,courseName,courseScoreFROMCourseORDERBYcourseIDDESC";this.SqlDataSourceResult.SelectCommand=sql;}第十五頁,共142頁。6.1完成課程信息的維護(hù)(3)為了能夠在Label中顯示查詢出的記錄條數(shù),需要在SqlDataSourceResult控件的Selected事件中添加代碼:選中“SqlDataSourceResult”控件,右擊此控件并選擇“屬性”選項(xiàng),在打開的屬性窗口中單擊頂部

圖標(biāo),在列表中雙擊“Selected”,進(jìn)入其“Selected事件”,并在內(nèi)部添加如下的代碼://當(dāng)SqlDataSource執(zhí)行完查詢操作后所觸發(fā)的一個(gè)事件protectedvoidSqlDataSourceResult_Selected(objectsender,SqlDataSourceStatusEventArgse){//參數(shù)e的AffectedRows屬性表示查詢出的記錄數(shù)目this.LabelSearchResult.Text=e.AffectedRows.ToString();}第十六頁,共142頁。6.1完成課程信息的維護(hù)4.在瀏覽器中瀏覽本頁(1)切換到“設(shè)計(jì)”視圖,右擊頁面并選擇“在瀏覽器中查看”,頁面如圖6.8所示。圖6.8課程維護(hù)界面第十七頁,共142頁。6.1完成課程信息的維護(hù)(2)在courseName和courseScore下部的文本框中輸入相應(yīng)的課程名稱和課程學(xué)分,單擊“插入”按鈕,則一條記錄就插入到數(shù)據(jù)庫中,連續(xù)插入幾個(gè)課程后,界面如圖6.9所示。圖6.9課程維護(hù)界面第十八頁,共142頁。6.1完成課程信息的維護(hù)(3)單擊某條記錄的“編輯”按鈕,則該行將變成可編輯狀態(tài),修改結(jié)束后,單擊“更新”按鈕可以把修改后的內(nèi)容插入到數(shù)據(jù)表中,也可以單擊“取消”按鈕取消本次的修改操作,如圖6.10所示。單擊某條記錄左部的“刪除”按鈕,則可以把本條記錄從數(shù)據(jù)表內(nèi)刪除。圖6.10修改視圖(4)在搜索欄中“課程名”處輸入課程名稱的部分文字,單擊“搜索”按鈕就可以查詢出對(duì)應(yīng)的課程,也可以在“學(xué)分”處輸入一個(gè)學(xué)分,則將查詢出本學(xué)分所有的課程;也可以同時(shí)通過“課程名”和“學(xué)分”進(jìn)行查詢。第十九頁,共142頁。6.2完成教師信息的維護(hù)采用SqlDataSource+ListView的方式比較適合字段比較少的表進(jìn)行數(shù)據(jù)維護(hù),當(dāng)字段很多的時(shí)候,編輯界面會(huì)顯示很長,因此需要采用專門用于編輯的控件FormView控件。這里采用GridView+SqlDataSource+FormView的方式完成教師信息的維護(hù),其中GridView用于表格方式顯示出多條記錄,SqlDataSource用于實(shí)現(xiàn)與數(shù)據(jù)庫之間的訪問,F(xiàn)ormView用于實(shí)現(xiàn)單條記錄的查看、修改、插入等操作。1.規(guī)劃教師信息維護(hù)界面教師信息維護(hù)頁面的基本布局如圖6.11所示。查詢條件區(qū)域查詢結(jié)果顯示區(qū)域信息詳情/插入和修改區(qū)圖6.11頁面基本布局第二十頁,共142頁。6.2完成教師信息的維護(hù)2.設(shè)計(jì)數(shù)據(jù)維護(hù)界面(1)在前面所創(chuàng)建的網(wǎng)站項(xiàng)目中打開teacher.aspx頁面的的“源”視圖,刪除ID為“Content2”的標(biāo)記內(nèi)的前面所輸入的“內(nèi)容頁內(nèi)容”。把光標(biāo)定位到ID為“Content2”的標(biāo)記內(nèi),雙擊“工具欄”中HTML內(nèi)的“DIV”,在光標(biāo)處插入一個(gè)層,并設(shè)置其ID為“content”,設(shè)置Style屬性值為“border-style:solid;border-width:1pt”。(2)把光標(biāo)定位到ID為“content”的層內(nèi),雙擊“工具欄”中HTML內(nèi)的“DIV”,在頁面上插入一個(gè)層,設(shè)置其ID屬性為“search”。把光標(biāo)定位到此層內(nèi),單擊“應(yīng)用樣式”窗口中的“innerLayout”樣式規(guī)則,為該層應(yīng)用樣式規(guī)則。第二十一頁,共142頁。6.2完成教師信息的維護(hù)(3)把光標(biāo)定位到ID為“search”的DIV內(nèi),按照如圖6.12所示向DIV內(nèi)添加控件。從左到右分別設(shè)置DIV內(nèi)控件的屬性,設(shè)置如表6.3所示。控件類型相關(guān)屬性和值TextboxID=“searchTextBoxteaName”TextboxID=“searchTextBoxteaTelphone”ButtonID=“searchButton”Width=“80px”圖6.12搜索欄設(shè)計(jì)表6.3控件屬性設(shè)置第二十二頁,共142頁。6.2完成教師信息的維護(hù)(4)按照上面的添加DIV方法在ID為“search”的DIV標(biāo)記的下部添加一個(gè)DIV,其ID為“result”,在“應(yīng)用樣式”窗口中,單擊“innerLayout”樣式規(guī)則,為該層應(yīng)用樣式規(guī)則。(5)把光標(biāo)定位到ID為“result”的DIV內(nèi),按照如圖6.13所示向DIV內(nèi)添加控件。圖6.13搜索結(jié)果欄設(shè)計(jì)第二十三頁,共142頁。6.2完成教師信息的維護(hù)從左到右分別設(shè)置DIV內(nèi)控件的屬性,設(shè)置如表6.4所示。控件類型相關(guān)屬性和值LabelID=“LabelSearchResult”ButtonID=“AddButton”,Width=“80px”GridViewID=“GridViewResult”Width=“100%”AllowPaging=“True”SqlDataSourceID=“SqlDataSourceResult”表6.4控件屬性設(shè)置第二十四頁,共142頁。6.2完成教師信息的維護(hù)(6)打開“SqlDataSourceResult”控件屬性窗口,單擊“ConnectionString”屬性右邊的下拉框,設(shè)置其值為“SqlServer2005ConnectionString”。單擊SelectQuery右邊的按鈕,打開“命令和參數(shù)編輯器”窗口,在窗口內(nèi)輸入如下的Sql語句:SELECTtop(5)teaID,teaName,teaTelphone,teaPhone,teaEmail,teaTypeFROMTeacher單擊DeleteQuery右邊的按鈕,打開“命令和參數(shù)編輯器”窗口,在窗口內(nèi)輸入如下的Sql語句:DELETEFROMTeacherWHEREteaID=@teaID(7)選中GridViewResult,單擊右上角“GridView任務(wù)”中的“選擇數(shù)據(jù)源”下拉框,選擇“SqlDataSourceResult”控件。單擊“刷新架構(gòu)”項(xiàng)重新刷新架構(gòu),單擊“GridView任務(wù)”中的“編輯列”項(xiàng),打開“字段”對(duì)話框,在“選中的字段”列表中選中“teaID”,在右欄中設(shè)置其HeaderText屬性為“編號(hào)”,分別設(shè)置其他字段的HeaderText為“姓名”、“電話”、“手機(jī)”、“郵箱”和“類型”。第二十五頁,共142頁。6.2完成教師信息的維護(hù)(8)在“可用字段”窗口中選中“TemplateField”字段,并單擊“添加”按鈕把其添加到“選定的字段”中,并設(shè)置其HeaderText為“操作”。在“選定的字段”列表中選中“類型”字段,單擊右邊的“將此字段轉(zhuǎn)換為TemplateField”按鈕,單擊“確定”按鈕關(guān)閉對(duì)話框。(9)右擊GridView控件,選擇“編輯字段”內(nèi)的“Column5-類型”,選中“ItemTemplate”中的Label控件,單擊右上角的

圖標(biāo),在打開的“Label任務(wù)”中單擊“編輯DataBindings”項(xiàng),彈出“Label1DataBinding”對(duì)話框,選中左側(cè)的“Text”,單擊右側(cè)的“自定義綁定”,把“Bind("teaType")”改為“teaType(Eval("teaType"))”,單擊“確定”按鈕,關(guān)閉對(duì)話框。第二十六頁,共142頁。6.2完成教師信息的維護(hù)(10)右擊GridView控件,選擇“編輯字段”內(nèi)的“Column6-操作”,“ItemTemplate”中添加3個(gè)LinkButton控件,按表6.5設(shè)置屬性,設(shè)置后的效果如圖6.14所示。控件類型相關(guān)屬性和值LinkButton1ID=“LinkButton,Text=“詳情”,CommandName=“MyDetail”LinkButton2ID=“LinkButton,Text=“編輯”,CommandName=“MyModify”LinkButton3ID=“LinkButton,Text=“刪除”,CommandName=“MyDelete”表6.5控件屬性設(shè)置圖6.14操作視圖設(shè)計(jì)第二十七頁,共142頁。6.2完成教師信息的維護(hù)(11)切換到“源”視圖,在ID為“result”的DIV標(biāo)記的下部添加一個(gè)DIV,設(shè)置其ID為“Operation”,在“應(yīng)用樣式”窗口中,單擊“innerLayout”樣式規(guī)則,為該層應(yīng)用樣式規(guī)則。(12)把光標(biāo)定位到ID為“Operation”的DIV內(nèi),按照如圖6.15所示向DIV內(nèi)添加控件。圖6.15操作欄設(shè)計(jì)第二十八頁,共142頁。6.2完成教師信息的維護(hù)從左到右分別設(shè)置DIV內(nèi)控件的屬性,設(shè)置如下表6.6所示:控件類型相關(guān)屬性和值FormViewID=“FormViewOperation”,Width=“100%”SqlDataSourceID=“SqlDataSourceOperation”表6.6控件屬性設(shè)置第二十九頁,共142頁。6.2完成教師信息的維護(hù)(13)切換到“設(shè)計(jì)”視圖,打開“SqlDataSourceOperation”的屬性窗口,設(shè)置其ConnectionStrings為“SqlServer2005ConnectionString”,設(shè)置其SelectQuery為:SELECTteaID,teaName,teaSex,teaTelphone,teaType,teaPhone,teaEmail,teaPasswordFROMTeacher設(shè)置InsertQuery為:INSERTINTOTeacher(teaName,teaSex,teaTelphone,teaType,teaPhone,teaEmail,teaPassword,)VALUES(@teaName,@teaSex,@teaTelphone,@teaType,@teaPhone,@teaEmail,@teaPassword)設(shè)置UpdateQuery為:UPDATETeacherSETteaName=@teaName,teaSex=@teaSex,teaTelphone=@teaTelphone,teaType=@teaType,teaPhone=@teaPhone,teaEmail=@teaEmail,teaPassword=@teaPasswordwhereteaID=@teaID第三十頁,共142頁。6.2完成教師信息的維護(hù)(14)選中FormViewOperation,在“FromView任務(wù)”中,設(shè)置數(shù)據(jù)源為“SqlData-SourceOperation”,單擊“刷新架構(gòu)”按鈕,顯示如圖6.16所示的界面。圖6.16ItemTemplate模板第三十一頁,共142頁。6.2完成教師信息的維護(hù)(15)右擊選擇“FormViewOperation”→“編輯模板”→“ItemTemplate”,切換到“Item-Template”模板,在模板頂部插入一個(gè)DIV,通過“應(yīng)用樣式”設(shè)置其樣式為“innerLayout”,把光標(biāo)定位到本層內(nèi),選擇“表”→“插入表”菜單項(xiàng),彈出“插入表格”對(duì)話框,設(shè)置行數(shù)為“4”,列數(shù)為“4”,其他采用默認(rèn)值,插入表后,將ItemTemplate模板內(nèi)的內(nèi)容按照如圖6.17所示擺放。圖6.17ItemTemplate模板設(shè)計(jì)效果第三十二頁,共142頁。6.2完成教師信息的維護(hù)(16)在ItemTemplate模板中選擇teaSexLabel的Label任務(wù)中的“編輯DataBinding”選項(xiàng),通過自定義綁定,設(shè)置Text屬性綁定為“teaSex(Eval("teaSex"))”。采用同樣的方式,設(shè)置teaTypeLabel的Text屬性綁定為“teaType(Eval("teaType"))”。(17)在ItemTemplate模板內(nèi)分別選中表格內(nèi)的第一列或第三列,在“應(yīng)用樣式”窗口中選中“.right”樣式。按照同樣的方法分別選中表格內(nèi)的第二列或第四列,在“應(yīng)用樣式”窗口中選中“.left”樣式,應(yīng)用樣式后的外觀如圖6.18所示,右擊“FormViewOperation”,選擇“結(jié)束模板編輯”,完成ItemTemplate模板制作。圖6.18ItemTemplate模板樣式效果第三十三頁,共142頁。6.2完成教師信息的維護(hù)(18)以同樣的方式編輯FormViewOperation的InsertItemTemplate模板和EditItemTemplate模板,插入層,插入表格,重排元素的位置,設(shè)置后的外觀如圖6.19、圖6.20所示。圖6.19InsertItemTemplate模板樣式效果第三十四頁,共142頁。6.2完成教師信息的維護(hù)圖6.20EditItemTemplate模板樣式效果第三十五頁,共142頁。6.2完成教師信息的維護(hù)(19)打開FormViewOperation的InsertItemTemplate模板,刪除教師性別右側(cè)的文本框,插入一個(gè)“RadioButtonList”控件,通過Items屬性插入兩項(xiàng),設(shè)置第一項(xiàng)的Text屬性為“男”,Value屬性為“0”;設(shè)置第二項(xiàng)的Text屬性為“女”,Value屬性為“1”,設(shè)置其RepeatDirection為“Horizontal”。在“RadioButtonList任務(wù)”中選擇“編輯DataBindings”項(xiàng),在彈出的對(duì)話框中設(shè)置SelectedValue屬性綁定到“teaSex”字段,格式為“{0:G}”,按照同樣的方式修改EditItemTemplate模板內(nèi)的教師性別。第三十六頁,共142頁。6.2完成教師信息的維護(hù)(20)打開FormViewOperation的InsertItemTemplate模板,刪除教師性別右側(cè)的文本框,插入一個(gè)“RadioButtonList”控件,通過Items屬性插入兩項(xiàng),設(shè)置第一項(xiàng)的Text屬性為“管理員”,Value屬性為“0”;設(shè)置第二項(xiàng)的Text屬性為“教師”,Value屬性為“1”,設(shè)置其RepeatDirection為“Horizontal”。在“RadioButtonList任務(wù)”中選擇“編輯DataBindings”,在彈出的對(duì)話框中設(shè)置SelectedValue屬性綁定到“teaType”字段,按照同樣的方式修改EditItemTemplate模板內(nèi)的教師類別。設(shè)置后的InsertItemTemplate模板效果如圖6.21所示。圖6.21InsertItemTemplate模板最終效果第三十七頁,共142頁。6.2完成教師信息的維護(hù)3.編寫本頁面所需的相關(guān)代碼(1)默認(rèn)情況下,GridView內(nèi)只顯示5條教師信息,單擊“搜索”按鈕后,應(yīng)該根據(jù)用戶的錄入情況進(jìn)行搜索,把搜索出的所有信息顯示到GridView內(nèi)。雙擊“搜索”按鈕,添加Click事件代碼,代碼如下所示。(2)GridView控件內(nèi)模板字段內(nèi)的控件不包含所在行的索引值,當(dāng)其觸發(fā)RowCommand事件時(shí)無法獲取由哪行觸發(fā)的,因此需要通過程序代碼在該行創(chuàng)建的時(shí)候?yàn)槠湓O(shè)置CommandArgument值,以及在RowCreated事件中為所需要的行添加,這里需要為上文所添加的LinkButton1、LinkButton2、LinkButton3添加CommandArgument值,右擊“GridViewResult”,選擇“屬性”,雙擊“事件”內(nèi)的RowCreated事件,進(jìn)入其編寫代碼位置。第三十八頁,共142頁。6.2完成教師信息的維護(hù)在其中加入如下的代碼://如果行的類型是數(shù)據(jù)行,需要為此行內(nèi)模板列內(nèi)的控件設(shè)置CommandArgument值//此值可能用來判斷用戶單擊的是哪行內(nèi)的控件if(e.Row.RowType==DataControlRowType.DataRow){//在當(dāng)前行內(nèi)獲取到控件的引用,通過行的索引設(shè)置控件的CommandArgumentLinkButtonLinkButton1=(LinkButton)e.Row.FindControl("LinkButton1");LinkButton1.CommandArgument=e.Row.RowIndex.ToString();LinkButtonLinkButton2=(LinkButton)e.Row.FindControl("LinkButton2");LinkButton2.CommandArgument=e.Row.RowIndex.ToString();LinkButtonLinkButton3=(LinkButton)e.Row.FindControl("LinkButton3");LinkButton3.CommandArgument=e.Row.RowIndex.ToString();}第三十九頁,共142頁。6.2完成教師信息的維護(hù)(3)當(dāng)用戶單擊“新增教工”按鈕時(shí),F(xiàn)ormViewOperation應(yīng)該顯示對(duì)應(yīng)的“插入模板”,錄入結(jié)束后,單擊“插入”按鈕,實(shí)現(xiàn)把數(shù)據(jù)插入到數(shù)據(jù)庫中。雙擊“新增教工”按鈕,此按鈕的Click事件代碼如下所示://更改FormView的顯示視圖this.FormViewOperation.ChangeMode(FormViewMode.Insert);(4)由于數(shù)據(jù)庫中對(duì)于教工類型和性別的描述都通過編碼表示的,但是顯示給客戶的時(shí)候不能直接顯示,需要根據(jù)數(shù)據(jù)庫的編碼轉(zhuǎn)化為方便理解的值,因此需要編寫如下兩個(gè)函數(shù),函數(shù)相關(guān)代碼。第四十頁,共142頁。6.2完成教師信息的維護(hù)(5)Page_Load方法中添加代碼,方便查詢結(jié)束后,當(dāng)頁面再次回送的時(shí)候,GridView中還能夠顯示查詢過的結(jié)果。if(Session["userType"].ToString()!="0") //如果不是管理員則返回{ Response.Write("<scriptlanguage=javascript>history.go(-1);</script>");} //重定向到前面頁面if(ViewState["sql"]!=null){stringsql=ViewState["sql"].ToString();this.SqlDataSourceResult.SelectCommand=sql;this.GridViewResult.DataSourceID=this.SqlDataSourceResult.ID;}第四十一頁,共142頁。6.2完成教師信息的維護(hù)(6)為每行的“詳情”按鈕和“編輯”按鈕編寫事件,當(dāng)用戶單擊“詳情”按鈕時(shí),F(xiàn)ormViewOperation內(nèi)顯示對(duì)應(yīng)行的詳情視圖;當(dāng)單擊“編輯”按鈕時(shí),F(xiàn)ormViewOperation內(nèi)顯示對(duì)應(yīng)行的編輯視圖。在GridView中單擊按鈕都是觸發(fā)RowCommand事件,在事件內(nèi)部通過命令名稱判斷是哪個(gè)按鈕觸發(fā)的,不同的按鈕對(duì)應(yīng)不同的代碼。打開GridView控件的屬性窗口,單擊

圖標(biāo),雙擊“RowCommand”,在此方法中添加如下代碼。(7)為了方便查看搜索后查詢出幾條記錄,需要給SqlDataSourceResult控件的Selected事件添加代碼。打開SqlDataSourceResult控件的屬性窗口,單擊

圖標(biāo),雙擊“Selected”,在此方法中添加如下代碼:this.LabelSearchResult.Text=e.AffectedRows.ToString();第四十二頁,共142頁。6.2完成教師信息的維護(hù)4.在瀏覽器中使用本頁(1)在“設(shè)計(jì)視圖”中,右擊選擇“在瀏覽器中查看”,出現(xiàn)如圖6.22所示的界面。圖6.22初始界面第四十三頁,共142頁。6.2完成教師信息的維護(hù)(2)單擊“新增教工”按鈕,出現(xiàn)“新增視圖”,如圖6.23所示,在界面內(nèi)錄入數(shù)據(jù)后,單擊“插入”按鈕,則向數(shù)據(jù)庫表內(nèi)插入了一條記錄,重復(fù)此操作可以向數(shù)據(jù)表內(nèi)插入多條記錄,單擊“搜索”按鈕。圖6.23新增教工信息界面第四十四頁,共142頁。6.2完成教師信息的維護(hù)顯示剛才所插入的記錄,界面如圖6.24所示。圖6.24增加教工后的界面第四十五頁,共142頁。6.2完成教師信息的維護(hù)(3)單擊每條記錄右邊的“詳情”按鈕,下部就會(huì)顯示出此記錄的詳細(xì)信息。單擊“編輯”按鈕,則顯示“編輯視圖”,如圖6.25所示,對(duì)信息進(jìn)行修改后,單擊“更新”按鈕實(shí)現(xiàn)數(shù)據(jù)的更新操作。若單擊“刪除”按鈕,則此條記錄將會(huì)從數(shù)據(jù)表內(nèi)刪除,實(shí)現(xiàn)刪除操作。圖6.25編輯教工信息界面第四十六頁,共142頁。6.2完成教師信息的維護(hù)(4)當(dāng)表內(nèi)記錄很多的時(shí)候需要利用搜索功能顯示出需要查看的記錄,在搜索欄“姓名”處輸入的所要查詢的教工姓名(支持模糊匹配),或在“手機(jī)號(hào)碼”處輸入所要查詢的教工手機(jī)(支持模糊匹配),單擊“搜索”按鈕,下方將顯示出所有匹配的記錄,如圖6.26所示。圖6.26搜索教工界面第四十七頁,共142頁。6.3完成課程安排的維護(hù)1.規(guī)劃課程安排維護(hù)的界面課程安排維護(hù)頁面的基本布局如圖6.27所示。查詢條件區(qū)域查詢結(jié)果顯示區(qū)域信息詳情/插入和修改區(qū)圖6.27頁面基本布局第四十八頁,共142頁。6.3完成課程安排的維護(hù)(2)打開Web.sitemap文件,在<siteMapNodeurl=""title="管理員子系統(tǒng)"description="">標(biāo)記內(nèi)部加入如下的內(nèi)容:<siteMapNodeurl="~/admin/ArrangeCourse.aspx"title="課程安排維護(hù)"description=""/>。(3)切換到ArrangeCourse.aspx頁面的設(shè)計(jì)視圖,在“屬性”窗口中的下拉框中選擇“Document”,設(shè)置StyleSheetTheme屬性為“主題1”。(4)切換到“源”視圖,把光標(biāo)定位到ID為“Content2”的標(biāo)記內(nèi),雙擊“工具欄”中HTML內(nèi)的“DIV”,在光標(biāo)處插入一個(gè)層,并設(shè)置其ID為“content”,設(shè)置Style屬性值為“border-style:solid;border-width:1pt”。(5)按照上面的方法在ID為“content”的層內(nèi)添加一個(gè)DIV,其ID屬性為“search”。切換到“設(shè)計(jì)”視圖,把光標(biāo)定位到此層內(nèi),單擊“應(yīng)用樣式”窗口中的“innerLayout”樣式規(guī)則,為該層應(yīng)用樣式規(guī)則。第四十九頁,共142頁。6.3完成課程安排的維護(hù)(6)按照如圖6.28所示向ID為“search”的DIV內(nèi)添加控件。圖6.28搜索欄設(shè)計(jì)第五十頁,共142頁。6.3完成課程安排的維護(hù)從左到右分別設(shè)置DIV內(nèi)控件的屬性,設(shè)置如表6.7所示。控件類型相關(guān)屬性和值DropDownListID=“DropDownListClass”ButtonID=“ButtonSearch”,width=“80px”,Text=“搜索”SqlDataSourceID=“SqlDataSourceClass”表6.7控件屬性設(shè)置第五十一頁,共142頁。6.3完成課程安排的維護(hù)(7)通過SqlDataSource任務(wù),打開“配置數(shù)據(jù)源”對(duì)話框,在“應(yīng)用程序連接數(shù)據(jù)庫應(yīng)該使用哪個(gè)連接”處,選擇“SqlServer2005ConnectionString”,單擊“下一步”按鈕,在彈出的“配置Select語句”對(duì)話框中指定來自表“Class”,選中“classID”和“className”兩個(gè)列,單擊“下一步”、“完成”按鈕,完成數(shù)據(jù)源的配置。通過DropDownList任務(wù),選擇數(shù)據(jù)源為“SqlDataSourceClass”,“顯示的字段”為“className”,“值字段”為“classID”,單擊“確定”按鈕,完成搜索欄的設(shè)置。(8)切換到“源”視圖中,在ID為“search”的DIV標(biāo)記的下部添加一個(gè)DIV。設(shè)置其ID為“result”,在“應(yīng)用樣式”窗口中,單擊“innerLayout”樣式規(guī)則,為該層應(yīng)用樣式規(guī)則。第五十二頁,共142頁。6.3完成課程安排的維護(hù)(9)把光標(biāo)定位到ID為“result”的DIV內(nèi),按照如圖6.29所示向DIV內(nèi)添加控件。圖6.29搜索結(jié)果欄設(shè)計(jì)第五十三頁,共142頁。6.3完成課程安排的維護(hù)從左到右分別設(shè)置DIV內(nèi)控件的屬性,設(shè)置如表6.8所示??丶愋拖嚓P(guān)屬性和值LabelID=“LabelSearchResult”ButtonID=“ButtonAdd”,Width=“80px”GridViewID=“GridView,Width=“100%”,AllowPaging=“True”SqlDataSourceID=“SqlDataSourceResult”表6.8控件屬性設(shè)置第五十四頁,共142頁。6.3完成課程安排的維護(hù)(10)通過SqlDataSource任務(wù)給SqlDataSourceResult控件設(shè)置數(shù)據(jù)庫連接串為“SqlServer2005ConnectionString”,Select語句為“SELECTClass.className,Course.course-Name,Teacher.teaName,Arrange.team,Arrange.classID,Arrange.courseID,Arrange.teaIDFROMArrangeINNERJOINClassONArrange.classID=Class.classIDINNERJOINCourseONArrange.courseID=Course.courseIDINNERJOINTeacherONArrange.teaID=Teacher.teaIDWHERE(Arrange.classID=@classID)”,@classID的參數(shù)源為“Control”,ControlID為“DropDownListClass”。(11)通過GridView任務(wù)為GridViewResult配置數(shù)據(jù)源為“SqlDataSourceResult”控件,通過“編輯列”,打開“字段”窗口,刪除classID、courseID和teaID字段,分別設(shè)置其他的字段的名稱為“班級(jí)名稱”、“課程名稱”、“授課老師”和“學(xué)期”,添加2個(gè)ButtonField到“選定的字段中”,分別設(shè)置ButtonField的Text屬性為“編輯”和“刪除”,ButtonField的CommandName屬性為“MyModify”和“MyDelete”。打開GridView1的屬性窗口,設(shè)置DataKeyNames為“classID”、“courseID”、“teaID”和“team”。第五十五頁,共142頁。6.3完成課程安排的維護(hù)(12)切換到“源”視圖中,在ID為“Result”的DIV標(biāo)記的下部添加一個(gè)ID為“Operation”的DIV。選中此DIV,在“應(yīng)用樣式”窗口中,單擊“innerLayout”樣式規(guī)則,為該層應(yīng)用樣式規(guī)則。(13)切換到設(shè)計(jì)視圖,把光標(biāo)定位到Operation層的內(nèi)部,插入一個(gè)Panel,ID設(shè)置為“PanelModify”,再在Panel內(nèi)插入一個(gè)5行3列的表格,指定寬度為“100%”。選中表格的第一列,通過“應(yīng)用樣式”為其應(yīng)用“ThreeTableOne”樣式;選中表格的第二列,為其應(yīng)用“ThreeTableTwo”樣式;選中表格第三列,為其應(yīng)用“ThreeTableThree”樣式。第五十六頁,共142頁。6.3完成課程安排的維護(hù)(14)按照如圖6.30所示在表格內(nèi)添加控件。圖6.30控件布局從上到下分別設(shè)置DIV內(nèi)控件的屬性,設(shè)置如表6.9所示。第五十七頁,共142頁。6.3完成課程安排的維護(hù)3.編寫本頁所需要的代碼(1)本頁的.aspx.cs頁面內(nèi)添加如下的命名空間引用。usingSystem.Data.SqlClient;usingSystem.Collections.Generic;(2)為了能讓頁面第一次訪問的時(shí)候下部編輯區(qū)域不顯示,當(dāng)用戶單擊“排課”按鈕的時(shí)候自動(dòng)顯示出來,需要在Page_load方法內(nèi)添加如下的代碼:if(Session["userType"].ToString()!="0") //如果不是管理員則返回{ Response.Write("<scriptlanguage=javascript>history.go(-1);</script>"); } //重定向到前面頁面if(!Page.IsPostBack){ this.PanelModify.Visible=false; }(3)當(dāng)用戶單擊“排課”按鈕的時(shí)候,顯示出PanalModify內(nèi)部的內(nèi)容,并保存當(dāng)前操作狀態(tài)為“add”狀態(tài)。雙擊“排課”按鈕,在ButtonAdd_Click方法中添加如下代碼:this.PanelModify.Visible=true;ViewState["op"]="add";第五十八頁,共142頁。6.3完成課程安排的維護(hù)(4)為了使頁面中的DropDownList控件根據(jù)某個(gè)選項(xiàng)的值而使此值對(duì)應(yīng)的選項(xiàng)被選中,在commTools類中添加一個(gè)方法實(shí)現(xiàn)此功能,在需要的地方調(diào)用此類的方法即可。代碼如下所示:publicstaticvoidsetDropDownListByValue(DropDownListlist,stringvalue) { for(inti=0;i<list.Items.Count;i++) { if(list.Items[i].Value==value) list.Items[i].Selected=true; else list.Items[i].Selected=false; }}第五十九頁,共142頁。6.3完成課程安排的維護(hù)(5)當(dāng)單擊GridView1內(nèi)部的“編輯”按鈕的時(shí)候,能夠獲取相應(yīng)行的信息,并自動(dòng)顯示出編輯視圖,讓用戶進(jìn)行編輯,需要在GridView1的RowCommand事件內(nèi)添加如下的代碼。(6)當(dāng)單擊“GridView”內(nèi)部的“刪除”按鈕的時(shí)候,能夠獲取相應(yīng)行的信息,并從數(shù)據(jù)庫內(nèi)把此記錄刪除,需要在GridView1的RowCommand事件內(nèi)添加如下的代碼。(7)在新增或編輯視圖下,單擊“保存”(ButtonSave)按鈕,則會(huì)根據(jù)當(dāng)前的操作狀態(tài)執(zhí)行不同的操作,因此需要在ButtonSave的Click事件中添加如下的代碼。(8)“隱藏”按鈕是隱藏實(shí)現(xiàn)編輯課程安排功能的控件,即隱藏ID為“PanelModify”的Panel控件。此按鈕的Click事件代碼如下所示。this.PanelModify.Visible=false;第六十頁,共142頁。6.3完成課程安排的維護(hù)4.在瀏覽器中使用本頁(1)在“設(shè)計(jì)視圖”中,右擊選擇“在瀏覽器中查看”,出現(xiàn)如圖6.31所示的界面。圖6.31排課頁面第六十一頁,共142頁。6.3完成課程安排的維護(hù)(2)單擊“排課”按鈕,出現(xiàn)如圖6.32所示的界面,選擇相應(yīng)的信息后,單擊“保存”按鈕即可進(jìn)行排課。(3)單擊GridView內(nèi)部的“編輯”按鈕,也會(huì)出現(xiàn)如圖6.32所示的界面,可以更改排課信息。圖6.32新增界面第六十二頁,共142頁。L6.1數(shù)據(jù)源控件L1.數(shù)據(jù)源控件概述數(shù)據(jù)源控件對(duì)操作數(shù)據(jù)庫方面的改觀在于:①無需了解ADO.NET的細(xì)節(jié),只要知道Select、Insert、Update、Delete語法即可。②避免了人為撰寫的性能差的ADO.NET語法,提高數(shù)據(jù)訪問的性能。③與數(shù)據(jù)綁定控件結(jié)合,不需要代碼或極少代碼即可使用內(nèi)置的分頁、排序、編輯、更新和刪除等功能。④對(duì)不同的數(shù)據(jù)源提供了一致的程序訪問模型,簡化了開發(fā)和學(xué)習(xí)不同技術(shù)的負(fù)擔(dān)。⑤內(nèi)置緩存機(jī)制,可以加快數(shù)據(jù)訪問。第六十三頁,共142頁。L1.數(shù)據(jù)源控件概述數(shù)據(jù)源控件可以連接不同類型的數(shù)據(jù)源,如數(shù)據(jù)庫、XML文檔、其他對(duì)象等,但它留給設(shè)計(jì)者的接口卻非常相似。設(shè)計(jì)人員只需采用相同或相似的方法處理數(shù)據(jù),而不必關(guān)心數(shù)據(jù)源屬于什么類型。.NETFramework包含支持不同數(shù)據(jù)綁定方案的數(shù)據(jù)源控件。表6.10描述了內(nèi)置的數(shù)據(jù)源控件。數(shù)據(jù)源控件說明SqlDataSource允許使用

MicrosoftSQLServer、OLEDB、ODBC或

Oracle數(shù)據(jù)庫。與

SQLServer一起使用時(shí)支持高級(jí)緩存功能ObjectDataSource允許使用業(yè)務(wù)對(duì)象或其他類,以及創(chuàng)建依賴中間層對(duì)象管理數(shù)據(jù)的

Web應(yīng)用程序。支持對(duì)其他數(shù)據(jù)源控件不可用的高級(jí)排序和分頁方案AccessDataSource允許使用

MicrosoftAccess數(shù)據(jù)庫。當(dāng)數(shù)據(jù)作為

DataSet對(duì)象返回時(shí),支持排序、篩選和分頁XmlDataSource允許使用

XML文件,特別適用于分層的

ASP.NET服務(wù)器控件,如

TreeView或

Menu控件SiteMapDataSource結(jié)合

ASP.NET站點(diǎn)導(dǎo)航使用表6.10.NETFramework包含的數(shù)據(jù)源控件第六十四頁,共142頁。L1.數(shù)據(jù)源控件概述下面分別介紹每種類型的數(shù)據(jù)源控件。1.SqlDataSource數(shù)據(jù)源控件通過

SqlDataSource控件,可以使用

Web控件訪問位于某個(gè)關(guān)系數(shù)據(jù)庫中的數(shù)據(jù),該數(shù)據(jù)庫包括

MicrosoftSQLServer和

Oracle數(shù)據(jù)庫,以及

OLEDB和

ODBC數(shù)據(jù)源。將

SqlDataSource控件和數(shù)據(jù)綁定控件結(jié)合使用,使用很少的代碼或不使用代碼就可以在

ASP.NET網(wǎng)頁中顯示和操作數(shù)據(jù)。2.ObjectDataSource數(shù)據(jù)源控件ObjectDataSource數(shù)據(jù)源控件用于向數(shù)據(jù)綁定控件表示識(shí)別數(shù)據(jù)的中間層對(duì)象或數(shù)據(jù)接口對(duì)象。結(jié)合使用

ObjectDataSource控件與數(shù)據(jù)綁定控件,只用少量代碼或不用代碼就可以在網(wǎng)頁上顯示、編輯和排序數(shù)據(jù)。第六十五頁,共142頁。L1.數(shù)據(jù)源控件概述3.AccessDataSource數(shù)據(jù)源控件AccessDataSource是使用MicrosoftAccess數(shù)據(jù)庫的數(shù)據(jù)源控件。與SqlDataSource一樣,AccessDataSource控件使用

SQL查詢執(zhí)行數(shù)據(jù)檢索。AccessDataSource控件的一個(gè)獨(dú)特之處是不用設(shè)置

ConnectionString屬性。需要做的就是使用

DataFile屬性設(shè)置

Access數(shù)據(jù)庫的mdb文件位置,AccessDataSource將負(fù)責(zé)維護(hù)數(shù)據(jù)庫的基礎(chǔ)連接。4.XmlDataSource數(shù)據(jù)源控件XmlDataSource控件使得

XML數(shù)據(jù)可用于數(shù)據(jù)綁定控件。XmlDataSource從使用

DataFile屬性指定的

XML文件加載

XML數(shù)據(jù)。另外,還可以從使用

Data屬性的字符串加載

XML數(shù)據(jù)。5.SiteMapDataSource數(shù)據(jù)源控件SiteMapDataSource控件是站點(diǎn)地圖數(shù)據(jù)的數(shù)據(jù)源,站點(diǎn)數(shù)據(jù)則由為站點(diǎn)配置的站點(diǎn)地圖提供程序進(jìn)行存儲(chǔ)。SiteMapDataSource使那些并非專門作為站點(diǎn)導(dǎo)航控件的

Web服務(wù)器控件(如

TreeView、Menu和

DropDownList控件)能夠綁定到分層的站點(diǎn)地圖數(shù)據(jù)??梢允褂眠@些

Web服務(wù)器控件將站點(diǎn)地圖顯示為目錄,或者對(duì)站點(diǎn)進(jìn)行主動(dòng)式導(dǎo)航。第六十六頁,共142頁。L2.SqlDataSourceSqlDataSource數(shù)據(jù)源控件主要提供了如下的功能。①只需少量代碼即可實(shí)現(xiàn)數(shù)據(jù)庫操作:查詢、插入、更新、刪除。②以DataReader和DataSet方式返回查詢結(jié)果集。③提供緩存功能。④提供沖突檢測(cè)功能。SqlDataSource控件的主要屬性見表6.11。第六十七頁,共142頁。L2.SqlDataSource使用SqlDataSource的常見方法:①通過圖形化的方式使用SqlDataSource實(shí)現(xiàn)數(shù)據(jù)的查詢功能。②通過圖形化的方式使用SqlDataSource實(shí)現(xiàn)數(shù)據(jù)的操作功能。③通過編程的方式使用SqlDataSource實(shí)現(xiàn)數(shù)據(jù)的操作功能。【例6-1】通過圖形化方式使用SqlDataSource實(shí)現(xiàn)數(shù)據(jù)的查詢功能。(1)運(yùn)行VisualStudio2008,新建站點(diǎn),并命名為“數(shù)據(jù)源與數(shù)據(jù)綁定控件”,并把數(shù)據(jù)庫“SMS”附加到SQLServer2005中。(2)新建Web頁面“圖形化使用SqlDataSource控件實(shí)現(xiàn)數(shù)據(jù)查詢功能.aspx”,切換到“設(shè)計(jì)”視圖。(3)從工具箱中分別拖放一個(gè)SqlDataSource控件、一個(gè)GridView控件、一個(gè)TextBox控件和一個(gè)Button控件到此頁面上,單擊“SqlDataSource任務(wù)”中的“配置數(shù)據(jù)源”,在彈出的窗口中單擊“新建連接”按鈕,彈出“添加連接”對(duì)話框,在“服務(wù)器名”處選擇所要連接的數(shù)據(jù)庫名稱,“登錄到服務(wù)器”處選擇登錄服務(wù)器的方式,“連接到一個(gè)數(shù)據(jù)庫”處選擇所要連接的數(shù)據(jù)庫,如圖6.33所示。第六十八頁,共142頁。L2.SqlDataSource圖6.33配置數(shù)據(jù)庫連接第六十九頁,共142頁。L2.SqlDataSource(4)確定后,單擊“下一步”按鈕,會(huì)提示是否把此連接保存到Web.config中,以便以后使用,單擊“下一步”按鈕,彈出“配置Select語句”對(duì)話框,如圖6.34所示。圖6.34配置Select語句第七十頁,共142頁。L2.SqlDataSource(5)此對(duì)話框中提供2種設(shè)置SQL語句的選項(xiàng):一種是“指定自定義SQL語句或存儲(chǔ)過程”,此選項(xiàng)可以為數(shù)據(jù)源控件自定義SQL語句或存儲(chǔ)過程,此種情況下適合于查詢語句比較復(fù)雜的多表查詢或者調(diào)用存儲(chǔ)過程的情況,也可以同時(shí)為SqlDataSource配置其他的Command;另一種是“指定來自表或視圖的列”(此種情況適合于從單表查詢數(shù)據(jù))。(6)選擇第一種后,出現(xiàn)如圖6.35所示的界面,此界面包括4個(gè)選項(xiàng)卡,可以分別為數(shù)據(jù)源控件添加SELECT、UPDATE、INSERT和DELETE等SQL語句,或指定存儲(chǔ)過程,SQL語句中可以包含參數(shù)。第七十一頁,共142頁。L2.SqlDataSource圖6.35自定義語句或存儲(chǔ)過程第七十二頁,共142頁。L2.SqlDataSource(7)單擊“下一步”按鈕,如果SQL語句或存儲(chǔ)過程中包含參數(shù),則會(huì)彈出“定義參數(shù)”對(duì)話框,如圖6.36所示。為courseScore參數(shù)指定參數(shù)源類型為Control,ControlID為“TextBox1”,設(shè)置完畢后,單擊“下一步”、“完成”按鈕完成數(shù)據(jù)源的創(chuàng)建。圖6.36定義參數(shù)第七十三頁,共142頁。L2.SqlDataSourceSqlDataSource參數(shù)源支持如下幾種參數(shù)源,通過參數(shù)源可以方便地利用ASP.NET內(nèi)置的對(duì)象或控件給Sql語句中的參數(shù)進(jìn)行賦值:Cookie:把Cookie對(duì)象中的某個(gè)變量的值作為參數(shù)的值。Control:把服務(wù)器控件的某個(gè)屬性的值作為參數(shù)的值。Form:把Form表單內(nèi)的元素的值作為參數(shù)的值。Profile:把Profile文件中的屬性的值作為參數(shù)的值。QueryString:把QueryString查詢字符串中的變量的值作為參數(shù)的值。Session:把Session對(duì)象中的變量的值作為參數(shù)的值。第七十四頁,共142頁。L2.SqlDataSource(8)設(shè)置GridView的數(shù)據(jù)源為SqlDataSource1,在瀏覽器中查看本頁,在文本框內(nèi)輸入對(duì)應(yīng)的學(xué)分,單擊Button控件,則GridView控件中就會(huì)顯示對(duì)應(yīng)的課程,運(yùn)行效果如圖6.37所示。圖6.37運(yùn)行效果

第七十五頁,共142頁。L2.SqlDataSource【例6-2】通過圖形化的方式和編程的方式使用SqlDataSource實(shí)現(xiàn)數(shù)據(jù)的操作功能。(1)運(yùn)行VisualStudio2008,打開站點(diǎn)“數(shù)據(jù)源與數(shù)據(jù)綁定控件”,在站點(diǎn)內(nèi)新建頁面,命名為“使用SqlDataSource實(shí)現(xiàn)數(shù)據(jù)的操作功能.aspx”。(2)按照如圖6.38所示設(shè)計(jì)界面。圖6.38頁面布局第七十六頁,共142頁。L2.SqlDataSource(3)打開SqlDataSource1的屬性窗口,設(shè)置ConnectionString為“SMS-ConnectionString”,打開InsertQuery設(shè)置窗口,設(shè)置Insert命令為“INSERTINTOCourse(courseName,courseScore)VALUES(@courseName,@courseScore)”,設(shè)置@courseName的參數(shù)源為“TextBox1”,設(shè)置@courseScore的參數(shù)源為“TextBox2”。設(shè)置完成后如圖6.39所示。圖6.39Insert命令設(shè)置第七十七頁,共142頁。L2.SqlDataSource(4)雙擊“圖形方式”按鈕,在Click事件內(nèi)添加如下的代碼:try{this.SqlDataSource1.Insert();//在頁面上注冊(cè)一段JavaScript腳本來顯示提示框stringscript="alert('插入成功')";Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"success",script,true);}catch{stringscript="alert('插入失敗')";Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"success",script,true);}(5)在瀏覽器中查看本頁,并錄入相應(yīng)的課程名稱與課程學(xué)分,單擊“圖形錄入”按鈕,即可把錄入的數(shù)據(jù)插入到數(shù)據(jù)庫內(nèi)。第七十八頁,共142頁。L2.SqlDataSource(6)以同樣的方式設(shè)置SqlDataSource2的ConnectionString屬性和Insert命令,但不設(shè)置參數(shù)源,雙擊“編程方式”按鈕,在Click事件內(nèi)添加如下的代碼來實(shí)現(xiàn)通過代碼給參數(shù)賦值:try{//通過代碼給SqlDataSource2中Insert命令所用的參數(shù)賦值this.SqlDataSource2.InsertParameters["courseName"].DefaultValue=this.TextBox1.Text;this.SqlDataSource2.InsertParameters["courseScore"].DefaultValue=this.TextBox2.Text;this.SqlDataSource2.Insert();stringscript="alert('插入成功')";Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"success",script,true);}catch{stringscript="alert('插入失敗')";Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"success",script,true);}第七十九頁,共142頁。L2.SqlDataSource(7)在瀏覽器中查看本頁,在文本框內(nèi)錄入相應(yīng)的課程名稱與課程學(xué)分,單擊“編程方式”按鈕實(shí)現(xiàn)把錄入的數(shù)據(jù)插入到數(shù)據(jù)庫中。第八十頁,共142頁。L3.ObjectDataSource【例6-3】利用ObjectDataSource操作數(shù)據(jù)庫。(1)運(yùn)行VisualStudio2008,打開“數(shù)據(jù)源與數(shù)據(jù)綁定控件”站點(diǎn),并添加Object-DataSource.aspx頁面。(2)通過添加新項(xiàng),選擇“類”并命名為“DataManager.cs”,當(dāng)單擊“添加”按鈕時(shí)提示是否把類存放到App_Code文件夾,單擊“是”按鈕。(3)在DataManager.cs中添加命名空間,命名空間如下所示:usingSystem.Data;usingSystem.Data.SqlClient;usingSystem.Configuration;為DataManager類添加代碼,代碼如下所示,添加結(jié)束后,選擇“生成”→“生成網(wǎng)站”菜單項(xiàng),確保代碼生成成功。第八十一頁,共142頁。L3.ObjectDataSource(4)從工具箱中拖放ObjectDataSource控件、GridView控件、TextBox控件和Button控件到ObjectDataSource.aspx頁面內(nèi)。(5)單擊ObjectDataSource任務(wù),配置數(shù)據(jù)源,出現(xiàn)“選擇業(yè)務(wù)對(duì)象”窗口,如圖6.40所示,選擇已經(jīng)創(chuàng)建的DataManager類,單擊“下一步”按鈕。圖6.40選擇業(yè)務(wù)對(duì)象第八十二頁,共142頁。L3.ObjectDataSource(6)在彈出的“定義數(shù)據(jù)方法”對(duì)話框中選擇“getData”方法,如圖6.41所示。此對(duì)話框類似于SqlDataSource的“自定義語句或存儲(chǔ)過程”對(duì)話框,設(shè)置數(shù)據(jù)源控件各種操作與業(yè)務(wù)對(duì)象內(nèi)部方法的對(duì)應(yīng)關(guān)系,當(dāng)調(diào)用數(shù)據(jù)源控件內(nèi)對(duì)應(yīng)的方法時(shí),數(shù)據(jù)源控件會(huì)自動(dòng)調(diào)用業(yè)務(wù)邏輯類對(duì)應(yīng)的方法,單擊“下一步”按鈕。圖6.41定義數(shù)據(jù)方法

第八十三頁,共142頁。L3.ObjectDataSource(7)如果方法需要輸入?yún)?shù),則會(huì)彈出“定義參數(shù)”對(duì)話框,等同于SqlDataSource控件,把TextBox1的Text屬性設(shè)置為參數(shù)的值,單擊“完成”按鈕完成數(shù)據(jù)源的配置。(8)把GridView1綁定到OjbectDataSource1控件上,在瀏覽器內(nèi)查看本頁,輸入“4”并單擊“Button”按鈕,運(yùn)行結(jié)果如圖6.42所示。圖6.42定義數(shù)據(jù)方法返回第八十四頁,共142頁。L6.2數(shù)據(jù)綁定控件L1.數(shù)據(jù)綁定的概念數(shù)據(jù)綁定應(yīng)用的范圍非常廣泛,數(shù)據(jù)集、數(shù)組、集合或XML文檔,甚至一般的變量,都可以作為數(shù)據(jù)源,大多數(shù)控件的屬性都可以成為被綁定的對(duì)象。在ASP.NET的類庫中,所有的綁定控件都從BaseDataBoundControl基類繼承,因此具有很多相似的功能。然后,不同類型的綁定控件繼承于不同的子類。類的層次關(guān)系如圖6.43所示。圖6.43數(shù)據(jù)綁定控件的類層次結(jié)構(gòu)第八十五頁,共142頁。L1.數(shù)據(jù)綁定的概念幾個(gè)基類如下。①BaseDataBoundControl類:所有綁定控件的基類。②DataBoundControl類:所有常用控件的基類。③ListControl類:所有列表控件的基類。④CompositeDataBoundControl類:比較復(fù)雜的表格控件的基類。⑤HierarchicalDataBoundControl類:所有層次控件的基類。第八十六頁,共142頁。L1.數(shù)據(jù)綁定的概念根據(jù)綁定控件的功能特性可以把數(shù)據(jù)綁定控件分為如下幾類:①列表綁定控件:此類主要包括DropDownList、ListBox、RadioButtonList等,此類控件的使用方法相同。②復(fù)合綁定控件:此類控件主要包括GridView、DetailsView、ListView等,不同的控件使用方法大致相同,但是不同的控件具有不同的功能。③層次綁定控件:此類控件主要包括Menu、TreeView控件。第八十七頁,共142頁。L2.DropDownList控件DropDownList服務(wù)器控件是常用的數(shù)據(jù)綁定控件,主要用來提供單條數(shù)據(jù)的選擇功能。DropDownList除了前面介紹的通過手工方式給DropDownList添加項(xiàng)外,還提供了數(shù)據(jù)綁定的功能,可以方便地與數(shù)據(jù)源控件進(jìn)行綁定,自動(dòng)從數(shù)據(jù)源內(nèi)獲取數(shù)據(jù)來添加項(xiàng)。表6.12列出了DropDownList與數(shù)據(jù)綁定有關(guān)的屬性。名稱說明DataSourceID用來設(shè)置與DropDownList進(jìn)行綁定的數(shù)據(jù)源控件的IDDataTextField用來設(shè)置數(shù)據(jù)源中哪個(gè)字段跟Item的Text綁定DataValueField用來設(shè)置數(shù)據(jù)源中哪個(gè)字段跟Item的Value綁定表6.12DropDownList相關(guān)屬性返回第八十八頁,共142頁。L3.GridView控件可以使用

GridView來完成以下操作:

①通過數(shù)據(jù)源控件自動(dòng)綁定和顯示數(shù)據(jù)。②

溫馨提示

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

評(píng)論

0/150

提交評(píng)論