版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
本章要點了解數(shù)據(jù)綁定控件的作用掌握GridView控件的使用方法掌握DataList控件的使用方法掌握Repeater控件的使用方法掌握ListView控件的使用方法掌握Chart控件的使用方法17.1數(shù)據(jù)綁定概述ASP.NET提供了豐富的控件用于顯示數(shù)據(jù),這類顯示數(shù)據(jù)的控件稱為數(shù)據(jù)綁定控件。數(shù)據(jù)綁定控件大致可分為兩類:一是前面所講的選項類數(shù)據(jù)列表控件,如ListBox、DropDownList控件等,另一類是用于數(shù)據(jù)展示的數(shù)據(jù)顯示控件,其功能是通過將數(shù)據(jù)綁定到這些控件并以一定的格式顯示數(shù)據(jù),如GridView、DataList、Repeater、ListView、Chart等控件。7.1.1綁定方式1.使用數(shù)據(jù)源控件方式綁定<asp:DropDownListID="DropDownList1"runat="server"DataSourceID="SqlDataSource1"DataTextField="姓名"DataValueField="學(xué)號"Height="16px"Width="102px"></asp:DropDownList><asp:SqlDataSourceID="SqlDataSource1“runat="server"ConnectionString="<%$ConnectionStrings:stuConnectionString%>"ProviderName="System.Data.SqlClient"SelectCommand="select*from學(xué)生"></asp:SqlDataSource>7.1.1綁定方式2.編寫程序綁定前臺頁面代碼如下:<asp:DropDownListID="DropDownList1"runat="server"></asp:DropDownList>后臺代碼如下:stringconnstr=WebConfigurationManager.ConnectionStrings["stuConnectionString"].ToString();//從web.config中讀取連接字符串SqlConnectionconn=newSqlConnection(connstr);//創(chuàng)建連接對象SqlDataAdaptersda=newSqlDataAdapter("select*from學(xué)生",conn);//創(chuàng)建SqlDataAdapter對象DataSetds=newDataSet();//創(chuàng)建數(shù)據(jù)集sda.Fill(ds);DropDownList1.DataSource=ds.Tables[0];//設(shè)置數(shù)據(jù)源DropDownList1.DataTextField="姓名";//在控件中顯示的列DropDownList1.DataValueField="學(xué)號";//控件的選擇值列DropDownList1.DataBind();7.2GridView控件GridView是ASP.NET功能最強大最復(fù)雜的控件,可以格式化并顯示數(shù)據(jù)庫的記錄,可以對記錄進行排序、分頁。是ASP.NET中使用最多的數(shù)據(jù)綁定控件。Gridview控件示例7.2.1GridView簡介屬性說明AutoGenerateColumns是否為數(shù)據(jù)源中的每個字段自動創(chuàng)建綁定字段BackImageUrl控件背景圖像的URLCaption標題行中呈現(xiàn)的文本GridLines網(wǎng)絡(luò)線樣式Columns列字段的集合Rows數(shù)據(jù)行的集合ShowFooter是否在控件中顯示腳注行ShowHeader是否在控件中顯示標題行GridView控件的常用屬性7.2.1GridView簡介屬性說明RowStyle設(shè)置數(shù)據(jù)行的樣式AlternatingRowStyle設(shè)置交替數(shù)據(jù)行的樣式EditRowStyle設(shè)置正在編輯行的樣式SelectRowStyle設(shè)置選中行的樣式PagerStyle設(shè)置頁導(dǎo)航行的樣式HeaderStyle設(shè)置標題行的樣式FooterStyle設(shè)置腳注行的樣式GridView常用的樣式屬性7.2.2GridView綁定數(shù)據(jù)源對GridView進行數(shù)據(jù)綁定有兩種方法:1.通過編寫代碼設(shè)置GridView控件的DataSource屬性,然后調(diào)用DataBind()方法。2.通過可視化界面使用控件DataSource連接數(shù)據(jù)源,再把GridView控件的DataSourceID屬性設(shè)置為DataSource控件的ID。7.2.2GridView綁定數(shù)據(jù)源1.通過編寫代碼進行綁定【例7-4】<htmlxmlns="/1999/xhtml"><headrunat="server"><title></title></head><body><formid="form1"runat="server"><asp:GridViewID="GridView1"runat="server"DataKeyNames="學(xué)號"Caption="學(xué)生信息表"></asp:GridView></form></body></html>protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){stringconnstr=WebConfigurationManager.ConnectionStrings["stuConnectionString"].ToString();//從web.config中讀取連接字符串
SqlConnectionconn=newSqlConnection(connstr);//創(chuàng)建連接對象
SqlDataAdaptersda=newSqlDataAdapter("select*from學(xué)生",conn);//創(chuàng)建SqlDataAdapter對象,同時定義查詢命令,設(shè)置關(guān)聯(lián)的連接對象
DataSetds=newDataSet();//創(chuàng)建數(shù)據(jù)集
sda.Fill(ds);//填充數(shù)據(jù)集
GridView1.DataSource=ds.Tables[0];//將數(shù)據(jù)集的第1個DataTable作為GridView控件的數(shù)據(jù)源
GridView1.DataBind();//將數(shù)據(jù)源綁定到GridView控件
}}后臺程序代碼:7.2.2GridView綁定數(shù)據(jù)源例7-4添加樣式表后的運行結(jié)果7.2.2GridView綁定數(shù)據(jù)源2.使用控件進行綁定將數(shù)據(jù)表直接拖動到頁面上,會自動出現(xiàn)GridView控件和SqlDataSource控件7.2.2GridView綁定數(shù)據(jù)源使用控件綁定方式運行結(jié)果7.2.3在GridView控件中創(chuàng)建列列類型含義描述BoundField綁定列GridView的默認列,用于顯示記錄的字段HyperLinkField超鏈接作為鏈接顯示記錄的字段ButtonField按鈕顯示按鈕控件CommandField編輯顯示編輯命令(EditUpdateCancel)TemplateField模板使用模板顯示記錄GridView控件支持的列類型在默認情況下,GridView簡單地顯示來自數(shù)據(jù)源的所有列,實際上是數(shù)據(jù)源中的所有列自動地使用戶ItemTemplate模板來顯示,不需要顯式聲明模板。當(dāng)然也可以通過設(shè)置AutoGenerateColumns的屬性為False來自定義數(shù)據(jù)的顯示格式,可以單獨地創(chuàng)建每個列和對列的顯示格式進行更多的控制。7.2.3在GridView控件中創(chuàng)建列這些列類型是作為GridView的子控件,其聲明代碼必須在GridView控件內(nèi)部,并且在標識符號<Columns>和</Columns>之間,例如:<asp:GridViewID="GridView1"runat="server"AutoGenerateColumns="False"DataKeyNames="學(xué)號"DataSourceID="SqlDataSource1"><Columns><asp:BoundFieldDataField="學(xué)號"HeaderText="學(xué)號"/><asp:BoundFieldDataField="姓名"HeaderText="姓名"/></Columns></asp:GridView>7.2.3在GridView控件中創(chuàng)建列1.添加BoundField列屬性描述DataField由BoundField顯示的來自數(shù)據(jù)源的字段DataFormatString格式化DataField中顯示的字符串FooterText顯示在BoundField列底部的文本,即列的腳注HeaderImageUrl在BoundField列頂部顯示的圖片HeaderText顯示在BoundField列頂部的文本,即列標題BoundField的屬性7.2.3在GridView控件中創(chuàng)建列【例7-5】在GridView中顯示學(xué)生表的數(shù)據(jù),只顯示學(xué)號、姓名、出生日期,其中出生日期以“xxxx年xx月xx日”格式顯示。要求在GridView中顯示腳注行。
<asp:GridViewID="GridView1"runat="server"AutoGenerateColumns="False"DataKeyNames="學(xué)號"CssClass="tableList"ShowFooter="True"><HeaderStyleCssClass="thTitle"/><FooterStyleCssClass="thTitle"/><Columns><asp:BoundFieldDataField="學(xué)號"HeaderText="學(xué)號"FooterText="學(xué)號"/><asp:BoundFieldDataField="姓名"HeaderText="姓名"FooterText="姓名"/><asp:BoundFieldDataField="出生日期"HeaderText="出生日期"DataFormatString="{0:D}"FooterText="出生日期"/></Columns></asp:GridView>7.2.3在GridView控件中創(chuàng)建列例7-5運行結(jié)果7.2.3在GridView控件中創(chuàng)建列2.添加HyperLinkField列HyperLinkField在GridView控件中顯示一個超鏈接列,用于跳轉(zhuǎn)到其它頁面,一般情況下帶有參數(shù)。屬性描述DataNavigateUrlFields來自GridView控件的數(shù)據(jù)源的字段,是DataNavigateUrlFormatString中的參數(shù)DataNavigateUrlFormatString格式化DataNavigateUrlFields值的字符串,是一個帶有參數(shù)的URL地址DataTextField來自GridView控件的數(shù)據(jù)源的字段,用于超鏈接標簽上顯示的文本DataTextFormatString格式化DataTextField值的字符串NavigateUrl超鏈接UrlTarget超鏈接指向的窗口或框架FooterText顯示在HyperLinkField列底部的文本,即列的腳注HeaderImageUrl在HyperLinkField列頂部顯示的圖片HeaderText顯示在HyperLinkField列頂部的文本,即列標題Text作為超鏈接標簽顯示的文本,這里是一個固定值7.2.3在GridView控件中創(chuàng)建列【例7-6】數(shù)據(jù)庫中有一個訂單表和訂單細節(jié)表,表結(jié)構(gòu)如下:訂單(訂單編號、下單時間、客戶姓名、聯(lián)系電話、總價)訂單詳情(編號,商品名稱、商標、型號、價格、單位、數(shù)量,訂單編號)設(shè)計一個頁面顯示訂單列表,按下單時間降序排列,在列表中設(shè)計一個“查看詳情”的超鏈接列,通過它可以查看訂單的詳情。<asp:GridViewID="GridView1"runat="server"AutoGenerateColumns="False"DataKeyNames="cOrderno"/><Columns><asp:BoundFieldDataField="cOrderno"HeaderText="訂單編號"/><asp:BoundFieldDataField="dOrderTime"HeaderText="下單時間"/><asp:BoundFieldDataField="cCustomername"HeaderText="客戶姓名"/><asp:BoundFieldDataField="cTel"HeaderText="聯(lián)系電話"/><asp:BoundFieldDataField="mTotal"HeaderText="總價"/>
<asp:HyperLinkFieldDataNavigateUrlFields="cOrderNo"DataNavigateUrlFormatString="orderdetail.aspx?orderno={0}"Text="查看詳情"/></Columns></asp:GridView>7.2.3在GridView控件中創(chuàng)建列protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){stringconnstr=WebConfigurationManager.ConnectionStrings["stuConnectionString"].ToString();//從web.config中讀取連接字符串
SqlConnectionconn=newSqlConnection(connstr);//創(chuàng)建連接對象
SqlDataAdaptersda=newSqlDataAdapter(“selecttop1000*fromordersorderbydordertimedesc”,conn);//創(chuàng)建SqlDataAdapter對象,定單按下單時間排序的Select語句,最多返回1000行數(shù)據(jù)
DataSetds=newDataSet();//創(chuàng)建數(shù)據(jù)集
sda.Fill(ds);//填充數(shù)據(jù)集
GridView1.DataSource=ds.Tables[0];GridView1.DataBind();}}例7-6后臺代碼:7.2.3在GridView控件中創(chuàng)建列例7-6運行結(jié)果7.2.3在GridView控件中創(chuàng)建列3.添加ButtonField列【例7-7】數(shù)據(jù)庫中有一個訂單表和訂單細節(jié)表,設(shè)計一個頁面顯示訂單列表,按時間降序排列,在列表中設(shè)計一個“查看詳情”的ButtonField列,通過它可以查看訂單的詳情。在例7-6的基礎(chǔ)上進行修改,在訂單列表頁上添加一個ButtonField列,CommandName屬性設(shè)置為“showdetail”,ButtonType屬性設(shè)置為Image,ImageUrl設(shè)置圖片路徑。在GridView中添加RowCommand事件函數(shù)。7.2.3在GridView控件中創(chuàng)建列RowCommand事件函數(shù)代碼如下:protectedvoidGridView1_RowCommand(objectsender,GridViewCommandEventArgse){stringorderno=GridView1.DataKeys[Convert.ToInt32(e.CommandArgument)].Value.ToString().Trim();//獲取行的DataKeys值,由GridView的DataKeyNames屬性設(shè)置。if(e.CommandName=="showdetail")//如果是查看詳情按鈕{Response.Redirect("orderdetail.aspx?orderno="+orderno);//跳轉(zhuǎn)到查看詳情頁,同時將訂單編號作為參數(shù)用Get方式傳遞}}7.2.3在GridView控件中創(chuàng)建列例7-7運行結(jié)果7.2.3在GridView控件中創(chuàng)建列4.添加CommandField列CommandField用于顯示GridView內(nèi)置的按鈕,包括編輯、更新、刪除或選擇操作。顯示按鈕后,即可通過該按鈕完成相應(yīng)的操作。屬性描述ButtonType設(shè)置按鈕類型。取值為Button、Image或LinkShowEditButton設(shè)置是否顯示編輯按鈕ShowDeleteButton設(shè)置是否顯示刪除掃鈕ShowSelectButton設(shè)置是否顯示選擇按鈕CommandField控件屬性7.2.3在GridView控件中創(chuàng)建列【例7-8】自動添加CommandField列。將服務(wù)器資源管器中的學(xué)生數(shù)據(jù)表拖動到頁面中,從彈出的窗口中將“啟用編輯”和“啟用刪除”選中,調(diào)整列的順序即可。例7-8運行結(jié)果7.2.3在GridView控件中創(chuàng)建列5.添加TemplateField列在TemplateField列中,可以包括大多數(shù)ASP.NET的常用控件和HTML標記,如:DropDownList、CheckBox、RadioButton、TextBox等,當(dāng)在GridView中需要使用這些常用控件時,必須使用TemplateField。TemplateField列聲明的典型格式如下:<asp:TemplateField屬性=”屬性值”><ItemTemplate><center><asp:TextBoxID=”myname”Text=’<%#DataBinder.Eval(Container.DataItem,”stuname”)%>’Runat=”Server”></asp:TextBox></center></ItemTemplate></asp:TemplateField>7.2.3在GridView控件中創(chuàng)建列數(shù)據(jù)源例的綁定形式:Text='<%#DataBinder.Eval(Container.DataItem,"stuname")%>'Text=’<%#Eval(“stuname”)%>’這種形式是單向(只讀)綁定,它是DataBinder.Eval的簡化版,但只能在模板中使用。Text=’<%#Bind(“stuname”)%>’這種形式是雙向(可更新)綁定。7.2.3在GridView控件中創(chuàng)建列【例7-10】將學(xué)生信息顯示在GridView中,并添加一列CheckBox用于行選擇,用TextBox顯示姓名和聯(lián)系電話,用RadioButtonList顯示性別。在界面上添加一個刪除按鈕和更新按鈕,使用戶可以刪除選中的行和更新GridView中的數(shù)據(jù)。7.2.3在GridView控件中創(chuàng)建列GridView添加4個TemplateField列和1個BoundField列,BoundField列用于顯示學(xué)號,4個TemplateField用于顯示CheckBox選擇按鈕、姓名、性別、聯(lián)系電話。點擊GridView右上角的按鈕,從彈出的智能菜單中選擇“編輯模板”,在模板中添加CheckBox、RadioButtonList、TextBox控件7.2.3在GridView控件中創(chuàng)建列<asp:GridViewID="GridView1"runat="server"AutoGenerateColumns="False"DataKeyNames="學(xué)號"EmptyDataText="沒有可顯示的數(shù)據(jù)記錄。"><Columns><asp:TemplateFieldHeaderText="選擇"><ItemTemplate>
<asp:CheckBoxID="CheckBox1"runat="server"AutoPostBack="False"/></ItemTemplate></asp:TemplateField><asp:BoundFieldDataField="學(xué)號"HeaderText="學(xué)號"ReadOnly="True"/><asp:TemplateFieldHeaderText="姓名"><ItemTemplate>
<asp:TextBoxID="T_StuName"runat="server"Text='<%#Eval("姓名")%>'></asp:TextBox></ItemTemplate></asp:TemplateField><asp:TemplateFieldHeaderText="性別"><ItemTemplate>
<asp:RadioButtonListID="RBL_Sex"runat="server"RepeatDirection="Horizontal"SelectedValue='<%#Bind("性別")%>'><asp:ListItem>男</asp:ListItem><asp:ListItem>女</asp:ListItem></asp:RadioButtonList></ItemTemplate></asp:TemplateField><asp:TemplateFieldHeaderText="聯(lián)系電話"><ItemTemplate>
<asp:TextBoxID="T_Tel"runat="server"Text='<%#DataBinder.Eval(Container.DataItem,"聯(lián)系電話")%>'></asp:TextBox></ItemTemplate></asp:TemplateField></Columns></asp:GridView>7.2.3在GridView控件中創(chuàng)建列例7-10后臺代碼要點
foreach(GridViewRowGRinthis.GridView1.Rows){CheckBoxCB=(CheckBox)GR.FindControl(“CheckBox1”);//在GridView的行中尋找名稱為“CheckBox1”的控件,并轉(zhuǎn)換為CheckBox。TextBoxName=(TextBox)GR.FindControl("T_StuName");
//在GridView的行中尋找名稱為T_StuName的控件,并轉(zhuǎn)換為TextBoxRadioButtonListSex=(RadioButtonList)GR.FindControl("RBL_Sex");//在GridView的行中尋找名稱為RBL_Sex的控件,并轉(zhuǎn)換為RadioButtonListGridView1.DataKeys[GR.RowIndex].Value.ToString();//取出GridView中GR.RowIndex行的DataKey值}7.2.3在GridView控件中創(chuàng)建列例7-10運行結(jié)果7.2.4GridView分頁在GridView控件中實現(xiàn)分頁操作,其數(shù)據(jù)源必須使用DataSet,而不能使用DataReader。GridView控件內(nèi)置了對數(shù)據(jù)源記錄進行分頁的功能。要實現(xiàn)分頁功能需要進行如下操作。
(1)將GridView的允許分頁屬性AllowPaging置為True。(2)添加GridView的PageIndexChanged事件處理函數(shù)。
GridView根據(jù)以下三個方面決定在控件中顯示哪些數(shù)據(jù):(1)
GridView的PageSize屬性:每一頁的數(shù)據(jù)條數(shù)。(2)
GridView的PageIndex屬性:當(dāng)前要顯示頁的序號,從0開始。(3)數(shù)據(jù)源的記錄總條數(shù)。
7.2.4GridView分頁【例7-11】使用GridView控件分頁功能進行分頁<asp:GridViewID="GridView1"runat="server"AllowPaging="True"
AutoGenerateColumns="False"DataKeyNames="學(xué)號"EmptyDataText="沒有可顯示的數(shù)據(jù)記錄。"PageSize="5"
onpageindexchanging="GridView1_PageIndexChanging"><Columns><asp:BoundFieldDataField="學(xué)號"HeaderText="學(xué)號"/><asp:BoundFieldDataField="姓名"HeaderText="姓名"/><asp:BoundFieldDataField="性別"HeaderText="性別"/><asp:BoundFieldDataField="出生日期"HeaderText="出生日期"/><asp:BoundFieldDataField="聯(lián)系電話"HeaderText="聯(lián)系電話"/><asp:BoundFieldDataField="班級"HeaderText="班級"/></Columns></asp:GridView>7.2.4GridView分頁7-11后臺代碼:protectedvoidbinddata(){…//訪問數(shù)據(jù)庫
DataSetds=newDataSet();//創(chuàng)建數(shù)據(jù)集
sda.Fill(ds);GridView1.DataSource=ds.Tables[0];GridView1.DataBind();}protectedvoidGridView1_PageIndexChanging(objectsender,GridViewPageEventArgse){
GridView1.PageIndex=e.NewPageIndex;//設(shè)置在GridView中顯示的頁號
binddata();//重新綁定數(shù)據(jù)源
}7.2.4GridView分頁例子7-11運行效果7.2.4GridView分頁【例7-13】分頁讀取數(shù)據(jù)GridView自帶的分頁功能進行分頁,這種方式編程簡單,不用考慮哪一頁是哪些數(shù)據(jù),只需要給出數(shù)據(jù)源、每頁數(shù)據(jù)條數(shù)和要顯示的頁序號即可。但是,這種分頁方式也存著一個嚴重的問題,數(shù)據(jù)源需要給出所有的數(shù)據(jù)記錄,使得大量數(shù)據(jù)被加載到內(nèi)存,嚴重影響服務(wù)器性能。因此,在數(shù)據(jù)源存在大量數(shù)據(jù)的情況下,不要把數(shù)據(jù)全部讀入內(nèi)存,不能使用GridView自帶的分頁功能,應(yīng)該分頁讀入數(shù)據(jù),每次從數(shù)據(jù)庫讀取一頁數(shù)據(jù)7.2.4GridView分頁先創(chuàng)建一個儲存過程,分頁讀取學(xué)生表的數(shù)據(jù),代碼如下:createprocedure[dbo].[GetStuByPage]@pagesizeint,@pageindexintasbegindeclare@indextabletable(idintidentity(1,1),stunonchar(10))--定義表declare@PageLowerBoundint--定義此頁的底碼declare@PageUpperBoundint--定義此頁的頂碼declare@countint--數(shù)據(jù)條數(shù)set@PageLowerBound=(@pageindex-1)*@pagesize//計算底碼set@PageUpperBound=@PageLowerBound+@pagesize//計算頂碼insertinto@indextable(stuno)select學(xué)號from學(xué)生orderby學(xué)號//將數(shù)據(jù)表的主鍵放入內(nèi)存表select*from學(xué)生a,@indextablebwherea.學(xué)號=b.stunoandb.id>@PageLowerBoundandb.id<=@PageUpperBoundorderbyb.id//查詢由pageindex參數(shù)給出的頁的數(shù)據(jù)select@count=count(*)from學(xué)生//查詢記錄總數(shù)return@count//返回記錄總數(shù)end7.2.4GridView分頁把GridView控件添加到頁面上,設(shè)置列,添加分頁標簽7.2.4GridView分頁<asp:GridViewID="GridView1"runat="server"AllowPaging="False"AutoGenerateColumns="False"DataKeyNames="學(xué)號"EmptyDataText="沒有可顯示的數(shù)據(jù)記錄。"><Columns>…</Columns></asp:GridView><asp:LinkButtonID="btnFirst"runat="server"CausesValidation="False"CommandArgument="first"OnClick="PagerButtonClick">首頁</asp:LinkButton><asp:LinkButtonID="btnPrev"runat="server"CausesValidation="False"CommandArgument="prev"OnClick="PagerButtonClick">上一頁</asp:LinkButton><asp:LinkButtonID="btnNext"runat="server"CommandArgument="next"OnClick="PagerButtonClick">下一頁</asp:LinkButton><asp:LinkButtonID="btnLast"runat="server"CausesValidation="False"CommandArgument="last"OnClick="PagerButtonClick">尾頁</asp:LinkButton>前臺頁面代碼:7.2.4GridView分頁
privatevoidbinddata(intpagesize,intpageindex){stringconnstr=WebConfigurationManager.ConnectionStrings["stuConnectionString"].ToString();//從web.config中讀取連接字符串
SqlConnectionconn=newSqlConnection(connstr);//創(chuàng)建連接對象
//按頁讀取數(shù)據(jù)
SqlCommandcmd=newSqlCommand();//創(chuàng)建命令對象
cmd.Connection=conn;//給命令對象設(shè)置連接對象
cmd.CommandText="GetStuByPage";//存儲過程名稱
cmd.CommandType=CommandType.StoredProcedure;//表示CommandText是存儲過程
cmd.Parameters.Add(newSqlParameter("@pagesize",pagesize));//給存儲過程添加參數(shù),每頁大小
cmd.Parameters.Add(newSqlParameter("@pageindex",pageindex));//給存儲過程添加參數(shù),當(dāng)前頁碼,從1開始
SqlParameterreturnvalue=newSqlParameter();//創(chuàng)建一個參數(shù)
returnvalue.Direction=ParameterDirection.ReturnValue;//參數(shù)類型是返回值
returnvalue.DbType=DbType.Int32;//參數(shù)的數(shù)據(jù)類型是Int32cmd.Parameters.Add(returnvalue);//將參數(shù)加入存儲過程7.2.4GridView分頁SqlDataAdaptersda=newSqlDataAdapter();//創(chuàng)建數(shù)據(jù)適配器
sda.SelectCommand=cmd;//給數(shù)據(jù)適配器關(guān)聯(lián)命令對象
DataSetds=newDataSet();//創(chuàng)建數(shù)據(jù)集
sda.Fill(ds);//填充數(shù)據(jù)集
intnum=Convert.ToInt32(returnvalue.Value);//獲取存儲過程的return值
doublea=num/(pagesize*1.0);//計算頁數(shù)
intpages=(int)Math.Ceiling(a);//頁數(shù)取整
GridView1.DataSource=ds.Tables[0].DefaultView;//設(shè)置數(shù)據(jù)源
GridView1.DataBind();//綁定數(shù)據(jù)
//設(shè)置分頁標簽屬性
LblCurrentIndex.Text="第"+pageindex.ToString()+"頁";LblPageCount.Text="共"+pages.ToString()+"頁";LblRecordCount.Text="總共"+num.ToString()+"條";//計算生成分頁頁碼,分別為:"首頁""上一頁""下一頁""尾頁"btnFirst.CommandName="1";btnPrev.CommandName=(pageindex==1?"1":(pageindex-1).ToString());btnNext.CommandName=(pageindex==pages?pages.ToString():(pageindex+1).ToString());btnLast.CommandName=pages.ToString();}7.2.4GridView分頁
protectedvoidPagerButtonClick(objectsender,EventArgse){intindex=Convert.ToInt32(((LinkButton)sender).CommandName);
binddata(2,index);//綁定數(shù)據(jù),每頁2行,顯示index指示的頁。
}7.2.4GridView分頁分頁運行結(jié)果7.2.5GridView排序在GridView控件中,可以通過點擊列標題對數(shù)據(jù)進行排序,可以允許所有列的排序,或只按特定列排序。要實現(xiàn)排序,需要把AllowSorting屬性設(shè)置為True,并在要排序的列上設(shè)置SortExpression屬性,然后添加Sorting事件處理函數(shù)。7.2.5GridView排序【例7-14】使用GridView控件顯示學(xué)生的信息,可以按學(xué)號、出生日期、班級進行排序。<asp:GridViewID="GridView1"runat="server"AutoGenerateColumns="False"DataKeyNames="學(xué)號"EmptyDataText="沒有可顯示的數(shù)據(jù)記錄。"AllowSorting="True"
onsorting="GridView1_Sorting"><Columns><asp:BoundFieldDataField="學(xué)號"HeaderText="學(xué)號"ReadOnly="True"SortExpression="學(xué)號"/>……<asp:BoundFieldDataField="班級"HeaderText="班級"SortExpression="班級"/></Columns></asp:GridView>7.2.5GridView排序protectedvoidGridView1_Sorting(objectsender,GridViewSortEventArgse){if(ViewState["sortDirection"]!=null)//排序方向,不能用一個普通的成員變量記錄,因為普通變量的值當(dāng)頁面回傳后將被置0。
{if(ViewState["sortDirection"].ToString().Trim()=="asc")//如果為升序
{ViewState["sortDirection"]="desc";//降序
}else{ViewState["sortDirection"]="asc";//升序
}}else{ViewState["sortDirection"]="asc";//第1次排序為升序
}
7.2.5GridView排序stringconnstr=WebConfigurationManager.ConnectionStrings["stuConnectionString"].ToString();//從web.config中讀取連接字符串
SqlConnectionconn=newSqlConnection(connstr);//創(chuàng)建連接對象
SqlDataAdaptersda=newSqlDataAdapter("select*from學(xué)生orderby"+e.SortExpression+""+ViewState["sortDirection"].ToString(),conn);//創(chuàng)建SqlDataAdapter對象,查詢語句中對指定列指定排序方向進行排序
DataSetds=newDataSet();//創(chuàng)建數(shù)據(jù)集
sda.Fill(ds);GridView1.DataSource=ds.Tables[0];GridView1.DataBind();}代碼中通過ViewState記錄排序方向,當(dāng)?shù)谝淮吸c擊列標題時可能是升序,當(dāng)?shù)诙吸c擊同一個列標題時需要降序,再次點擊又需要升序。點擊了哪一個列標題通過事件函數(shù)的參數(shù)e.SortExpression獲取。排序是通過SQL語句的orderby子句實現(xiàn)的。7.3Repeater控件Repeater控件是一個數(shù)據(jù)顯示控件,通常重復(fù)某些HTML標記來顯示數(shù)據(jù)庫的記錄。它需要綁定數(shù)據(jù)源才能顯示數(shù)據(jù)?!纠?-15】使用Repeater控件以表格形式顯示學(xué)生表的學(xué)號和姓名。7.3Repeater控件<asp:RepeaterID="Repeater1"runat="server"><HeaderTemplate><tableborder="1"><tr><th>學(xué)號</th><th>姓名</th><th>操作</th></tr></HeaderTemplate><ItemTemplate><tr><td><%#DataBinder.Eval(Container.DataItem,"學(xué)號")%></td><td><%#DataBinder.Eval(Container.DataItem,"姓名")%></td><td><asp:ButtonID="Button1"runat="server"Text="詳情"CommandName='<%#DataBinder.Eval(Container.DataItem,"學(xué)號")%>'OnClick="Button1_Click"/></td></tr></ItemTemplate>
7.3Repeater控件<AlternatingItemTemplate><trbgcolor="#77DDDD"><td><%#DataBinder.Eval(Container.DataItem,"學(xué)號")%></td><td><%#DataBinder.Eval(Container.DataItem,"姓名")%></td><td><asp:ButtonID="Button1"runat="server"Text="詳情"CommandName='<%#DataBinder.Eval(Container.DataItem,"學(xué)號")%>'OnClick="Button1_Click"/></td></tr></AlternatingItemTemplate><FooterTemplate></table></FooterTemplate></asp:Repeater>7.3Repeater控件例7-15運行結(jié)果7.4DataList控件DataList控件可以在表格中或者自定義模板中顯示綁定的數(shù)據(jù),與GridView有些類似,但顯示風(fēng)格是不同的,可以在一行中重復(fù)顯示多條記錄的數(shù)據(jù)。【例7-16】已知圖書表Book的數(shù)據(jù)如圖7-27所示,使用DataList顯示每本圖書的圖書名稱、價格、圖片。圖中picpath列為圖片的存儲路徑,使用絕對路徑,圖片存儲在網(wǎng)站的bookimg目錄下7.4DataList控件<asp:DataListID="DataList1"runat="server"DataKeyField="bookid"ForeColor="#333333"RepeatColumns="4"RepeatDirection="Horizontal"Width="100%"><ItemTemplate><div><p><ahref="/showbook.aspx?bookid=<%#Eval("bookid")%>"><imgsrc="<%#DataBinder.Eval(Container.DataItem,"picpath").ToString()%>"width="80"height="100"/></a></p><p><b><%#DataBinder.Eval(Container.DataItem,"bookname")%></b></p><p><span>價格:¥<%#DataBinder.Eval(Container.DataItem,"price","{0:f}").ToString()%></span></p></div></ItemTemplate></asp:DataList>7.4DataList控件
protectedvoidPage_Load(objectsender,EventArgse){if(!IsPostBack){stringconnstr=WebConfigurationManager.ConnectionStrings["stuConnectionString"].ToString();//從web.config中讀取連接字符串
SqlConnectionconn=newSqlConnection(connstr);//創(chuàng)建連接對象
SqlDataAdaptersda=newSqlDataAdapter("select*frombook",conn);//創(chuàng)建SqlDataAdapter對象
DataSetds=newDataSet();//創(chuàng)建數(shù)據(jù)集
sda.Fill(ds);DataList1.DataSource=ds.Tables[0];//設(shè)置DataList控件的數(shù)據(jù)源
DataList1.DataBind();//綁定數(shù)據(jù)源
}}
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 品牌連鎖加盟合同范例
- 2025渣土運輸合同書
- 冰糕供貨合同范例
- 電影演員合同范例
- 炸雞加盟合同范例
- 員工簽工作合同范例
- 銅仁學(xué)院《動態(tài)網(wǎng)頁設(shè)計》2023-2024學(xué)年第一學(xué)期期末試卷
- 銅陵職業(yè)技術(shù)學(xué)院《土壤地理學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 銅陵職業(yè)技術(shù)學(xué)院《管理溝通(雙語)》2023-2024學(xué)年第一學(xué)期期末試卷
- 完整版100以內(nèi)加減法混合運算4000道111
- 新型半導(dǎo)體材料與器件的創(chuàng)新研究
- 【恰恰食品企業(yè)營運能力存在的問題及優(yōu)化建議分析10000字(論文)】
- 【語文】青島市小學(xué)一年級上冊期末試卷(含答案)
- 【學(xué)生課件】《青少年網(wǎng)絡(luò)安全》班會幻燈片
- 滄源永弄華能100MW茶光互補光伏發(fā)電項目環(huán)評報告
- 紅色澳門回歸紀念日PPT模板課件
- 2024屆天津市河?xùn)|區(qū)名校七年級數(shù)學(xué)第一學(xué)期期末統(tǒng)考試題含解析
- 股骨Hoffa骨折的手術(shù)入路及手術(shù)技巧課件
- 倉儲業(yè)行業(yè)SWOT分析
- 縣委書記在縣委審計委員會全體會議上的講話
- 2023年版:中國重癥肌無力診斷和治療指南(全文版)
評論
0/150
提交評論