主要屬性: RepeatDirection:項(xiàng)的布局方向。 RepeatColumns:該布局的列的數(shù)目,,默認(rèn)為0.即不限制,。 使用 DataList 控件顯示模板定義的數(shù)據(jù)綁定列表,。DataList 控件支持選擇和編輯,。 DataList 控件的內(nèi)容可以通過使用模板操控。下表列出了支持的模板,。 ItemTemplate為默認(rèn)模版,如果綁定了數(shù)據(jù),,則在該模版中編輯顯示項(xiàng)目,。
該分頁代碼頁適用于Repeater控件等其他數(shù)據(jù)類控件。頁面源代碼添加一個(gè)DataList控件(DataList1),,在頁腳模版中添加翻頁控制相關(guān)按鈕,。 <FooterTemplate> <%--頁腳模板--%> <table border="0" cellpadding="0" cellspacing="0" style="width: 580px"> <tr> <td colspan="2" style="font-size: 12px;"> <hr /> 共 <asp:Label ID="lblpc" runat="server" Text="Label"></asp:Label> 頁 當(dāng)前為第 <asp:Label ID="lblp" runat="server" Text="Label"></asp:Label> 頁 <asp:HyperLink ID="hlfir" runat="server" Text="首頁"></asp:HyperLink> <asp:HyperLink ID="hlp" runat="server" Text="上一頁"></asp:HyperLink> <asp:HyperLink ID="hln" runat="server" Text="下一頁"></asp:HyperLink> <asp:HyperLink ID="hlla" runat="server" Text="末頁"></asp:HyperLink> </td> </tr> </table> </FooterTemplate> cs代碼: private PagedDataSource pds() { //此處為GridView1綁定數(shù)據(jù)庫 SqlConnection myConn = GetConnection(); myConn.Open(); string sqlStr = "select * from test"; SqlDataAdapter myDa = new SqlDataAdapter(sqlStr, myConn); DataSet myDs = new DataSet(); myDa.Fill(myDs); PagedDataSource pds = new PagedDataSource(); //初始化一個(gè)PagedDataSource,允許控件分頁 pds.DataSource = myDs.Tables[0].DefaultView; //將上面的ds轉(zhuǎn)換成標(biāo)準(zhǔn)數(shù)據(jù)視圖 pds.AllowPaging = true; //允許分頁 pds.PageSize = 5; //每頁大小為5 pds.CurrentPageIndex = Convert.ToInt32(Request.QueryString["page"]); //設(shè)置當(dāng)前頁 return pds; //將處理完畢的pds對(duì)象發(fā)出去 } protected void DataList1_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (Request.QueryString["name"] == null) { if (e.Item.ItemType == ListItemType.Footer) {//判斷當(dāng)前項(xiàng)是頁腳模板 int n = pds().PageCount;//將分頁總數(shù)賦給變量n int i = pds().CurrentPageIndex;//將當(dāng)前分頁碼賦給i Label lblpc = (Label)e.Item.FindControl("lblpc"); lblpc.Text = n.ToString(); //找到lblpc這個(gè)Label,,將總頁碼賦給他 Label lblp = (Label)e.Item.FindControl("lblp"); lblp.Text = Convert.ToString(pds().CurrentPageIndex + 1); //找到lblp這個(gè)Label,,將當(dāng)前頁碼賦給他,但是注意,,因?yàn)轫摯a從0開始,,這里要直觀的話就得加1 HyperLink hlfir = (HyperLink)e.Item.FindControl("hlfir"); //這里調(diào)整為自己網(wǎng)頁需要到的連接 hlfir.NavigateUrl = "?Type=" + Server.UrlEncode(Request.QueryString["Type"]) + "&page=0"; HyperLink hlla = (HyperLink)e.Item.FindControl("hlla"); hlla.NavigateUrl = "?Type=" + Server.UrlEncode(Request.QueryString["Type"]) + "&page=" + Convert.ToInt32(n - 1); //找到表示最前頁和末頁的Label,為他們的NavigateUrl屬性賦為第0頁和最大頁碼減1 HyperLink hlp = (HyperLink)e.Item.FindControl("hlp"); HyperLink hln = (HyperLink)e.Item.FindControl("hln"); //找到表示上頁和下頁這兩個(gè)控件 if (i <= 0) {//如果當(dāng)前頁已經(jīng)是第0頁 hlp.Enabled = false; hlfir.Enabled = false; hln.Enabled = true; } else { hlp.NavigateUrl = "?Type=" + Server.UrlEncode(Request.QueryString["Type"]) + "&page=" + Convert.ToInt32(i - 1); } if (i > n - 2) {//如果當(dāng)前項(xiàng)已經(jīng)是最末頁 hln.Enabled = false; hlla.Enabled = false; hlp.Enabled = true; } else { hln.NavigateUrl = "?Type=" + Server.UrlEncode(Request.QueryString["Type"]) + "&page=" + Convert.ToInt32(i + 1); } } } } 顯示,、編輯,、更新數(shù)據(jù) 在DataList模版中添加LinkButton控件,并為其綁定數(shù)據(jù),設(shè)置CommandName屬性和Click事件來實(shí)現(xiàn)對(duì)數(shù)據(jù)的顯示,、編輯,、更新、取消,。在DataList中CommandName接受默認(rèn)值為:Edit,、Delete、Update,、Cancel,。如果值不為上述4種,則在ItemCommand中自行定義,。 <asp:DataList ID="DataList1" runat="server" DataKeyField="Id" DataSourceID="AccessDataSource1" OnItemCommand="DataList1_ItemCommand" OnCancelCommand="DataList1_CancelCommand" OnUpdateCommand="DataList1_UpdateCommand" OnEditCommand="DataList1_EditCommand"> <EditItemTemplate> //用于錄入name字段的值,;點(diǎn)擊Button_up,完成修改,;點(diǎn)擊Button_ca,,退出EditItemTemplate模版,回到ItemTemplate模版,。 <asp:TextBox ID="TextBox_name" runat="server"></asp:TextBox> <asp:Button ID="Button_up" runat="server" CommandName="update" Text="更新" /> <asp:Button ID="Button_ca" runat="server" CommandName="cancel" Text="取消" /> </EditItemTemplate> <SelectedItemTemplate> //顯示選中行的詳細(xì)信息 Id: <asp:Label ID="IdLabel" runat="server" Text='<%# Eval("Id") %>' /> <br /> Name: <asp:Label ID="NameLabel" runat="server" Text='<%# Eval("Name") %>' /> <br /> </SelectedItemTemplate> <ItemTemplate> //默認(rèn)顯示數(shù)據(jù)庫中id字段值,,點(diǎn)擊LinkButton_se,,顯示詳細(xì)信息SelectedItemTemplate模版,,進(jìn)入;點(diǎn)擊Button_ed,,進(jìn)入EditItemTemplate模版,。 Id: <asp:LinkButton ID="LinkButton_se" runat="server" CommandName="select" Text='<%# Eval("Id") %>' OnClick="LinkButton2_Click"> </asp:LinkButton><asp:Button ID="Button_ed" runat="server" CommandName="edit" Text="編輯" /> </ItemTemplate> </asp:DataList> cs代碼: protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e) { if (e.CommandName == "select") { DataList1.SelectedIndex = e.Item.ItemIndex; DataList1.DataBind(); } } protected void DataList1_CancelCommand(object source, DataListCommandEventArgs e) { DataList1.SelectedIndex = -1; DataList1.DataBind(); } protected void DataList1_UpdateCommand(object source, DataListCommandEventArgs e) { //取得編輯行的關(guān)鍵字段的值 string id = DataList1.DataKeys[e.Item.ItemIndex].ToString(); //取得文本框中輸入的內(nèi)容 string name = ((TextBox)e.Item.FindControl("TextBox_name")).Text; //更新數(shù)據(jù)庫 string sql = "update test set name='" + name + "'"; string myStr = ConfigurationManager.AppSettings["ConnectionString"].ToString(); SqlConnection myConn = new SqlConnection(myStr); myConn.Open(); string sqlStr = "select * from test"; SqlCommand myCmd = new SqlCommand(sqlStr, myConn); myCmd.ExecuteNonQuery(); myCmd.Dispose(); myConn.Close(); //取消編輯狀態(tài) DataList1.SelectedIndex = -1; DataList1.DataBind(); } protected void DataList1_EditCommand(object source, DataListCommandEventArgs e) { DataList1.SelectedIndex = e.Item.ItemIndex; DataList1.DataBind(); } |
|