gridview使用总结
来源:互联网 发布:淘宝刷客究竟犯不犯法 编辑:程序博客网 时间:2024/06/05 20:48
GridView控件用来在表中显示数据源的值。每列表示一个字段,而每行表示一条记录。
GridView控件支持下面的功能:
1.绑定至数据源控件,如SqlDataSource。
2. 内置排序功能。
3.内置更新与删除功能。
4.内置分页功能。
5.内置行选择功能。
6.以编程方式访问GridView对象模型以动态设置属性、处理事件等。
7.多个键字段。
8.用于超链接列的多个数据字段。
9.可以通过主题和样式进行自定义外观。
GridView控件中的每一列由一个DataControlField对象表示。
默认情况下,AutoGenerateColumns属性被设置为true,表示为数据源中的每个字段自动创建绑定字段,自动生成的绑定列字段不会添加到Columns集合中。
通过将AutoGenerateColumns属性设置为false,然后创建自定义的Columns集合,您可以手动定义列字段,而不是让GridView控件自动生成列字段。除了绑定列字段外,您还可以显示按钮列字段、复选框列字段、命令字段、超链接列字段、图像字段或基于您自己的自定义模板的列字段。
下表列出了可以使用的七种不同列字段类型。
Field字段类型 - 说明BoundField(数据绑定字段)将Data Source数据源中某个字段的数据以文本方式显示。这是GridView控件的默认列类型。ButtonField(按钮字段)在数据绑定控件中显示命令按钮。根据控件的不同,它可让您可以创建一列自定义按钮控件(例如【添加】或【移除】按钮)的数据行或数据列,按下时会引发RowCommand事件。CommandField(命令字段)显示用来执行含有预定义命令的Button按钮,包括了Select、Edit、Update、Delete命令按钮(DetailsView的CommandField才支持Insert命令)CheckBoxField(CheckBox字段)为GridView控件中的每一项显示一个CheckBox类型的复选框,通常用于布尔值True/False布尔值字段的显示。HyperLinkField(超链接字段)将Data Source数据源字段数据显示成HyperLink超级链接,并可指定另外的NavigateUrl超链接ImageField(图像字段)在数据绑定控件中显示图像字段TemplateField(模板字段)根据指定的模板为GridView控件中的每一项显示用户定义的模板内容。此列字段类型允许您创建自定义的列字段。自定义用户界面
您可以通过设置GridView控件的不同部分的样式属性自定义该控件的外观。下表列出了不同的样式属性。
GridView控件中的交替数据行的样式设置。当设置了此属性时,数据行交替使用RowStyle设置和AlternatingRowStyle设置进行显示。
EditRowStyle
GridView控件中正在编辑的行的样式设置。
EmptyDataRowStyle
当数据源不包含任何记录时,GridView控件中显示的空数据行的样式设置。
FooterStyle
GridView控件的脚注行的样式设置。
HeaderStyle
GridView控件的标题行的样式设置。
PagerStyle
GridView控件的页导航行的样式设置。
RowStyle
GridView控件中的数据行的样式设置。当还设置了AlternatingRowStyle属性时,数据行交替使用RowStyle设置和AlternatingRowStyle设置进行显示。
SelectedRowStyle
GridView控件中的选中行的样式设置。
也可以显示或隐藏控件的不同部分。下表列出控制显示或隐藏哪些部分的属性。
显示或隐藏GridView控件的页脚节。
ShowHeader
显示或隐藏GridView控件的页眉节。
事件
GridView控件提供多个您可以对其进行编程的事件。这使您可以在每次发生事件时都运行一个自定义例程。下表列出了GridView控件支持的事件。
在单击某一页导航按钮时,但在GridView控件处理分页操作之后发生。此事件通常用于以下情形:在用户定位到该控件中的另一页之后,您需要执行某项任务。
<pagersettings mode="Numeric" position="Bottom" pagebuttoncount="10"/>
从 10个按钮里面随便选择一个的情况
PageIndexChanging
在单击某一页导航按钮时,但在GridView控件处理分页操作之前发生。此事件通常用于取消分页操作。
RowCancelingEdit
在单击某一行的“取消”按钮时,但在GridView控件退出编辑模式之前发生。此事件通常用于停止取消操作。
RowCommand
当单击GridView控件中的按钮时发生。此事件通常用于在控件中单击按钮时执行某项任务。
RowCreated
当在GridView控件中创建新行时发生。此事件通常用于在创建行时修改行的内容。
RowDataBound
在GridView控件中将数据行绑定到数据时发生。此事件通常用于在行绑定到数据时修改行的内容。
RowDeleted
在单击某一行的“删除”按钮时,但在GridView控件从数据源中删除相应记录之后发生。此事件通常用于检查删除操作的结果。
RowDeleting
在单击某一行的“删除”按钮时,但在GridView控件从数据源中删除相应记录之前发生。此事件通常用于取消删除操作。
RowEditing
发生在单击某一行的“编辑”按钮以后,GridView控件进入编辑模式之前。此事件通常用于取消编辑操作。
RowUpdated
发生在单击某一行的“更新”按钮,并且GridView控件对该行进行更新之后。此事件通常用于检查更新操作的结果。
RowUpdating
发生在单击某一行的“更新”按钮以后,GridView控件对该行进行更新之前。此事件通常用于取消更新操作。
SelectedIndexChanged
发生在单击某一行的“选择”按钮,GridView控件对相应的选择操作进行处理之后。此事件通常用于在该控件中选定某行之后执行某项任务。
SelectedIndexChanging
发生在单击某一行的“选择”按钮以后,GridView控件对相应的选择操作进 行处理之前。此事件通常用于取消选择操作。
Sorted
在单击用于列排序的超链接时,但在GridView控件对相应的排序操作进行处理之后发生。此事件通常用于在用户单击用于列排序的超链接之后执行某个任务。
Sorting
在单击用于列排序的超链接时,但在GridView控件对相应的排序操作进行处理之前发生。此事件通常用于取消排序操作或执行自定义的排序例程。
代码说明部分:
一.GridView数据显示
原理:在页面加载时,将gridview绑定数据源,以进行显示
实现:
1. 使GridView绑定数据源,可以使DataTable,DataReader等。
///<summary> /// gridviews实现数据源绑定 ///</summary> public void Bind() { con = new SqlConnection(strcon); con.Open(); SqlDataAdapter da = new SqlDataAdapter(strsql, con); DataSet ds = new DataSet(); da.Fill(ds); GridView1.DataSource =ds; GridView1.DataKeyNames = new string[] {"id" };//为了便于识别每行数据,加入键值进行分别,这里的键值时表中的主键id; GridView1.DataBind(); con.Close(); }2. 在页面加载时绑定数据源:
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Bind(); } }
3. 此时运行后显示的gridview标题是表的字段名。
这是gridview中AutoGenerateColumns="true"的作用,我们要自定义标题当然要AutoGenerateColumns="False"
然后就可以自己添加标题了:
编辑列—选择bindfild—添加—headtext中填写标题—datafield中填写表中的字段名如id,name等。
二. Gridview删除修改操作
原理:gridview属性中自带了GridView1_RowDeleting,GridView1_RowUpdating,GridView1_RowCancelingEdit等许多事件。当我们在页面中添加了这些事件按钮后就可以执行它。
实现:1.首先我们还是要添加删除,修改按钮,
编辑列-->选择ConmmandFieldà选择删除à添加
2.选择gridView属性—事件—>然后选择GridView1_RowDeleting双击会自动生成函数
3.然后再里面添加代码。注意获得所选行的键值一句
String id=Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value);
E其中e.RowIndex表示你选择那一行的行数
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { con = new SqlConnection(strcon); con.Open(); int id = Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value);//获取所选择行的键值 string strsql="delete from UserInfo where id='"+id+"'"; SqlCommand cmd = new SqlCommand(strsql, con); cmd.ExecuteNonQuery(); Bind(); }4. 最后同理。添加修改按钮,但是修改按钮中则包含的较多。其中有编辑,更新,取消三个响应事件。
1.首先还是先添加CommandField—选择编辑,更新,取消—添加
2.在gridview事件中选择GridView1_RowEditing,GridView1_RowUpdating,GridView1_RowCancelingEdit分别双击,将自动产生消息响应函数。
3.添加代码如下:
///<summary> ///实现编辑 ///</summary> ///<param name="sender"></param> ///<param name="e"></param> protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) { GridView1.EditIndex = e.NewEditIndex; Bind(); } ///<summary> ///更新数据 ///</summary> ///<param name="sender"></param> ///<param name="e"></param> protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { con = new SqlConnection(strcon); con.Open(); string uname = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString(); string upassword = ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString(); string strsql = "update UserInfo set uname='"+uname+"', upassword='"+upassword+"'where id='"+Convert.ToInt32(GridView1.DataKeys[e.RowIndex].Value)+"'"; SqlCommand cmd = new SqlCommand(strsql, con); cmd.ExecuteNonQuery(); GridView1.EditIndex = -1; Bind(); } ///<summary> ///取消编辑 ///</summary> ///<param name="sender"></param> ///<param name="e"></param> protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { GridView1.EditIndex = -1; Bind(); }三. GridView鼠标移动改变颜色以及删除时弹出提示框
原理:在GridView事件GridView1_RowDataBound中添加javascrit事件。
实现:gridview属性事件中,双击GridView1_RowDataBound,自动生成函数后,添加以下代码:
///<summary> ///当鼠标移动时改变颜色,删除时弹出确认对话框 ///</summary> ///<param name="sender"></param> ///<param name="e"></param> protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow)//判断是数据绑定行 { if (e.Row.RowState == DataControlRowState.Normal || e.Row.RowState == DataControlRowState.Alternate) { ((LinkButton)(e.Row.Cells[4].Controls[0])).Attributes.Add("onclick", "javascript:return confirm('你确认要删除:\"" + e.Row.Cells[1].Text + "\"吗?')"); } } //鼠标移动后添加背景颜色 int i; for (i = -1; i < GridView1.Rows.Count; i++) { if (e.Row.RowType == DataControlRowType.DataRow) { e.Row.Attributes.Add("onmouseover","c=this.style.backgroundColor;this.style.backgroundColor='#00A9FF'"); e.Row.Attributes.Add("onmouseout", "this.style.backgroundColor=c"); } }}四. 添加模板控件
原理:当我们想在gridview中每一行添加一个CheckBox或则按钮时,这个时候我们就需要在添加列里编辑一个模板,然后再在模板里添加控件,而响应事件就是你控件的事件。
实现:第一步,我们当然是添加一个新列,比如我们添加一个checkBox来实现多项的选择,然后删除。编辑列,选择TemplateField—添加—HeadText命名为多选。
第二步,我们选择编辑模板,在显示里面选择column【】多选
然后再ItemTemplate框中拖入CheckBox控件CheckBox1,这里我们不需要再这里对该控件进行事件处理。
这时运行程序每行就会出现一个CheckBox.
第三步,再在gridView下面添加一个CheckBox控件checkBox2,旁边写上全选。目的是实现点击checkbox2时实现多选。然后双击CheckBox2,自动生成响应函数.
///<summary> /// checkbox2即全选checked时将girdview控件中所有选择框点击 ///</summary> ///<param name="sender"></param> ///<param name="e"></param> protected void CheckBox2_CheckedChanged(object sender, EventArgs e) { for (int i = 0; i <= GridView1.Rows.Count - 1; i++) { CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");//搜寻每行ID为CheckBox1的CheckBox控件 if (CheckBox2.Checked == true)//如果CheckBox2点击了 { cbox.Checked = true; } else { cbox.Checked = false; } }}最后,我们再在GridView控件下面添加一个删除按钮,将选择到得行进行删除。
///<summary> ///删除按钮响应事件 ///</summary> ///<param name="sender"></param> ///<param name="e"></param> protected void btn_delete_Click(object sender, EventArgs e) { con = new SqlConnection(strcon); con.Open(); for(int i=0;i<=GridView1.Rows.Count-1;i++) { CheckBox cbox=(CheckBox )GridView1.Rows[i].FindControl("CheckBox1"); if(cbox.Checked==true) { string sqlstr = "delete from UserInfo where id='" + GridView1.DataKeys[i].Value + "'"; SqlCommand cmd=new SqlCommand(sqlstr,con); cmd.ExecuteNonQuery(); } } con.Close(); Bind(); }五,添加超链接,传递另一张页面id然后修改或添加数据
原理:添加超链接控件
实现:1.添加新列,选择HyperLinkField,点击添加。HeaderText随意命名;
<asp:HyperLinkField HeaderText="姓名" DataNavigateUrlFields="uname" DataTextField="uname"DataNavigateUrlFormatString="Default.aspx?passname ={0}" />
3. Default.aspx页面接受值。String name=Request.QueryString[“passname”]
实现:添加到处按钮,命名为btn_Excel,双击
protected void btn_Excel_Click(object sender, EventArgs e) { Export("application/ms-excel", "学生成绩报表.xls"); } private void Export(string FileType, string FileName) { Response.Charset = "GB2312"; Response.ContentEncoding = System.Text.Encoding.UTF7; Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, Encoding.UTF8).ToString()); Response.ContentType = FileType; this.EnableViewState = false; StringWriter tw = new StringWriter(); HtmlTextWriter hw = new HtmlTextWriter(tw); GridView1.RenderControl(hw); Response.Write(tw.ToString()); Response.End(); } public override void VerifyRenderingInServerForm(Control control) { }在GirdView页面中头部<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GridViewStudy.aspx.cs"Inherits="GridViewStudy" EnableEventValidation = "false" %>添加EnableEventValidation = "false"
wait...
- GridView使用总结
- GridView使用总结
- gridview使用总结
- Android中GridView使用总结
- Android之-----GridView使用的方法总结
- gridView总结
- GridView总结
- GridView总结
- Android之PullToRefresh(ListView 、GridView 、WebView)使用详解和总结
- GRIDVIEW 使用
- Gridview使用
- GridView使用
- gridview 使用
- GridView 使用
- GridView使用
- GridView 使用
- GridView 使用
- GridView使用
- UIColor & 颜色集
- ios8技术调研
- tomcat 6.1.18启动报错IOException while loading persisted sessions: java.io.EOFException
- 09 js继承
- poj 3625 Building Roads(图论:最小生成树)
- gridview使用总结
- HDU 4864(Task)
- starling 学习(二)配置过程
- 从用python做zoj1011发生Non-zero Exit Code错误说起
- 匹配最大字符串
- 10.2.0.1.1 grid control的启动和关闭
- 选择,冒泡排序
- 使用Label控件直接显示并更新时间
- capturing self strongly in this block is likely to lead to a retain cycle