zoukankan      html  css  js  c++  java
  • asp.net(class0625)

    1 SiteMapPath 面包屑导航控件

    要想使用这个控件,必须创建一个站点地图,也就是 web.sitemap

    web.sitemap是一个xml文件:

    根节点必须是:<siteMap> 并且在根节点下只能有一个<siteMapNode>节点表示网站的首页.在这个<siteMapNode>下面就可以包含多个<siteMapNode>节点了,只需要体现网站结构层次就行了.

    <siteMapNode>属性:  url 表示该节点所代带的网页地址

                title SiteMapPath控件上显示的内容

        description 鼠标放到节点上,所显示的内容

     

    2 SiteMapPath属性:

    PathSeparator 分隔符

    ParentLevelsDisplayed 显示几层父节点

     

     

     

    如果用动软生成代码后,又在模型层用添加了(修改了)用对象作为属性(外键的处理),而要修改下面3个地主:

     

    数据库访问层:

    1 Add方中使用到的该属性

    2 updagte方中使用到的该属性

    3 GetModel方法中使用到该属性的地方

     

    业务逻辑层

    1 DataTableToList方法中使用到该属性的地方

     

     

     

     

     

     

     

    用户输入的年龄必须大于等于18岁 

     

    用户注册 用户表 Users

     

     

    c/s dataGridView在绑定时,只能绑定一层属性

     

     

    UI:

    业务逻辑:

    AddUser(User user)

    {

     

    首先调用GetUserByUserName(user.name);

    AddUser();

     

     

    数据库访问层:

    GetUserByUserName(string userName)

    AddUser(User user)

    {

    对于插入一条记录的这个方法,就只做插入就行了.不需要用         用户名是否存在的判断

    }

    Delete(string userName)

    Update(User user)

     

     

     

     

     

    数据绑定控件通过绑定的方法向用户展示数据):ListView GridView DataList

    数据源控件(读取数据,并把数据提供数据绑定控件):ObjectDataSource XmlDataSource 

     

    数据绑定有两种方法:

    第一种手动写代码绑定:

    1) 先控得数据的集合

    2) 把集合赋给相关的数据绑定控件的DataSource属性,然后执行该控件的DataBind

     

    第二种使用数据源控件绑定

    1) 首先你拖一个数据源控件,ObjectDataSource

    2) 设置数据绑定控件(GridView)DataSourceID为相关的ObjectDatasource

     

    注意:以上两种绑定方式不能同时使用(一个控件不能即对DataSource赋值,又对DataSourceID赋值),如果我们先给控件赋了一个DataSourceID,在用户点击某一个按钮后又想使用手写代码绑定,那么在对DataSource赋值之前,一定要先对DataSourceIDnull

     

    如果想在GridView隐藏一列的值(比如主键),那么请添加一个模板列,然后在这个模板列中放一个Label,然后就可以隐藏这一列了,在后台代码可以通过FindControl来找到隐藏在模板列中的Label

     

    GridView中进行数据绑定时,设置Columns属性指定显示的数据列:

    绑定列时有以下几种类型:

    BoundField:用于展示某个字段

    CheckBoxField:用于展示数据库中的bit类型(实体类中bool),他以一个CheckBox控件给用户展示

     

     

    RowCommand事件:当控件中有任何控件触发事件的时候,都会触发这个事件.

     

    GridView,当一个按钮的CommandName:

    1) Edit的时候,那么点这个按钮,就会触发GridView编辑事件

    2) Cancel的时候那么点这个按钮,就会触发GridView 取消编辑事件

    3) Update的时候那么点这个按钮,就会触发GridView 更新编辑事件

    4) Delete的时候那么点这个按钮,就会触发GridView 删除编辑事件

     

     

    获取GridView控件上的数据:

    1) 如果是BoundField绑定,并且当前未处于可编辑状态:

    GridView1.Rows[行索引].Cells[列索引].Text;

    2) 如果是BoundField绑定,并且当前处于可编辑状态:就可以通过以下代码获得该控件:

    GridView1.Rows[GridView1.EditIndex].Cells[1].Controls[0]

    获得后,返回值是一个Control类型,你可以从界面上看出其实是TextBox还是CheckBox等控件,然后强转,假如是TextBox就写以下代码:

    ((TextBox)GridView1.Rows[GridView1.EditIndex].Cells[1].Controls[0])

    3)如果是模板列,通一使用FindControl来找到该控件

     

     

    GridViewEditIndex属性:指示当前哪一行处于编辑状态,如果没有任何一行处于编辑状态,EditIndex=-1

     

     

    向前端输出js代码使用下面两种方法:

    1)在显示用户控件前显示

        Page.ClientScript.RegisterClientScriptBlock(this.GetType(), Guid.NewGuid().ToString(),

                        "alert('mydelete');", true);

    2) 在显示完用户控件后执行的js脚本             Page.ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(),

                        "alert('mydelete')", true);

     

    如果想在GridView中绑定一个对象的属性的属性(外键).那么请添加一个模板列,在模板列通过Eval来绑定

     

     

    使用ObjectDataSource进行数据绑定并且在ObjectDataSource指定了更新的业务逻辑层方法,当用户点击更新时,事件的调用顺序为:

    1) 控件的  GridView1_RowUpdating 在这个事件,通过参数e可以得到用户在界面上更新前与更新后的值.当然如果要在这个e中获得值,值的绑定必须是Bind绑定

    2) 数据源控件的 ObjectDataSource1_Updating   这时候参数e中存数模型

    3) 调用业务逻辑层的方法

    4) 数据源控件的ObjectDataSource1_Updated

    5) 控件的 GridView1_RowUpdated

    在4)和5)的事件,可以判断e.Exception是否为空来知道在调用业务逻辑层时是否出现了异常,如果已处理该异常,不希望些异常继续抛出,需要设置  e.ExceptionHandled = true;

     

     

    定单表如何设计:

    假如说张三买了3本不同名的书

    定单表:

    Id  UserId BookId Count UnitPrce Date           state   Address

    1   zs      1       1     1       2011-06-23      0    海淀软件园

    2   zs      2       1     1       2011-06-23      0    海淀软件园

    3   zs      3       1     1       2011-06-23      0    海淀软件园

    4   ls      2       1     1       2011-06-24      0    保定

    5 zs       6      1      1    2011-06-24         0     邯郸

     

     

     

    主表中:

    单号(主键)    用户id  购买日期   发货地址   总金额  状态(0未发货,1已发货)

    0001          zs      2011-06-23  北京       100     0

     

     

    明细表(单号和Item做组合键)

    单号(外键)  item    BookId  数量

    0001        1     1       1

    0001        2     2       1

    0001        3     3       1

     

     

     

    采用Session来验证用户是否登录.

    如果用户登录成功,则把用户的信息存储到Session[“currUser”]

    其他页面如何知道当前用户是否登录成功:就判断Session[“currUser”]是否存在就可以了.如果存在,说明已登录,否则说明未登录!

     

     

     

    什么时候使用用户控件:

    当我们在我们的网站中,重复的用到某一个功能块时,并且这些功能块在各各页面上的位置不同或者各各页面的布局不同,这样就不能使用母板页,可以使用用户控件来实现重用.

     

    用户只能浏览放有用户控件的网页,不能直接浏览用户控件.

     

    用户控件中可以再放用户控件,但一定要注意,用户控件不能嵌套放.

     

    登录实现记住我:

    我们需要在用户的电脑上存什么上?

    //////用户名和密码

     

    两种解决方法:

    第一种:

    在数据库的Users表中加一个字段叫akey,当用户点击记住我登录时,产生一个Guid,然后放入数据akey,并把akey写入客户端cookie.下次只需要读出cookie中的akey,就可以从数据库中查找到该用户.

    我有两台电脑:在 A上登录,产生一个akey      B电脑上登录,并且也选择记住我,又产生一个akey

     

    第二种:

    我把用户名和密码存到客户端.

    设从数据库中读出的用户的密码为p   

    随机产生两个字符key

    加密密码:         key+md5(key+md5(p))

     

     

    高率分页:

    设页大小为 PageSize=10

    PageNumber

    1页的数据:1   10

    2页的数据:11  20

    3页的数据:21  30    

    n页的数据: (n-1)*PageSize+1      n*PageSize

     

     

    3

    select top PageSize * from books where books.id not in

    (

    select top ((PageNumbe-1)r*PageSize)  * from books;

     

    select * from 

    (select *,Row_Number() over(order by id) rownumber from books ) t

    where t.rownumber>=@start and t.rownumber<=@end

     

     

    服务按钮控件有一个PostBackUrl属性,如果不设置这个属性,点击这个按钮默认情况下是回发到本页.如果我们想通过Post的形向其他页面或其他语言写的web提交数据,就可以设置PostBackUrl属为要提到数据的网址.按钮一旦设置了PostBackUrl之后,点击这个按钮就会把当前页面上的数据提交到指定网址.

    如果一个按钮设置PostBackUrl属性,那当我们当击这个按钮时,这个按钮的服务器端事件的代码不会立即触发.

    当在跨页提交的这个页中代码,第一次访问到Page.PreviousPage属性时,会转交上一个页面,执行上一个执行的按钮事件.

    跨页面取值时用以下代码:

              if (Page.PreviousPage != null)

                {

                    if (Page.PreviousPage.IsCrossPagePostBack == true)

                    {

                        Label1.Text= ((TextBox)Page.PreviousPage.FindControl("TextBox1")).Text;

                    }

     

                }

     

    母板页也是一个控件

  • 相关阅读:
    [POI2009]SLOElephants
    java回顾之集合概述
    java回顾之初始化
    java回顾之包装类
    java回顾之Set
    action,category
    java回顾之继承 二
    java回顾之TreeSet
    java回顾之final
    java回顾之继承
  • 原文地址:https://www.cnblogs.com/fanhongshuo/p/3876722.html
Copyright © 2011-2022 走看看