GridView1 删除、修改(字段类型全而且用GridView集成处理)_第1页
GridView1 删除、修改(字段类型全而且用GridView集成处理)_第2页
GridView1 删除、修改(字段类型全而且用GridView集成处理)_第3页
GridView1 删除、修改(字段类型全而且用GridView集成处理)_第4页
GridView1 删除、修改(字段类型全而且用GridView集成处理)_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、删除、修改记录(字段类型全、GridView集成处理、双向排序、翻页、绑定列)2010.10.30学习内容:TemplatedField模板列技术、使用绑定列技术、鼠标所在行颜色提示、绑定列中使用下拉列表框、设置字段的ControlStyle属性运行态1. 在VS2008中建立Web项目。2. 在Windows环境下将数据库jyxystu.mdf(命名含义为教育学院学生)和jyxystu.ldf拷贝到项目的App_Data目录下,并在VS中添加的项目中。3. 在SQL Server 2000中附加数据库jyxystu.mdf。4. 在数据库中建立一个表:tb_zg(命名含义为职工表,以tb开头

2、意思是本对象是一个表),表结构如下:字段名数据类型长度主键否描述zgbhvarchar4是职工编号xmvarchar50职工姓名xbvarchar2性别csnydatetime8出生年月glint4职工工龄gzfloat8职工工资5. 录入若干条记录(为了看出效果,记录数至少20条)6. 修改web.config文件,(1) 删除下方的(2) 在位置下增加: 7. 在项目中添加Web窗体mygridview.aspx(文件名含义为按类查询)8. 布局控件如下:一个GridView,在GridView下方有两个label,准备显示第x页 共y页。ID属性分别是Label1和Label2。Grid

3、View1自动套用格式为雪松。AutoGenerateColumns=FalseAllowSorting=TrueAllowPaging=TruePageSize=10因为要采用分页技术所以需要再设置PagerSettings属性FirstPageText=首页LastPageText=尾页NextPageText=下一页PreviousPageText=上一页Mode=NextPreviousFirstLast把GridView中的FontSize设为small。GridView的DataKeyNames属性为zgbhGridView1编辑列界面如下(通过“添加列”),如图所示:其中在“选定

4、的字段”下各字段的属性设置如下:可用字段类型选定的字段DataField属性HeaderText属性SortExpression属性readonly属性ControlStyle Width属性DataFormatStringBoundField职工编号zgbh职工编号zgbhTrueBoundField姓名xm姓名80pxTemplateField性别性别40pxBoundField出生年月csny出生年月csny120px0:yyyy-MM-dd或0:dBoundField工龄gl工龄gl30pxBoundField工资gz工资gz60px0:c会显示货币符号CommandField编辑编辑

5、TemplateField删除删除备注:1. ControlStyle Width属性是解决GridView进入编辑状态后表格列宽紊乱的问题,对文本框进行强制宽度设置。2DataFormatString属性是解决数据显示问题的,在此例中引入该属性是为了控制日期型数据显示为2010-10-11格式的。此外:编辑按钮还需设置属性:ShowEditButton=True删除按钮还需设置属性:ButtonType=Button CommandName=delete Text=删除 补充知识DataFormatString属性常见取值:0:c 货币格式0:d短日期2010-10-120:D长日期2010

6、年10月12日0:000.0四舍五入小数点保留第几位有效数字;0:N2小数点保留2位有效数字;0:N2% 小数点保留2位有效数字加百分号;0:yy-MM-dd 例如07-3-25;0:yyyy-MM-dd 例如2007-3-259切换到源视图,补充性别绑定列的HTML代码。 asp:DropDownList ID=DropDownList2 runat=server selectedvalue= 男 女 asp:Label ID=Label1 runat=server Text= 说明:(1)希望网页运行后,当GridView进入编辑状态后,在性别列处显示的是下拉列表框,在下拉列表框中有男、女

7、两个选项供选择,要比提供文本框输入男和女,显得界面更友好,如果单纯用文本框输入,就不用搞这么复杂了,直接用一个BoundField列就可以了。(2)除手工在源视图下填写代码外,另外一种正规方法是在GridView上点智能标记,调用快捷菜单“编辑模板”,然后选Column2-性别,进入模板列编辑状态,在此图中可设插入控件,编辑完后点“结束模板编辑”按钮返回,如果同学们采用这种方法,那么在设计完后,对照一下HTML代码,看有无缺漏。另外ItemTemplate是浏览状态下的控件显示。EditItemTemplate是编辑状态下的控件显示。(3)使用Bind方法可将修改后的数据写回,通常在数据绑定控

