GridView1删除修改字段类型全而且用GridView集成处理.docx

上传人:b****6 文档编号:5607968 上传时间:2022-12-29 格式:DOCX 页数:20 大小:308.84KB
下载 相关 举报
GridView1删除修改字段类型全而且用GridView集成处理.docx_第1页
第1页 / 共20页
GridView1删除修改字段类型全而且用GridView集成处理.docx_第2页
第2页 / 共20页
GridView1删除修改字段类型全而且用GridView集成处理.docx_第3页
第3页 / 共20页
GridView1删除修改字段类型全而且用GridView集成处理.docx_第4页
第4页 / 共20页
GridView1删除修改字段类型全而且用GridView集成处理.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

GridView1删除修改字段类型全而且用GridView集成处理.docx

《GridView1删除修改字段类型全而且用GridView集成处理.docx》由会员分享,可在线阅读,更多相关《GridView1删除修改字段类型全而且用GridView集成处理.docx(20页珍藏版)》请在冰豆网上搜索。

GridView1删除修改字段类型全而且用GridView集成处理.docx

GridView1删除修改字段类型全而且用GridView集成处理

详细

学习内容:

TemplatedField模板列技术、使用绑定列技术、鼠标所在行颜色提示、绑定列中使用下拉列表框、设置字段的ControlStyle属性

 

1.在VS2008中建立Web项目。

2.在Windows环境下将数据库jyxystu.mdf(命名含义为教育学院学生)和jyxystu.ldf拷贝到项目的App_Data目录下,并在VS中添加的项目中。

3.在SQLServer2000中附加数据库jyxystu.mdf。

4.在数据库中建立一个表:

tb_zg(命名含义为职工表,以tb开头意思是本对象是一个表),表结构如下:

 

字段名

数据类型

长度

主键否

描述

zgbh

varchar

4

职工编号

xm

varchar

50

职工姓名

xb

varchar

2

性别

csny

datetime

8

出生年月

gl

int

4

职工工龄

gz

float

8

职工工资

 

5.录入若干条记录(为了看出效果,记录数至少20条)

6.修改web.config文件,

(1)删除下方的

(2)在位置下增加:

7.在项目中添加Web窗体mygridview.aspx(文件名含义为按类查询)

8.布局控件如下:

一个GridView,在GridView下方有两个label,准备显示第x页共y页。

ID属性分别是Label1和Label2。

GridView1自动套用格式为"雪松"。

AutoGenerateColumns="False"

AllowSorting="True"

AllowPaging="True"

PageSize="10"

因为要采用分页技术所以需要再设置PagerSettings属性

FirstPageText="首页"

LastPageText="尾页"

NextPageText="下一页"

PreviousPageText="上一页"

Mode="NextPreviousFirstLast"

把GridView中的FontSize设为small。

GridView的DataKeyNames属性为"zgbh"

GridView1编辑列界面如下(通过“添加列”),如图所示:

 

其中在“选定的字段”下各字段的属性设置如下:

可用字段类型

选定的字段

DataField属性

HeaderText属性

SortExpression属性

readonly属性

ControlStyleWidth属性

DataFormatString

BoundField

职工编号

zgbh

职工编号

zgbh

True

BoundField

姓名

xm

姓名

80px

TemplateField

性别

性别

40px

BoundField

出生年月

csny

出生年月

csny

120px

{0:

yyyy-MM-dd}

或{0:

d}

BoundField

工龄

gl

工龄

gl

30px

BoundField

工资

gz

工资

gz

60px

{0:

c}

会显示货币符号

CommandField

编辑

编辑

TemplateField

删除

删除

备注:

1.ControlStyleWidth属性是解决GridView进入编辑状态后表格列宽紊乱的问题,对文本框进行强制宽度设置。

2.DataFormatString属性是解决数据显示问题的,在此例中引入该属性是为了控制日期型数据显示为2010-10-11格式的。

此外:

编辑按钮还需设置属性:

ShowEditButton="True"

删除按钮还需设置属性:

ButtonType="Button"CommandName="delete"Text="删除"

补充知识DataFormatString属性常见取值:

{0:

c}货币格式

