ASP.NET中DataList控件模板属性说明及各功能实现效果介绍(2)
3、使用方法
首先,创建一个页面,把DataList控件拖到表单中。
<asp:Label ID="TitleLabel" runat="server" Text='<%# Eval("Title") %>' />
4、实现DataList控件的编辑功能
DataList控件没有内置编辑等功能,如果要实现编辑,我们需要自己编写代码控制,为了实现编辑功能,我们要在页面中使用编辑模板。
首先,设置编辑按钮的属性,可以设置“编辑”按钮的“CommandName”属性设置为“edit”,然后就可以DataList控件的EditCommand事件。双击EditCommand事件,在生成的事件代码中编写代码如下:
protected void DataList1_EditCommand(object source, DataListCommandEventArgs e)
{
DataList1.EditItemIndex = e.Item.ItemIndex;
DataBind();
}
修改和取消的思路与编辑按钮的思路完全一致:分别为修改和取消的按钮对应的CommandName属性设置为:update和Cancel,然后编写UpdateCommand事件和CancelCommand事件的对应的事件代码。
取消的操作代码:
protected void DataList1_CancelCommand(object source, DataListCommandEventArgs e)
{
DataList1.EditItemIndex = -1;
DataBind();
}
更新的操作代码:
protected void DataList1_UpdateCommand(object source, DataListCommandEventArgs e)
{
//从选中记录中获取各更新参数的值
SqlDataSource1.UpdateParameters["ID"].DefaultValue = ((TextBox)e.Item.FindControl("TextBox1")).Text;
SqlDataSource1.UpdateParameters["Title"].DefaultValue = ((TextBox)e.Item.FindControl("TextBox2")).Text;
SqlDataSource1.UpdateParameters["Price"].DefaultValue = ((TextBox)e.Item.FindControl("TextBox3")).Text;
SqlDataSource1.UpdateParameters["Images"].DefaultValue = ((TextBox)e.Item.FindControl("TextBox4")).Text;
//提交更新
SqlDataSource1.Update();
//设置到浏览状态
DataList1.EditItemIndex = -1;
//重新绑定
DataBind();
}
5、DataList控件的分页
DataList控件没有内置分页和排序的功能,需要编写代码手工实现。
分页一般需要以下条件:
(1)、每页显示记录数(PageSize)
(2)、总记录数(Count)
(3)、总页数
(4)、当前页
基于PagedDataSource类的分页,常见属性:
CurrentPageIndex当前页;
PageCount总页数;
Count总记录数;
PageSize每页记录数;
DataSource 数据源;
AllowPaging控件是否实现自动分页功能。
只要将数据源和当前页数赋值给PagedDataSource类的实例对象,其它属性(总记录数和总页数)可以自动计算得出。
编写绑定的方法如下:
private void Databind()
{
PagedDataSource pds = new PagedDataSource();
pds.DataSource = Product.GetProducts(); //获得记录集的方法
pds.AllowPaging = true; //允许分页
pds.PageSize = 4; //页大小
pds.CurrentPageIndex = Page; //当前页
Label1.Text = "第" + (pds.CurrentPageIndex + 1).ToString() + "页共" + pds.PageCount.ToString() + "页";
DataList1.DataSource = pds;
DataList1.DataBind();
}

