RepeatDirection:項的布局方向。
RepeatColumns:該布局的列的數目,默認為0.即不限制。
使用 DataList 控件顯示模板定義的數據綁定列表。DataList 控件支持選擇和編輯。 DataList 控件的內容可以通過使用模板操控。下表列出了支持的模板。
ItemTemplate為默認模版,如果綁定了數據,則在該模版中編輯顯示項目。
| 模板名稱 |
說明 |
|---|---|
| AlternatingItemTemplate |
如果已定義,則為 DataList 中的交替項提供內容和布局。如果未定義,則使用 ItemTemplate。 |
| EditItemTemplate |
如果已定義,則為 DataList 中當前編輯的項提供內容和布局。如果未定義,則使用 ItemTemplate。 |
| FooterTemplate |
如果已定義,則為 DataList 的腳注部分提供內容和布局。如果未定義,將不顯示腳注部分。 |
| HeaderTemplate |
如果已定義,則為 DataList 的頁眉節提供內容和布局。如果未定義,將不顯示頁眉節。 |
| ItemTemplate |
為 DataList 中的項提供內容和布局所要求的模板。 |
| SelectedItemTemplate |
如果已定義,則為 DataList 中當前選定項提供內容和布局。如果未定義,則使用 ItemTemplate。 |
| SeparatorTemplate |
如果已定義,則為 DataList 中各項之間的分隔符提供內容和布局。如果未定義,將不顯示分隔符。 |
- 分頁顯示DataList控件中的數據
該分頁代碼頁適用於Repeater控件等其他數據類控件。頁面源代碼添加一個DataList控件(DataList1),在頁腳模版中添加翻頁控制相關按鈕。
<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>
頁 當前為第
<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綁定數據庫
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();
//初始化一個PagedDataSource,允許控件分頁
pds.DataSource = myDs.Tables[0].DefaultView;
//將上面的ds轉換成標准數據視圖
pds.AllowPaging = true;
//允許分頁
pds.PageSize = 5;
//每頁大小為5
pds.CurrentPageIndex = Convert.ToInt32(Request.QueryString["page"]);
//設置當前頁
return pds;
//將處理完畢的pds對象發出去
}
protected void DataList1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (Request.QueryString["name"] == null)
{
if (e.Item.ItemType == ListItemType.Footer)
{//判斷當前項是頁腳模板
int n = pds().PageCount;//將分頁總數賦給變量n
int i = pds().CurrentPageIndex;//將當前分頁碼賦給i
Label lblpc = (Label)e.Item.FindControl("lblpc");
lblpc.Text = n.ToString();
//找到lblpc這個Label,將總頁碼賦給他
Label lblp = (Label)e.Item.FindControl("lblp");
lblp.Text = Convert.ToString(pds().CurrentPageIndex + 1);
//找到lblp這個Label,將當前頁碼賦給他,但是注意,因為頁碼從0開始,這里要直觀的話就得加1
HyperLink hlfir = (HyperLink)e.Item.FindControl("hlfir");
//這里調整為自己網頁需要到的連接
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");
//找到表示上頁和下頁這兩個控件
if (i <= 0)
{//如果當前頁已經是第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)
{//如果當前項已經是最末頁
hln.Enabled = false;
hlla.Enabled = false;
hlp.Enabled = true;
}
else
{
hln.NavigateUrl = "?Type=" + Server.UrlEncode(Request.QueryString["Type"]) + "&page=" + Convert.ToInt32(i + 1);
}
}
}
}
顯示、編輯、更新數據
在DataList模版中添加LinkButton控件,並為其綁定數據,設置CommandName屬性和Click事件來實現對數據的顯示、編輯、更新、取消。在DataList中CommandName接受默認值為:Edit、Delete、Update、Cancel。如果值不為上述4種,則在ItemCommand中自行定義。
在頁面源代碼中添加DataList控件(DataList1),設置了ItemTemplate、EditItemTemplate、SelectedItemTemplate三種模版,分別對應默認顯示模版,編輯模版和選擇模版。
<asp:DataList ID="DataList1" runat="server" DataKeyField="Id" DataSourceID="AccessDataSource1"
OnItemCommand="DataList1_ItemCommand" OnCancelCommand="DataList1_CancelCommand"
OnUpdateCommand="DataList1_UpdateCommand" OnEditCommand="DataList1_EditCommand">
<EditItemTemplate>
//用於錄入name字段的值;點擊Button_up,完成修改;點擊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>
//顯示選中行的詳細信息
Id:
<asp:Label ID="IdLabel" runat="server" Text='<%# Eval("Id") %>' />
<br />
Name:
<asp:Label ID="NameLabel" runat="server" Text='<%# Eval("Name") %>' />
<br />
</SelectedItemTemplate>
<ItemTemplate>
//默認顯示數據庫中id字段值,點擊LinkButton_se,顯示詳細信息SelectedItemTemplate模版,進入;點擊Button_ed,進入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)
{
//取得編輯行的關鍵字段的值
string id = DataList1.DataKeys[e.Item.ItemIndex].ToString();
//取得文本框中輸入的內容
string name = ((TextBox)e.Item.FindControl("TextBox_name")).Text;
//更新數據庫
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();
//取消編輯狀態
DataList1.SelectedIndex = -1;
DataList1.DataBind();
}
protected void DataList1_EditCommand(object source, DataListCommandEventArgs e)
{
DataList1.SelectedIndex = e.Item.ItemIndex;
DataList1.DataBind();
}

