ListView控件
实验目的:
掌握ListView控件的使用
实验内容:
1.创建数据表:在itcast数据库中创建一个Book数据表并设计好数据字段(如下图)
为方便功能的测试,在数据表中添加一些测试数据
2.添加表实体类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Lesson3
{
public class BookModel
{
public int ID{get; set;} //主键ID
public string BookNum{get; set; }//编号
public string BookName{get; set;}//书名
public string BookConcern{get; set; }//出版社
public string BookAuthor{ get; set; }//作者
public int BookCount{set; get; }//数量
public decimal BookPrice{get; set; } //价格
}
- 定义查询数据方法
在项目中创建一个名为BookAction.cs类,添加SqlHelper.cs工具类,在BookAction类中定义一个Getbooks()方法实现获取数据功能。代码如下
public List<BookModel> GetBooks(int maximumRows, int startRowIndex)
{
string sql = "select top(@maximumRows)* from Book where Id not in (select top(@startRowIndex) Id from Book)";
SqlParameter[] pams ={
new SqlParameter("@maximumRows",maximumRows),
new SqlParameter("@startRowIndex",startRowIndex)
};
List<BookModel> bookList = null;
using (SqlDataReader reader = SqlHelper.ExecuteReader(sql,pams))
{
//判断是否查询到数据
if (reader.HasRows)
{
bookList = new List<BookModel>();
//将数据封装到对象中
while (reader.Read())
{
BookModel book = new BookModel();
book.ID = reader.GetInt32(0);
book.BookNum = reader.GetString(1);
book.BookName = reader.GetString(2);
book.BookConcern = reader.GetString(3);
book.BookAuthor = reader.GetString(4);
book.BookCount = reader.GetInt32(5);
book.BookPrice = reader.GetDecimal(6);
bookList.Add(book);
}
}
}
//返回集合
return bookList;
}
- 实现添加数据方法
在BookAction类中定义一个Insertbook()方法实现插入数据功能。代码如下
public int InsertBook(BookModel book)
{
string sql = "insert into Book values(@BookNum,@BookName,@BookConcern,@BookAuthor,@BookCount,@BookPrice)";
//参数
SqlParameter[] paras = new SqlParameter[]{
new SqlParameter("@BookNum",book.BookNum),
new SqlParameter("@BookName",book.BookName),
new SqlParameter("@BookConcern",book.BookConcern),
new SqlParameter("@BookAuthor",book.BookAuthor),
new SqlParameter("@BookCount", book.BookCount),
new SqlParameter("@BookPrice",book.BookPrice),
};
int count = SqlHelper.ExecuteNonQuery(sql, paras);
return count;
}
- 实现删除数据方法
在BookAction类中定义一个Delete()方法实现删除数据功能。代码如下
//删除数据
public int Delete(BookModel book)
{
string sql = "delete Book where Id=@Id";
//参数
SqlParameter pam = new SqlParameter("@Id", book.ID);
//执行命令
int count= SqlHelper.ExecuteNonQuery(sql, pam);
return count;
}
- 定义修改数据方法
在BookAction类中定义一个UpdateBook()方法实现修改数据功能。代码如下
//修改数据
public int UpdateBook(BookModel book)
{
string sql = "update Book set BookNum=@BookNum, BookName=@BookName,BookConcern=@BookConcern,BookAuthor=@BookAuthor,BookCount=@BookCount,BookPrice=@BookPrice where ID=@ID";
//Sql语句中的参数
SqlParameter[] paras = new SqlParameter[]{
new SqlParameter("@ID",book.ID),
new SqlParameter("@BookNum",book.BookNum),
new SqlParameter("@BookName",book.BookName),
new SqlParameter("@BookConcern",book.BookConcern),
new SqlParameter("@BookAuthor",book.BookAuthor),
new SqlParameter("@BookCount", book.BookCount),
new SqlParameter("@BookPrice",book.BookPrice),
};
int count = SqlHelper.ExecuteNonQuery(sql, paras);
return count;
}
- 添加ListView控件
7.1在项目中添加一个名为ListView.aspx的Web窗体页面,从工具箱中找到【数据】分类拖拽一个ListView控件到页面上
7.2新建数据源
在ListView.aspx中单击箭头按钮,在弹出的任务框中单击【选择数据源】的下拉按钮,选中【新建数据项】
7.3选择数据源类型、业务对象
在弹出的对话框中选择【对象】,在【选择业务对象】下拉列表中选中【Lesson3.BookAction】
7.4选择查询、修改、添加、删除方法
在配置数据源对话框中选中【SELECT】,在方法中选择【GetBooks()】方法、选中【UPDATE】,在方法中选择【UpdateBooks()】方法、选中【INSERT】,在方法中选择【InsertBooks()】方法、选中【DELETE】,在方法中选择【Delete()】方法。下图为上述所有过程以及效果图
- 配置ListView控件样式
8.1设置布局和样式并启用增删改查功能,因为ID列不需要显示到ListView界面,但是在进行增删改查操作时需要使用到ID属性,所以直接将ID表头注释,并在ListView控件的属性面板找到DataKeyNames属性并将值设置为ID,具体实现如下
<%-- <th runat="server">ID</th>--%>
<th runat="server">书号</th>
<th runat="server">书名</th>
<th runat="server">出版社</th>
<th runat="server">作者</th>
<th runat="server">数量</th>
<th runat="server">价格</th>
</tr>
8.2注释完ID表头后,还需要注释所有显示ID列数据的标签代码,注释完成后控件就不会显示ID列数据了,效果如图
- 添加分页控件
9.1使用DataPager分页控件,设置PageControlID属性为ListView控件的ID属性,PageSiza属性设置为4表述默认每页显示4条数据,在BookAction类中定义一个TotalCount()方法用于返回Book表中所有数据的条数。代码如下
public int TotalCount()
{
string sql = "select count(*) from Book";
int count = Convert.ToInt32(SqlHelper.ExecuteScalar(sql));
return count;
}
9.2将ObjectDataSource控件的EnablePaging属性设置为True表示支持分页,将SelectCountMethod属性设置为BookAction类中TotalCount()方法用于计算总共有多少页数据,为了提高数据显示效率,注释ObjectDataSource控件下SelectParameters标签中的代码,最终效果如下图
10、测试项目功能
10.1分页展示:将ListView.aspx页面设置为起始页,可以看出每一页只显示四条数据,当单击【下一页】按钮后,效果如图
10.2插入数据:添加书名号为20101429、名字为ASP.NET图书信息,如图插入成功
10.3修改数据:将C#的数量修改为888,如图修改成功
10.4删除数据,将.NET就业实战删除,如图所示删除成功
11、总结
1、熟悉掌握使用ListView控件,能够使用控件设置数据源
2、了解掌握SelectItemTemplate是为选中项指定显示内容、EditItemTemplate是为编辑项指定要显示的内容,
3、掌握DataPager控件,实现自动完成分页功能,这个控件可以为数据源中的数据生成页码,使用ObjectDataSource控件,设置增删改查的方法。
4、总体实现了一个图书信息列表的功能,掌握ListView控件的增删改查功能以及分页功能。