1.ASPNET页面的组成
  1)HTML标签,用来作为页面布局如div,table等 服务器不会编译,直接输出。
    不能写服务端事件,有服务器属性不能写,只能写html的属性与客户端的js事件。
   
  2)服务器控件,<asp:控件名 runat="server">  服务器编译成对应的html.可以通过
    设置属性,可以写服务器事件来完成功能。html的属性和js事件是没有提示的。
    如果要写html的属性需要使用 控件名.Attribuets.Add("属性名","值")
    或者强制写
    按钮的onclick不能强制写。使用OnClientClick代表是客户端的单击事件
2.网上书店业务介绍
  管理员进行数据管理  数据的增删改查,功能需要强大,界面不需要很好
   一般流程:管理员登陆=>进入管理主窗口=》在主窗口通过A标签导航要执行的窗口
   ->一个列表窗口显示数据一个增加,一个修改
  
   前台界面,需要美观
下拉框绑定控件:
   DropDownList1.DataSource = gradeList;
        DropDownList1.DataValueField = "NJId";//值对应的属性名
        DropDownList1.DataTextField = "NJName";//显示文件对应属性
        DropDownList1.DataBind();
//加请选择项的方法
   二种方法  改变集合数据    用控件的属性
DropDownList ,BulleList  ,checkBoxList, radioBoxList ()
Image,图片 LinkButten链接按钮,imagebutton
3.后台模型:使用Gridview显示数据
  GridView显示数据过程
 
   //Gridview绑定数据
   GridView1.DataSource = stuList;
            //调用绑定
   GridView1.DataBind();
   /////////////////////////// 
  功能2:设置表格的样式
  功能3:集成分页功能的实现(用的第二方法)
          实现原理:1数据库分页 2 查询出所有的数据,只显示一部分。
         不能用于大数据。
         3.1 AllowPaging 为true   3.2 pageSize:显示的条数   3.3  pageindexchange事件
  功能4:了解gridview的列类型
         4.1 绑定列   DataFiled
         4.2 模板列  自已用来定义头部及项部分的显示内容列。
             主要用头模板和项模板,模板里可以
             用html标签也可以用服务器控件
  模板列中如何提取数据源中的数据,使用<%#Eval("属性")%> 
  
4.数据访问层使用DBHelper类
控件+事件 第三次课
1. gridview提升
   1)复选框全选 js实现   用jquery框架实现  把jquery文件复制到项目中
      //加载
      $(document).ready(function () {
            // alert("jquery");
            $("#checkall").click(function () {
                // alert("点击了chekcAll");
                var f = $("#checkall").prop("checked");
                $("[name=chk]").prop("checked", f);
            });
        });
   
   2) 批量删除,批量修改实现 获取选中复选框的数据 Request.Form["复选框name属性值"]
       --批量删除语法
 
    delete from Student where XSID in (1,2,3)
        --批量修改
     update Student set XSGrade=3  where  XSID in (1,23)
       public int DeleteAll(string ids) //数据访问层写法
        {
            int n = 0;
            String sql = @"delete from Student
                       where XSID in ("+ids+")";
            n = SqlHelper.ExecuteNonQuery(SqlHelper.ConnectionString,
                    CommandType.Text, sql);
            return n;
        }
   
   3)集成删除[指不跳转到一个页面去删除的实现]
 3.1 给GridView设置属性DatakeyNames  为 对象的主键列
        3.2 给gridview加一列,commandFiled里面的删除
        3.3 删除列会自动激发事件RowDeleting事件
            //获取id
              string str = GridView1.DataKeys[e.RowIndex].Value.ToString();
             //...
   4)光标效果[gridview绑定事件的妙用]
       方法一:可以jquery给行加事件。
        原理:<tr> 有js的两个事件,一个鼠标移入有设置背影色,移开背景背景设无
 事件激发时机?
     //行绑定事件,服务器生成表格的每一行时触发一次,可以灵活根据数据,设置效果。
    //e.Row获取行对象,并可以通过e.Row.FindControl("控件名")可以找出该行中的控件
   //格式 e.Row.FindControl("服务器id") as 服务器控件类型
   
           //i)获取绑定到该行上的数据?
            Student stu = e.Row.DataItem as Student;
            //ii)获取在行上位置上的控件?
            Label bl= e.Row.FindControl("Label1") as Label;
   5)操作列的使用
      //用来用表格加操作按钮的列,可以在模板列中加操作按钮来实现
      //激发事件:RowComman事件,事件里使用三个属性
        // e.CommandArgument //事件的参数,数据
        // e.CommandName //事件名称:用来区别不同作用的按钮
       // e.CommandSource //激发出这个事件的按钮对象
 
       在视图上给按钮设属性值
          <asp:Button ID="Button2" runat="server" Text="启用" CommandName="a1"
                    CommandArgument='<%#Eval("XSID")%>'/>
        <asp:Button ID="Button3" runat="server" Text="Button" CommandName="Delete" />
         
         控件名为delete等特殊按钮成为特殊按钮。如激发删除事件的  删除按钮。 
6)提取数据源的数据,并进行函数处理格式<%#函数名(Eval(属性名))%>
    函数名格式:
    //根据需要定义绑定样式的方法
    public string ShowSex(object obj)
    {
        string str = "";
        int a = Convert.ToInt32(obj);
        if (a == 1)
        {
            str = "<b>男</b>";
        }
        else {
            str = "<i>女</i>";
        }
        return str;
    }
   
控件+事件   第五次课 灵活的前台显示多条数据控件Reapter控件  Reapter嵌套
            为什么需要使用reapter?看素材
     做什么功能:只作显示。只要有规律的显示多条数据。
            控件特点:不生成任何的html标签,也可以不用放在form中(可以没有form)
     知识点一: Reapter控件
     1.不生成任何html标签,按照项模板,每条数据源中的数据生成一个项内容。 
          
            1)先看显示的效果,哪一部是生成的规则部分。把该部分用Reapter代替。
            2)找出每条数据显示的部分,把该部分作为放到项模板和交替模板)
            3)给控件绑定数据源  控件名.datasouse=集合;控件名.databind();
            4)在项模板中需要从对象取的的部分,使用<%#Eval("属性名")%>
             或<%#函数名(Eval("属性名"))%>
            知识点二:  Reapter嵌套 :Reapter的项模板里面又有绑定控件(reapter,gridview等)
     作用:层级显示数据,如显示班级,在班级中又显示每个班的学生。
            用于场景:查询里面再根据外查询条件再查询数据。
      1)在外reapter里的项模板加一个reapter或gridview
             2)里面的reapter写事件实现.ItemDataBound
  Repeater rpt = e.Item.FindControl("rpt1") as Repeater;
               //2.获取 项对应的数据源中的 对象
               Grade g1 = e.Item.DataItem as Grade;
              //
第六次课 Reapter实现分页,采用 数据库分页的实现
1)使用URL传递当前页码,在绑定方法中获取页码,并查询,指定页面数据。