




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)綁定控件(二)
第八章目標(biāo)使用DataGrid顯示數(shù)據(jù)庫中的數(shù)據(jù)使用DataGrid的模板列選擇、更新和刪除DataGrid中的記錄DataGrid控件概述ASP.NET中的DataGrid控件用于以表格格式顯示數(shù)據(jù)DataGrid控件派生自System.Web.UI.WebControls.DataGrid類工具箱的“Web窗體”選項(xiàng)卡中的DataGrid控件如圖所示要使用DataGrid控件,可在Web窗體上拖放控件或者雙擊工具箱中的該控件Web窗體中的DataGrid控件如圖所示為DataGrid控件綁定數(shù)據(jù)2-1要在DataGrid控件中查看數(shù)據(jù),必須將它綁定到一個(gè)數(shù)據(jù)源使用DataSource屬性為DataGrid指定數(shù)據(jù)源,然后用DataMember屬性指定要顯示的數(shù)據(jù)源中的表打開VS.NET集成開發(fā)環(huán)境選擇ASP.NET應(yīng)用程序,然后為項(xiàng)目命名將此網(wǎng)頁重命名為DataGridDemo.aspx拖放DataAdapter組件完成“數(shù)據(jù)適配器配置向?qū)А敝械牟襟E選擇“生成數(shù)據(jù)集”,然后給定合適的名稱將DataGrid控件添加到Web窗體將DataGrid重命名為dgDisplay在dgDisplay的“屬性”窗口中選擇DataSource和DataMember步驟指定SQL服務(wù)器,并選擇列DataGrid的外觀現(xiàn)在已更改,顯示出表publishers中的列名
定義數(shù)據(jù)源后,應(yīng)將以下兩行代碼添加到頁面的Load事件,然后填充DataGrid為DataGrid控件綁定數(shù)據(jù)2-2
DataGrid
//填充數(shù)據(jù)集SqlDataAdapterobjSqlDataAdapter.Fill(dsPublishers,"Publishers");//填充數(shù)據(jù)網(wǎng)格dgDisplay.DataBind();輸出結(jié)果此屬性指定唯一標(biāo)識(shí)表中給定行的列設(shè)置頁眉和頁腳可使用“屬性生成器”對(duì)話框設(shè)置DataGrid的頁眉和頁腳屬性生成器使用“屬性生成器”對(duì)話框指定各列的頁腳文本和頁眉文本輸出結(jié)果數(shù)據(jù)格式表達(dá)式使用數(shù)據(jù)格式表達(dá)式格式化DataGrid中顯示的數(shù)據(jù)mm/dd/yyyydd/mm/yyyy格式表達(dá)式的作用格式化數(shù)據(jù)右擊Datagrid,選擇“屬性生成器”選擇數(shù)據(jù)格式表達(dá)式中給出的列指定格式表達(dá)式格式表達(dá)式設(shè)置為{0:D}設(shè)置格式表達(dá)式模板列3-1“模板”列允許組合使用HTML控件和服務(wù)器控件設(shè)計(jì)列的自定義布局模板只針對(duì)特定的列,不能應(yīng)用于自動(dòng)生成的列中第1列第2列通過右擊DataGrid并選擇“編輯模板”,再選擇“注冊”列,可將Checkbox控件添加到“模板”列此時(shí)顯示如圖所示的模板編輯器模板編輯器HeaderTemplate
此屬性獲取或設(shè)定的模板用于定義模板列的頁眉ItemTemplate
此屬性獲取或設(shè)定的模板用于顯示模板列中選定的項(xiàng)EditItemTemplate
此屬性獲取或設(shè)定的模板用于編輯模板列中的數(shù)據(jù)項(xiàng)FooterTemplate
此屬性獲取或設(shè)定的模板用于定義模板列的頁腳將一個(gè)復(fù)選框拖放到ItemTemplate框中DataGrid現(xiàn)在于“注冊”列的各行中顯示一個(gè)復(fù)選框模板列3-2模板編輯器顯示模板列的四個(gè)屬性:復(fù)選框的選定狀態(tài)由IsRegistered()返回的布爾值決定模板列3-3publicboolIsRegistered(stringcountry){ if(country=="USA") returntrue; returnfalse;}在復(fù)選框容器中調(diào)用IsRegistered()<asp:CheckBoxid="CheckBox1"runat="server"Enabled=FalseChecked='<%#IsRegistered(Convert.ToString(DataBinder.Eval(Container.DataItem,"country")))%>'></asp:CheckBox>將數(shù)據(jù)綁定到模板列確定publishers是否注冊的用戶自定義函數(shù)EditCommandColumn使用數(shù)據(jù)庫時(shí)需要執(zhí)行三項(xiàng)基本任務(wù),分別是:選擇數(shù)據(jù)更新數(shù)據(jù) 刪除數(shù)據(jù)選擇DataGrid中的行要選擇DataGrid中的記錄,可使用“按鈕列”中的“選擇”要確定用戶選擇的行,可使用DataGrid的SelectedIndexChanged事件要為dgDisplay
生成SelectedIndexChanged事件,可雙擊dgDisplay
的“屬性”窗口中顯示的SelectedIndexChanged事件privatevoiddgDisplay_SelectedIndexChanged(objectsender,System.EventArgse){ lblMessage.Text=“您已選定"+dgDisplay.SelectedItem.Cells[1].Text;} 輸出結(jié)果在DataGrid中選擇記錄更新數(shù)據(jù)4-1呈現(xiàn)用于更新數(shù)據(jù)界面的方式之一是向用戶提供一組數(shù)據(jù),允許用戶選擇要更新的行DataGrid控件EditItemIndexEditCommandColumn編輯更新取消更新數(shù)據(jù)4-2在“屬性生成器”對(duì)話框中,將“編輯、更新、取消”從“按鈕列”添加到“選定的列”列表中要為
dgDisplay生成EditCommand事件處理程序,請(qǐng)雙擊dgDisplay的“屬性”窗口中顯示的EditCommand事件publicvoiddgDisplay_EditCommand(objectsource,System.Web.UI.WebControls.DataGridCommandEventArgse){ dgDisplay.EditItemIndex=e.Item.ItemIndex; BindGrid();}更新數(shù)據(jù)4-3要為dgDisplay生成UpdateCommand事件處理程序,請(qǐng)雙擊dgDisplay的“屬性”窗口中顯示的UpdateCommand事件publicvoiddgDisplay_UpdateCommand(objectsource ,System.Web.UI.WebControls.DataGridCommandEventArgse){ sqlUpdateCommand1.Parameters["@Original_pub_id"].Value= dgDisplay.DataKeys[(int)e.Item.ItemIndex]; sqlUpdateCommand1.Parameters["@pub_id"].Value= ((TextBox)e.Item.Cells[0].Controls[0]).Text; sqlUpdateCommand1.Parameters["@pub_name"].Value= ((TextBox)e.Item.Cells[1].Controls[0]).Text; sqlUpdateCommand1.Parameters["@city"].Value= ((TextBox)e.Item.Cells[2].Controls[0]).Text; sqlUpdateCommand1.Parameters["@state"].Value= ((TextBox)e.Item.Cells[3].Controls[0]).Text; sqlUpdateCommand1.Parameters[“@country”].Value= ((TextBox)e.Item.Cells[4].Controls[0]).Text; try { if(sqlConnection1.State==ConnectionState.Closed) { sqlConnection1.Open(); sqlDataAdapter1.UpdateCommand.ExecuteNonQuery(); lblMessage.Text="<b>RecordUpdated</b><br>"; dgDisplay.EditItemIndex=-1; } sqlConnection1.Close(); } catch(SqlExceptionexc) { if(exc.Number==2627) lblMessage.Text="錯(cuò)誤:已存在相同主鍵的記錄"; else lblMessage.Text=exc.ToString() +"錯(cuò)誤:無法更新記錄,請(qǐng)確保字段都" +"已正確填寫"; } BindGrid();}更新數(shù)據(jù)4-4要為dgDisplay生成CancelCommand事件處理程序,請(qǐng)雙擊gDisplay的“屬性”窗口中顯示的CancelCommand事件publicvoiddgDisplay_CancelCommand(objectsource,System.Web.UI.WebControls.DataGridCommandEventArgse){ dgDisplay.EditItemIndex=-1; BindGrid();} 這確保DataGrid中無記錄處于編輯模式下顯示編輯模式下的DataGrid控件dgDisplay編輯模式下的DataGrid
刪除數(shù)據(jù)2-1要為用戶給出刪除行的選項(xiàng),可將名為“刪除”的按鈕列添加到DataGrid控件privatevoiddgDisplay_DeleteCommand(objectsource,System.Web.UI.WebControls.DataGridCommandEventArgse){ sqlDataAdapter1.DeleteCommand.Parameters["@Original_pub_id"].Value=dgDisplay.DataKeys[(int)e.Item.ItemIndex]; try { if(sqlConnection1.State==ConnectionState.Closed) { sqlConnection1.Open(); sqlDataAdapter1.DeleteCommand.ExecuteNonQuery();
續(xù).. lblMessage.Text=“<b>刪除的記錄</b><br>"; sqlConnection1.Close(); } } catch(SqlExceptionexc) { lblMessage.Text=exc.ToString()+“錯(cuò)誤:不能刪除記錄"; } BindGrid();}刪除數(shù)據(jù)2-2要為dgDisplay生成dgDisplay_DeleteCommand事件處理程序,請(qǐng)雙擊dgDisplay的“屬性”窗口中顯示的DeleteCommand事件輸出結(jié)果刪除DataGrid中的記錄通用的ButtonColumn除了“選擇”、“編輯、更新、取消”等執(zhí)行不同任務(wù)的一些命令以外,也可以將一般按鈕列添加到DataGrid添加按鈕列下列顯示的代碼在確定在DataGrid上的執(zhí)行命令是否為Convert之后將文本形式的供應(yīng)商名稱轉(zhuǎn)換為大寫privatevoiddgDisplay_ItemCommand(objectsource,System.Web.UI.WebControls.DataGridCommandEventArgse){if(((LinkButton)e.CommandSource).CommandName=="Convert") { lblMessage.Text=e.Item.Cells[1].Text.ToUpper(); }} 確定所單擊按鈕的命令名稱,并執(zhí)行相應(yīng)的代碼單擊DataGrid中第一行的“轉(zhuǎn)換”鏈接后,輸出結(jié)果顯示如下:DataGrid分頁2-1使用DataGrid分頁可以按指定每頁顯示的記錄數(shù)量,
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 普洱2025年云南普洱市商務(wù)局招聘城鎮(zhèn)公益性崗位工作人員筆試歷年參考題庫附帶答案詳解
- 買賣收購合同范本
- 人教版七年級(jí)歷史與社會(huì)上冊 3.3.3水上都市教學(xué)設(shè)計(jì)
- 2025至2030年地暖項(xiàng)目投資價(jià)值分析報(bào)告
- 2025年中國智慧景區(qū)市場調(diào)查研究及行業(yè)投資潛力預(yù)測報(bào)告
- 《3 垃圾問題小思考》(教學(xué)設(shè)計(jì))-2023-2024學(xué)年三年級(jí)上冊綜合實(shí)踐活動(dòng)吉美版
- 2025至2030年吸塵車項(xiàng)目投資價(jià)值分析報(bào)告
- 網(wǎng)絡(luò)綜藝行業(yè)未來趨勢預(yù)測分析及投資規(guī)劃研究建議報(bào)告
- 2025至2030年中國酯類產(chǎn)品數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025年度簽約居民健康評(píng)估報(bào)告基本要素
- 濰坊2025年山東濰坊市產(chǎn)業(yè)技術(shù)研究院招聘7人筆試歷年參考題庫附帶答案詳解
- 小學(xué)五年級(jí)體育教案全冊(人教版)
- 《教育向美而生-》讀書分享課件
- 2024年 江蘇鳳凰新華書店集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 20以內(nèi)加減法口算題(10000道)(A4直接打印-每頁100題)
- 安全評(píng)價(jià)工作程序框圖流程圖
- 臨床血液學(xué)檢驗(yàn)第5講骨髓活檢及細(xì)胞生物學(xué)實(shí)驗(yàn)技術(shù)
- 空間生產(chǎn)理論
- 網(wǎng)絡(luò)營銷教案完整版講義
- 《固體物理學(xué)》全冊完整教學(xué)課件
- ATOS阿托斯葉片泵PFE-31PFE-41PFE-51選型資料樣本
評(píng)論
0/150
提交評(píng)論