课程5上课日志2
课程5 WebForm控件更便捷地创建页面上课日志2实例:通过Repeater数据绑定控件来实现信息列表展示页,并实现增、删、查、改操作及分页等功能(简称实例5-2)一、Repeater控件基本知识及为实例5-2添加实体模型类1、情景导入在实际开发中,经常需要将数据库中的数据以列表形式展示出来,当页面上的数据较多时,通过拼接HTML字符串的方式来实现非常复杂,因此为了提高开发效率,ASP.NET中提供了数据绑定控件,诸如GridView、DataList、Repeater、ListView等,这些控件都可以快速实现数据列表的展示功能。本课程先讲Repeater控件,因为Repeater只提供了基本的数据绑定模板,没有内置其它分页等功能,所以它是最原始的数据绑定控件,小巧灵活,只要能够熟练运用Repeater控件其它的绑定控件也就很简单了(Repeater控件是不能通过可视化编辑模板的,而DataList、GridView等控件可以)。2、Repeater控件模板模板标签描 述ItemTemplate用来完成对列表内容和布局的设置(唯一必选模板)AlternatingItemTemplate用于设置交替显示的布局风格和内容,奇数行用ItemTemplate模板样式,偶数行用AlternatingItemTemplate模板样式(需要绑定数据与ItemTemplate模板一样)SeparatorTemplate当定义该模板时,在交替项之间将出现分隔符,分隔符一般有<hr/>、-,一般用了此模板表格就不设置border属性了HeaderTemplate用于设置表头布局和内容FooterTemplate用于设置表尾布局和内容3、为实例5-2添加实体模型类public class StudentModel public int IDget;set; public string StuNumget;set; public string StuNameget;set; public string StuClassget;set; public string Subjectget;set; public int? StuAge get; set; public string StuPhoneget;set; public string StuGenderget;set; 二、为实例5-2定义获取指定页码和条数的数据方法及设置Repeater模板1、添加(复制)工具类SqlHelper.cs<connectionStrings> <add name="connectionStr" connectionString="server=.;uid=sa;pwd=123456;database=itcast"/> </connectionStrings>2、添加StudentAction.cs类封装对Student表操作在其中定义GetStudents方法用于获取指定页码和条数的数据public List<StudentModel> GetStudents(int pageIndex, int pageSize, out int total) string sql = "select count(*) from Student" total = (int)SqlHelper.ExecuteScalar(sql);/可以修改SqlHelper的命名空间为Lesson2 if (pageIndex > 1 && total <= (pageIndex - 1) * pageSize)/说明指定的页码PageIndex超出总页数范围 pageIndex -= 1;/不存在pageIndex,取pageIndex前一页数据 /获取前pageIndex-1页的总条数 int count=pageSize*(pageIndex-1); /查询ID不在前pageIndex-1页中的前pageSize条数据 sql="select top(pageSize) * from Student where Id not in (select top(count) Id from Student)" SqlParameter pams= new SqlParameter("pageSize",pageSize), new SqlParameter("count",count) ; List<StudentModel> studentList=null; using(SqlDataReader reader=SqlHelper.ExecuteReader(sql,pams) if(reader.HasRows) studentList=new List<StudentModel>(); while(reader.Read() StudentModel student=new StudentModel(); student.ID=reader.GetInt32(0); student.StuNum=reader.GetString(1); student.StuName=reader.GetString(2); student.StuClass=reader.GetString(3); student.Subject=reader.GetString(4); student.StuAge=Convert.IsDBNull(reader5)?null:(int?)reader.GetInt32(5); student.StuPhone=Convert.IsDBNull(reader6)?null:reader.GetString(6); student.StuGender=Convert.IsDBNull(reader7)?null:reader.GetString(7); studentList.Add(student); return studentList; 3、设置Repeater控件模板<asp:Repeater ID=" repeater " runat="server"> <HeaderTemplate> <table id="studentTable"> <tr> <th>编号</th><th>学号</th><th>姓名</th><th>班级</th><th>学科</th><th>年龄</th><th>电话</th><th>性别</th><th>操作</th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%# Container.ItemIndex+1 %></td> /此为实现自动编号 <td><%# Eval("StuNum") %></td> <td><%# Eval("StuName") %></td> <td><%# Eval("StuClass") %></td> <td><%# Eval("subject") %></td> <td><%# Eval("StuAge") %></td> <td><%# Eval("StuPhone") %></td> <td><%# Eval("StuGender") %></td> <td> <asp:LinkButton ID="btnEdit" commandArgument=<%#Eval("ID") %> CommandName="Update" Text="修改" runat="server"></asp:LinkButton> <asp:LinkButton ID="btnDelete" OnClientClick="return confirm(是要真的删除吗?)" commandArgument=<%#Eval("ID") %> CommandName="Delete" Text="删除" runat="server"></asp:LinkButton> </td> </tr> </ItemTemplate> <FooterTemplate></table></FooterTemplate> </asp:Repeater><div style="margin-left:30px; border-left:1px solid white; padding-top:5px;padding-bottom:5px; "> <asp:Literal ID="NavStrHtml" runat="server"></asp:Literal> </div>说明:Eval