{0:

d}短日期2010-10-12

{0:

D}长日期2010年10月12日

{0:

000.0}四舍五入小数点保留第几位有效数字;

{0:

N2}小数点保留2位有效数字;{0:

N2}%  小数点保留2位有效数字加百分号;

{0:

yy-MM-dd}  例如07-3-25;;{0:

yyyy-MM-dd} 例如2007-3-25

9.切换到源视图,补充性别绑定列的HTML代码。

TemplateFieldHeaderText="性别">

DropDownListID="DropDownList2"runat="server"selectedvalue='<%#bind("xb")%>'>

ListItem>男

ListItem>

ListItem>女

ListItem>

DropDownList>

LabelID="Label1"runat="server"Text='<%#Bind("xb")%>'>

Label>

TemplateField>

说明:

(1)希望网页运行后,当GridView进入编辑状态后,在性别列处显示的是下拉列表框,在下拉列表框中有男、女两个选项供选择,要比提供文本框输入男和女,显得界面更友好,如果单纯用文本框输入,就不用搞这么复杂了,直接用一个BoundField列就可以了。

(2)除手工在源视图下填写代码外,另外一种正规方法是在GridView上点智能标记,调用快捷菜单“编辑模板”,然后选Column[2]-性别,进入模板列编辑状态,在此图中可设插入控件,编辑完后点“结束模板编辑”按钮返回,如果同学们采用这种方法,那么在设计完后,对照一下HTML代码,看有无缺漏。

另外ItemTemplate是浏览状态下的控件显示。

EditItemTemplate是编辑状态下的控件显示。

(3)使用Bind方法可将修改后的数据写回,通常在数据绑定控件的EditItemTemplate或InsertItemTemplate模板中使用Bind方法,并将字段名称传递给它,以显示和编辑字段数据,双向绑定语法格式如下:

'<%#Bind("字段名")%>'

 

 

(4)在编辑模板状态下,在ItemTemplate模板中为“删除”按钮设置以下这些属性。

关键是CommandName="delete"OnClientClick="returnconfirm("您确定要删除该条记录吗?

");"

10.导入命名空间:

usingSystem.Data.SqlClient;//cyd2010.10导入命名空间,此例就不用类来处理了

11.在Page_Load函数上方写下数据库连接字符串

//cyd2010.10声明连接字符串,所取值来自于Web.config文件中的键

stringMyConnStr=System.Configuration.ConfigurationSettings.AppSettings["ConnStr"];

12.Page_Load函数如下:

protectedvoidPage_Load(objectsender,EventArgse)

{

if(!

Page.IsPostBack)bindgrid();//cyd2010.10首次运行,表格绑定数据源

}

13.用户自定义函数bindgrid()函数如下:

voidbindgrid()

{

DataSetds=newDataSet();

using(SqlConnectionsqlconn=newSqlConnection(MyConnStr))

{

SqlDataAdaptersqld=newSqlDataAdapter("selectzgbh,xm,xb,csny,gl,gzfromtb_zg",sqlconn);

sqld.Fill(ds,"tb_zg");

}

//cyd2010.10判断是否已经进行排序,如果是则按照ViewState中存储的信息生成排序后的DataView对象

if(ViewState["SortDirection"]==null)

GridView1.DataSource=ds.Tables["tb_zg"].DefaultView;

else

{

DataViewSortedDV=newDataView(ds.Tables["tb_zg"]);

SortedDV.Sort=ViewState["SortExpression"].ToString()+""+ViewState["SortDirection"].ToString();

GridView1.DataSource=SortedDV;

}

GridView1.DataBind();

}

14.GridView1的Sorting事件代码如下:

protectedvoidGridView1_Sorting(objectsender,GridViewSortEventArgse)

{

if(ViewState["SortDirection"]==null)ViewState["SortDirection"]="DESC";

if(ViewState["SortDirection"].ToString()=="ASC")

ViewState["SortDirection"]="DESC";

else

ViewState["SortDirection"]="ASC";

ViewState["SortExpression"]=e.SortExpression;

this.bindgrid();

}

15.GridView1的RowDeleting事件代码如下:

