gridview回顾
第一看asp.net是在做项目之前,感觉收获也很大,第二次看gridview是在做完项目之后对GridView的回顾,这次的感觉是:我需要多想点,知识直到用时方觉少。直入正题吧,看gridview。
一、主要的事件
(1)RowDeleting 当点击删除按钮时,执行的删除代码。
(2)RowEding 当点击编辑按钮的时候执行的代码。
(3)RowUpdating 当点击修改按钮的时候执行的代码。
(4)SelectedIndexChanged || SelectedIndexChanging 事件,这两个事件用哪个都可以,只不过执行顺序有先后,当点击选择按钮的时候执行的代码,例如我们在用GridView做购物车的时候,就是用了选择按钮,就用到了SelectedIndexChanging事件。
(5)RowDataBound 事件,当页面实例化完毕(控件实例化完毕),执行完Page_Load()方法的时候(数据在页面上加载完毕),再来执行RowDataBound方法,一看Bound是过去式,就说明是在数据绑定完毕以后执行的方法。确实是,RowCreated事件是外面的Cell单元格创建好了,但是数据还未放到Cell单元格中时候所执行的方法。而RowDataBound事件是数据已经放到每一个Cell中,这时候所要执行的就是RowDataBound事件。进入RowDataBound事件中首先两层IF判断,判断这一行的Type(RowType),判断这一行数据的State,也就是状态,一般Type主要使用DataRow,数据行。判断State的时候要注意如果是编辑状态下,如果只是写了:
e.Row.RowState ==DataControlRowState.Edit
//这样只是给普通项判断是否出于编辑状态,对于交替项没有进行判断,如何判断:在后面在加上一句
e.Row.RowState ==(DataControlRowState.Edit | DataControlRowState.Alternate)
把上面的内容连起来:
if (e.Row.RowState== DataControlRowState.Edit || e.Row.RowState == (DataControlRowState.Edit |DataControlRowState.Alternate))
或者是这么写:因为e.Row.RowState是一个枚举类型的数据,枚举类型就对应着一个具体的int类型的值:
我们可以在即使窗口中进行调试,进行判断处于编辑状态的普通行和交替行对应的int类型的值:分别为4、5。
所以我们又可以这么来写:
if((int)e.Row.RowState== 4 || (int)e.Row.RowState == 5)
也可以。
二、GridView的属性
视图中查看到的属性就不说了。
首先第一个:GridView.EditIndex ---->
这个属性是得到当前编辑项的索引号,如果为修改操作,可以这么来做:
双击RowEditing事件进去写代码,首先为此属性赋值:GridView.EditIndex == e.NewEditIndex;//GridView的编辑项的索引号为当前项的索引号。记住:e.NewEditIndex也是GridView一个重要的属性,当前操作的这一行的索引号。
GridView一定要注意的:
三、ViewState——也是一个重点。
当.NET页面在运行的时候,存储两份数据,一份在页面中显示出来了,一份存储ViewState中,首先一个认识:HTTP协议是一种无状态的协议,再来理解什么是无状态的协议,比如说我这次访问了新浪,新浪页面一加载完毕就与我断开连接,因为新浪服务器已经给了我页面,于是新浪的服务器就与我的电脑断开连接了,我在看什么,我在干什么都不知道,那么存储状态用什么呢?首先第一点:Session、再一点:Cookie、再一点:Application、再一点:在我们.NET中微软为我们提供了ViewState。
Session是存储在服务器端,用SessionID来区分不同的用户对象,Cookie是存储在用户的硬盘中的某一个文件夹下,之前也和大伙看了一下在浏览器中临时文件夹下的Cookie,怎么查找。
主要说ViewState,其实不止是GridView有ViewState,Repeater、DataList、TextBox等等表单控件和数据显示控件都有ViewState,它所带来的效果是什么,当我们在用TextBox来做一个注册页面的时候,如果是用普通的Form表单进行数据提交,如果账户已存在,会直接跳转到注册页面,表单中的数据全部没有了,而用.NET中的TextBox控件如果填写的用户名已存在,它不会把数据全部清除,而是保留着。这就是ViewState的作用。
在GridView中,如果不存在ViewState,把ViewState禁用掉,会出现什么情况:当第一次访问页面的时候数据正常加载,如果GridView中存在按钮,按钮默认都提交,一旦提交,重新加载页面,数据全部没有,实例化出页面以后,页面对象有了,GridView对象实例化出来了,控件有了,但是在 Page_Load()方法中一旦判断是PostBack按钮提交过来的就不会再执行Page_Load()中的代码,Page_Load()是为实例化好的控件填充数据的,一旦不走Page_Load()中的代码,数据也就不会填充到GridView控件中,我们看到的效果就是,一点击按钮 GridView没有了。这就是禁用ViewState的结果。可以解决,按钮代码执行完毕后在调用一下绑定数据的方法。
HTTP协议是一种无状态的协议,我访问了一个aspx页面,服务器不会记住这个页面对象,一旦在服务器中声称好了我请求的这个aspx页面对象,便会立即释放,再次访问这个页面的时候,服务器不会记得第一次访问时候的那个页面对象,而是再次生成一个页面对象,每次都是这样。ViewState的作用就是存放一份数据,让服务器记住我这个页面已经实例化过一次了,直接通过ViewState从服务器端取得上次实例化好的页面对象。
这是.NET中所特有的,什么时候不必要用ViewState,也就是把ViewState禁用了呢?当页面上没有按钮的时候,可以禁用掉。所以我们在使用GridView的时候一般用超链接 <A>标签,而避免使用按钮,因为有按钮就必须有ViewState,页面加载的速度肯定会慢下来。再就是有ViewState的页面一定要分页。
后台为按钮添加JavaScript事件:
在RowDataBound事件中写代码,查找按钮,转换成对应的Button类型,然后为按钮的属性:OnclientClick赋对应的JavaScript代码即可。
例如:
(e.Row.Cells[5].Controls[2]as LinkButton).OnClientClick = "return window.confirm('确认要删除吗?')";
在RowUpdating事件中如何取得每一个Cell中的值:
string name =(GridView1.Rows[e.RowIndex].Cells[1].Controls[0] as TextBox).Text;
GridView1.Rows[e.RowIndex].Cells[1].Controls[0]
或
GridView1.Rows[e.RowIndex].Cells[1].FindControl("")
和DataList一定要区分好,DataList中是:
e.Item.FindControl("")as ....
gridview回顾的更多相关文章
- 在DevExpress程序中使用GridView直接录入数据的时候,增加列表选择的功能
在我上篇随笔<在DevExpress程序中使用Winform分页控件直接录入数据并保存>中介绍了在GridView以及在其封装的分页控件上做数据的直接录入的处理,介绍情况下数据的保存和校验 ...
- Repeater, DataList, 和GridView控件的区别
http://blog.sina.com.cn/s/blog_646dc75c0100h5p6.html http://www.cnblogs.com/phone/archive/2010/09/15 ...
- 使用GridView来获取xml文件数据
在任何一个系统中,数据的读取和编辑都是至关重要的.无论你是CS还是BS,都需要对数据进行操作.其实 我们可以发现,很多软件和系统最终都是对于数据库中数据的处理.之前在CS的学习过程中我们接触到了很多 ...
- GridView 翻页 索引超出范围
事件回顾 今天GridView翻页时,又遇到错误:索引超出范围.必须为非负值并小于集合大小. 这是当时的PageIndexChanging和RowCommand两个事件的后台代码 protected ...
- 安卓TV开发(六) 移动智能终端UI之实现类似GridView的焦点控制FocusView框架
转载请标明出处:http://blog.csdn.net/sk719887916/article/details/40045089,作者:skay 前言 安卓TV开发(五) 移动智能终端UI之实现主流 ...
- 详解ASP.NET4 GridView的四种排序样式
与ASP.NET 的其他Web控件一能够,Gridview控件拥有很多不同的CSS样式属性设置,包括象CssClass,Font字体,ForeColor,BackColor,BackColor, Wi ...
- [C#] C# 基础回顾 - 匿名方法
C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...
- Android GridView 通过seletor 设置状态和默认状态
Android中可以通过selector控制GridView Item 的状态,而省去使用代码控制 GridView View Selector Xml文件 <?xml version=&quo ...
- SQL Server-表表达式基础回顾(二十四)
前言 从这一节开始我们开始进入表表达式章节的学习,Microsoft SQL Server支持4种类型的表表达式:派生表.公用表表达式(CTE).视图.内嵌表值函数(TVF).简短的内容,深入的理解, ...
随机推荐
- 通过crash了解linux页表
目的: 通过一个c语言实例,了解linux页表的组织结果和mmu的工作原理. 通过页表找到一个物理地址, 对比物理地址与虚拟地址的内容是否一致. 运行环境: $ uname -r3.15.6-200. ...
- nodejs项目中的路由写法
//两种路由写法,一种封装成函数,返回结果,此种方法可以传递参数, "use strict"; var _ = require("lodash"); var e ...
- I Hate It(线段树)
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- opencv 中cvZero()的使用
cvZero(CvArr* ar); // 是让矩阵的值都为0,有初始化的作用, Eg: IplImage img=cvCreateImage(cvSize(640,480),IPL_DEPTH_ ...
- Android的应用程序的异常处理2
1.自定义一个类(MaApp)继承Application 2.在清单文件中的Application选项菜单对应的name属性中添加MyApp 3.重写application中的onCreate方法 4 ...
- 文档onload处理程序
//第一种方式是注册onload事件处理代码, //onload事件会在页面或图像加载完成后立即发生.这意味着onload事件的执行时间是在 //document对象和document对象所关联的所有 ...
- Lc.exe已退出 代码为-1问题解决方法
对于用vs作为开发工具的同学来说,可能常常会碰到“Lc.exe已退出 代码为-1”的问题,造成这个结果的一般是因为加入了第三方的插件程序造成的,今天一一讲解如何解决. 工具/原料 vs各版本开发工具 ...
- 查看memcached依赖的库
LD_DEBUG=libs ./memcached -v
- [翻译]如何用YII写出安全的WEB应用
前言 虽然本文是基于YII1.1,但其中提到的安全措施适用于多数web项目安全场景,所以翻译此文,跟大家交流.原文地址. 目录 安全基本措施... 2 验证与过滤用户的输入信息... 2 原理... ...
- HBase shell 操作命令记录
创建表:create 'tablename','column cluseter:column1,column2...columnn','column cluster:column1,column2.. ...