8、件的EditItemTemplate或InsertItemTemplate模板中使用Bind方法,并将字段名称传递给它,以显示和编辑字段数据,双向绑定语法格式如下:(4)在编辑模板状态下,在ItemTemplate模板中为“删除”按钮设置以下这些属性。关键是CommandName=delete OnClientClick=return confirm(您确定要删除该条记录吗?);10导入命名空间:using System.Data.SqlClient; /cyd 2010.10 导入命名空间,此例就不用类来处理了11. 在Page_Load函数上方写下数据库连接字符串/ cyd 2010.10

9、 声明连接字符串,所取值来自于Web.config文件中的键 string MyConnStr = System.Configuration.ConfigurationSettings.AppSettingsConnStr; 12. Page_Load函数如下:protected void Page_Load(object sender, EventArgs e) if (!Page.IsPostBack) bindgrid(); /cyd 2010.10 首次运行,表格绑定数据源 13 用户自定义函数bindgrid()函数如下: void bindgrid() DataSet ds = n

10、ew DataSet(); using (SqlConnection sqlconn = new SqlConnection(MyConnStr) SqlDataAdapter sqld = new SqlDataAdapter(select zgbh,xm,xb,csny,gl,gz from tb_zg, sqlconn); sqld.Fill(ds, tb_zg); /cyd 2010.10 判断是否已经进行排序,如果是则按照ViewState中存储的信息生成排序后的DataView对象 if (ViewStateSortDirection = null) GridView1.DataS

11、ource = ds.Tablestb_zg.DefaultView; else DataView SortedDV = new DataView(ds.Tablestb_zg); SortedDV.Sort = ViewStateSortExpression.ToString() + + ViewStateSortDirection.ToString(); GridView1.DataSource = SortedDV; GridView1.DataBind(); 14. GridView1的Sorting事件代码如下:protected void GridView1_Sorting(obj

12、ect sender, GridViewSortEventArgs e) if (ViewStateSortDirection = null) ViewStateSortDirection = DESC; if (ViewStateSortDirection.ToString() = ASC) ViewStateSortDirection = DESC; else ViewStateSortDirection = ASC; ViewStateSortExpression = e.SortExpression; this.bindgrid(); 15 GridView1的RowDeleting事

13、件代码如下:protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) /cyd 2010.10 设置数据库连接 SqlConnection sqlconn = new SqlConnection(MyConnStr); sqlconn.Open(); /cyd 2010.10 删除记录 String sql = delete from tb_zg where zgbh= + GridView1.DataKeyse.RowIndex.Value.ToString() + ; SqlCommand

14、Comm = new SqlCommand(sql, sqlconn); Comm.ExecuteNonQuery(); sqlconn.Close(); sqlconn = null; Comm = null; GridView1.EditIndex = -1; bindgrid(); 16 GridView1的RowEditing事件代码如下: protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) GridView1.EditIndex = e.NewEditIndex; bindgrid()

15、; 17 GridView1的RowCancelingEdit事件代码如下:protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) GridView1.EditIndex = -1; bindgrid(); 18 GridView1的RowUpdating事件代码如下:protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) SqlConnection sqlconn = ne

16、w SqlConnection(MyConnStr); /cyd 2010 修改记录 try sqlconn.Open(); SqlCommand Comm = new SqlCommand(); Comm.Connection = sqlconn; Comm.CommandText = update tb_zg set xm=xm,xb=xb,csny=csny,gl=gl,gz=gz where zgbh=zgbh; Comm.Parameters.AddWithValue(zgbh, GridView1.DataKeyse.RowIndex.Value.ToString(); /cyd

17、2010.10职工编号做为主索引,是在gridview中设置的属性DataKeyNames=zgbh Comm.Parameters.AddWithValue(xm, (TextBox)GridView1.Rowse.RowIndex.Cells1.Controls0).Text); Comm.Parameters.AddWithValue(xb, (DropDownList)GridView1.Rowse.RowIndex.Cells2.Controls1).Text); /cyd 2010.10因为性别是用下拉列表框来处理的,属于模板字段,所以为1,其它都为0 Comm.Parameter