protectedvoidGridView1_RowDeleting(objectsender,GridViewDeleteEventArgse)

{

//cyd2010.10设置数据库连接

SqlConnectionsqlconn=newSqlConnection(MyConnStr);

sqlconn.Open();

//cyd2010.10删除记录

Stringsql="deletefromtb_zgwherezgbh='"+GridView1.DataKeys[e.RowIndex].Value.ToString()+"'";

SqlCommandComm=newSqlCommand(sql,sqlconn);

Comm.ExecuteNonQuery();

sqlconn.Close();

sqlconn=null;

Comm=null;

GridView1.EditIndex=-1;

bindgrid();

}

16.GridView1的RowEditing事件代码如下:

protectedvoidGridView1_RowEditing(objectsender,GridViewEditEventArgse)

{

GridView1.EditIndex=e.NewEditIndex;

bindgrid();

}

17.GridView1的RowCancelingEdit事件代码如下:

protectedvoidGridView1_RowCancelingEdit(objectsender,GridViewCancelEditEventArgse)

{

GridView1.EditIndex=-1;

bindgrid();

}

18.GridView1的RowUpdating事件代码如下:

protectedvoidGridView1_RowUpdating(objectsender,GridViewUpdateEventArgse)

{

SqlConnectionsqlconn=newSqlConnection(MyConnStr);

//cyd2010修改记录

try

{

sqlconn.Open();

SqlCommandComm=newSqlCommand();

Comm.Connection=sqlconn;

Comm.CommandText="updatetb_zgsetxm=@xm,xb=@xb,csny=@csny,gl=@gl,gz=@gzwherezgbh=@zgbh";

Comm.Parameters.AddWithValue("@zgbh",GridView1.DataKeys[e.RowIndex].Value.ToString());//cyd2010.10职工编号做为主索引,是在gridview中设置的属性DataKeyNames="zgbh"

Comm.Parameters.AddWithValue("@xm",((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text);

Comm.Parameters.AddWithValue("@xb",((DropDownList)GridView1.Rows[e.RowIndex].Cells[2].Controls[1]).Text);//cyd2010.10因为性别是用下拉列表框来处理的,属于模板字段,所以为1,其它都为0

Comm.Parameters.AddWithValue("@csny",((TextBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0]).Text);

Comm.Parameters.AddWithValue("@gl",((TextBox)GridView1.Rows[e.RowIndex].Cells[4].Controls[0]).Text);

Comm.Parameters.AddWithValue("@gz",((TextBox)GridView1.Rows[e.RowIndex].Cells[5].Controls[0]).Text);

Comm.ExecuteNonQuery();

sqlconn.Close();

sqlconn=null;

Comm=null;

}

catch(Exceptionex)

{

Response.Write("数据库更新出错"+ex.ToString());

}

GridView1.EditIndex=-1;

bindgrid();

}

19.GridView1的PageIndexChanging事件代码如下:

protectedvoidGridView1_PageIndexChanging(objectsender,GridViewPageEventArgse)

{

//cyd2010.10设置要显示的页的索引并重新绑定数据

GridView1.PageIndex=e.NewPageIndex;

bindgrid();

}

20.GridView1的DataBound事件代码如下:

protectedvoidGridView1_DataBound(objectsender,EventArgse)

{

//cyd2010.10分页数据绑定前设置当前页信息

Label2.Text="共"+(GridView1.PageCount).ToString()+"页";

Label1.Text="第"+(GridView1.PageIndex+1).ToString()+"页";

}

21.GridView1的RowDataBound事件代码如下(在该事件中解决两个问题,一是鼠标移到行上时变时;一是解决删除记录时给一次后悔机会):

protectedvoidGridView1_RowDataBound(objectsender,GridViewRowEventArgse)

{inti;

//cyd2010.10执行循环,保证每条数据都可以更新

for(i=0;i<=GridView1.Rows.Count;i++)

{//cyd2010.10首先判断是否是数据行

if(e.Row.RowType==DataControlRowType.DataRow)

{//cyd2010.10当鼠标停留时更改背景色

e.Row.Attributes.Add("onmouseover","c=this.style.backgroundColor;this.style.backgroundColor='#00A9FF'");

//cyd2010.10当鼠标移开时还原背景色

e.Row.Attributes.Add("onmouseout","this.style.backgroundColor=c");

}

}

/*以前用以下这段代码配合删除按钮,进行删除前确认,但是失败了,原因是两段代码冲突,后将GridView中的删除按钮列转换成

模板列,并给ItemTemplate模板中为按钮的OnClientClick事件写代码:

returnconfirm("您确定要删除该条记录吗?

");就实现了删除前有确认对话框的效果

//cyd2010.10解决删除记录时有提示

if(e.Row.RowType==DataControlRowType.DataRow)

{

if(e.Row.RowState==DataControlRowState.Normal||e.Row.RowState==DataControlRowState.Alternate)

{

((Button)e.Row.Cells[7].Controls[0]).Attributes.Add("onclick","javascript:

returnconfirm('你确认要删除:

\""+e.Row.Cells[1].Text+"\"吗?

')");

}

}

*/

}

 

【结束】

2010年10月30日

本程序还需要解决的问题:

1.将插入记录集成到GridView。

2.将验证控件集成到GridView。

将在下一节课中处理。

 

作业:

将工程中素材修改为以下班级表,请同学们将文件进行修改,记录自已加:

字段名

数据类型

长度

主键否

描述

bjh

varchar

4

班级号

bjm

varchar

50

班级名

rs

int

4

人数

rxsj

datetime

8

入学时间

bzr

varchar

50

班主任

 

GridView事件总结:

序号

事件

说明

1

PageIndexChanged

在单击某一页导航按钮时,但在GridView控件处理分页操作之后发生。

此事件通常用于以下情形:

在用户定位到该控件中的另一页之后,您需要执行某项任务。

2

PageIndexChanging

在单击某一页导航按钮时,但在GridView控件处理分页操作之前发生。

此事件通常用于取消分页操作。

3

RowCancelingEdit

在单击某一行的“取消”按钮(其CommandName属性设置为“Cancel”的按钮)时,但在GridView控件退出编辑模式之前发生。

此事件通常用于停止取消操作。

4

RowCommand

当单击GridView控件中的按钮时发生。

此事件通常用于在控件中单击按钮时执行某项任务。

5

RowCreated

当在GridView控件中创建新行时发生。

此事件通常用于在创建行时修改行的内容。

6

RowDataBound

RowDataBound顾名思义,行绑定的时候触发的事件,由于GridView被加载的时候不是一下子出来的,就是一行一行的出来的,每出来一行,就触发一次RowDataBound事件,最终把整个GridView加载出来,你可以针对这个事件处理相应的事情,比如,在每一行添加OnMourseOver,OnMourseOut事件,这样GridView的每一行就有了这些事件。

7

RowDeleted

RowDeleted发生在删除数据之后。

在单击某一行的“删除”按钮(其CommandName属性设置为“Delete”的按钮)时,但在GridView控件从数据源中删除相应记录之后发生。

此事件通常用于检查删除操作的结果。

8

RowDeleting

RowDeleting发生在删除数据之前,在单击某一行的“删除”按钮(其CommandName属性设置为“Delete”的按钮)时,但在GridView控件从数据源中删除相应记录之前发生。

此事件通常用于取消删除操作。

9

RowEditing

在GridView中的行进入编辑模式之前,引发RowEditing事件,如果您需要在编辑记录前进行某些预处理,可以在这里操作。

发生在单击某一行的“编辑”按钮(其CommandName属性设置为“Edit”的按钮)以后,GridView控件进入编辑模式之前。

此事件通常用于取消编辑操作。

10

RowUpdated

RowUpdated发生在更新数据源之后。

发生在单击某一行的“更新”按钮(其CommandName属性设置为“Update”的按钮),并且GridView控件对该行进行更新之后。

此事件通常用于检查更新操作的结果。

11

RowUpdating

RowUpdating事件发生在更新数据源之前,发生在单击某一行的“更新”按钮以后,GridView控件对该行进行更新之前。

此事件通常用于取消更新操作。

12

Sele

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1