18、s.AddWithValue(csny, (TextBox)GridView1.Rowse.RowIndex.Cells3.Controls0).Text); Comm.Parameters.AddWithValue(gl, (TextBox)GridView1.Rowse.RowIndex.Cells4.Controls0).Text); Comm.Parameters.AddWithValue(gz, (TextBox)GridView1.Rowse.RowIndex.Cells5.Controls0).Text); Comm.ExecuteNonQuery(); sqlconn.Clos

19、e(); sqlconn = null; Comm = null; catch (Exception ex) Response.Write(数据库更新出错 + ex.ToString(); GridView1.EditIndex = -1; bindgrid(); 19. GridView1的PageIndexChanging事件代码如下: protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) /cyd 2010.10 设置要显示的页的索引并重新绑定数据 GridView1.Page

20、Index = e.NewPageIndex; bindgrid(); 20. GridView1的DataBound事件代码如下: protected void GridView1_DataBound(object sender, EventArgs e) /cyd 2010.10 分页数据绑定前设置当前页信息 Label2.Text = 共 + (GridView1.PageCount).ToString() + 页; Label1.Text = 第 + (GridView1.PageIndex + 1).ToString() + 页; 21. GridView1的RowDataBound

21、事件代码如下(在该事件中解决两个问题,一是鼠标移到行上时变时;一是解决删除记录时给一次后悔机会): protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) int i; /cyd 2010.10 执行循环,保证每条数据都可以更新 for (i = 0; i = GridView1.Rows.Count; i+) /cyd 2010.10首先判断是否是数据行 if (e.Row.RowType = DataControlRowType.DataRow) /cyd 2010.10当鼠标停留时更改背景色

22、 e.Row.Attributes.Add(onmouseover, c=this.style.backgroundColor;this.style.backgroundColor=#00A9FF); /cyd 2010.10当鼠标移开时还原背景色 e.Row.Attributes.Add(onmouseout, this.style.backgroundColor=c); /* 以前用以下这段代码配合删除按钮,进行删除前确认,但是失败了,原因是两段代码冲突,后将GridView中的删除按钮列转换成 模板列,并给ItemTemplate模板中为按钮的OnClientClick事件写代码:ret

23、urn confirm(您确定要删除该条记录吗?); 就实现了删除前有确认对话框的效果 /cyd 2010.10 解决删除记录时有提示 if (e.Row.RowType = DataControlRowType.DataRow) if (e.Row.RowState = DataControlRowState.Normal | e.Row.RowState = DataControlRowState.Alternate) (Button)e.Row.Cells7.Controls0).Attributes.Add(onclick, javascript:return confirm(你确认要

24、删除: + e.Row.Cells1.Text + 吗?); */ 【结束】2010年10月30日本程序还需要解决的问题:1.将插入记录集成到GridView。2.将验证控件集成到GridView。将在下一节课中处理。作业:将工程中素材修改为以下班级表,请同学们将文件进行修改,记录自已加:字段名数据类型长度主键否描述bjhvarchar4是班级号bjmvarchar50班级名rsint4人数rxsjdatetime8入学时间bzrvarchar50班主任GridView事件总结:序号事 件说 明1PageIndexChanged在单击某一页导航按钮时,但在 GridView 控件处理分页操作之

25、后发生。此事件通常用于以下情形:在用户定位到该控件中的另一页之后,您需要执行某项任务。2PageIndexChanging在单击某一页导航按钮时,但在 GridView 控件处理分页操作之前发生。此事件通常用于取消分页操作。3RowCancelingEdit在单击某一行的“取消”按钮(其 CommandName 属性设置为“Cancel”的按钮)时,但在 GridView 控件退出编辑模式之前发生。此事件通常用于停止取消操作。4RowCommand当单击 GridView 控件中的按钮时发生。此事件通常用于在控件中单击按钮时执行某项任务。5RowCreated当在 GridView 控件中创建

26、新行时发生。此事件通常用于在创建行时修改行的内容。6RowDataBoundRowDataBound 顾名思义,行绑定的时候触发的事件,由于GridView被加载的时候不是一下子出来的,就是一行一行的出来的,每出来一行,就触发一次RowDataBound事件,最终把整个GridView加载出来,你可以针对这个事件处理相应的事情,比如,在每一行添加OnMourseOver,OnMourseOut事件,这样GridView的每一行就有了这些事件。7RowDeletedRowDeleted发生在删除数据之后。在单击某一行的“删除”按钮(其 CommandName 属性设置为“Delete”的按钮)时,但在 G

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论