GridView1删除修改字段类型全而且用GridView集成处理Word文档下载推荐.docx
《GridView1删除修改字段类型全而且用GridView集成处理Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《GridView1删除修改字段类型全而且用GridView集成处理Word文档下载推荐.docx(20页珍藏版)》请在冰豆网上搜索。
下方的<
appSettings/>
(2)在<
位置下增加:
<
appSettings>
addkey="
ConnStr"
value="
Server=localhost;
uid=sa;
pwd=;
database=jyxystu"
>
<
/add>
/appSettings>
7.在项目中添加Web窗体mygridview.aspx(文件名含义为按类查询)
8.布局控件如下:
一个GridView,在GridView下方有两个label,准备显示第x页共y页。
ID属性分别是Label1和Label2。
GridView1自动套用格式为"
雪松"
。
AutoGenerateColumns="
False"
AllowSorting="
True"
AllowPaging="
PageSize="
10"
因为要采用分页技术所以需要再设置PagerSettings属性
FirstPageText="
首页"
LastPageText="
尾页"
NextPageText="
下一页"
PreviousPageText="
上一页"
Mode="
NextPreviousFirstLast"
把GridView中的FontSize设为small。
GridView的DataKeyNames属性为"
zgbh"
GridView1编辑列界面如下(通过“添加列”),如图所示:
其中在“选定的字段”下各字段的属性设置如下:
可用字段类型
选定的字段
DataField属性
HeaderText属性
SortExpression属性
readonly属性
ControlStyleWidth属性
DataFormatString
BoundField
True
姓名
80px
TemplateField
40px
120px
{0:
yyyy-MM-dd}
或{0:
d}
工龄
30px
工资
60px
c}
会显示货币符号
CommandField
编辑
删除
备注:
1.ControlStyleWidth属性是解决GridView进入编辑状态后表格列宽紊乱的问题,对文本框进行强制宽度设置。
2.DataFormatString属性是解决数据显示问题的,在此例中引入该属性是为了控制日期型数据显示为2010-10-11格式的。
此外:
编辑按钮还需设置属性:
ShowEditButton="
删除按钮还需设置属性:
ButtonType="
Button"
CommandName="
delete"
Text="
删除"
补充知识DataFormatString属性常见取值:
c}货币格式
d}短日期2010-10-12
D}长日期2010年10月12日
000.0}四舍五入小数点保留第几位有效数字;
N2}小数点保留2位有效数字;
N2}%
小数点保留2位有效数字加百分号;
yy-MM-dd}
例如07-3-25;
;
yyyy-MM-dd}
例如2007-3-25
9.切换到源视图,补充性别绑定列的HTML代码。
asp:
TemplateFieldHeaderText="
性别"
EditItemTemplate>
DropDownListID="
DropDownList2"
runat="
server"
selectedvalue='
%#bind("
xb"
)%>
'
ListItem>
男<
/asp:
女<
DropDownList>
/EditItemTemplate>
ItemTemplate>
LabelID="
Label1"
Text='
%#Bind("
Label>
/ItemTemplate>
ControlStyleWidth="
40px"
/>
TemplateField>
说明:
(1)希望网页运行后,当GridView进入编辑状态后,在性别列处显示的是下拉列表框,在下拉列表框中有男、女两个选项供选择,要比提供文本框输入男和女,显得界面更友好,如果单纯用文本框输入,就不用搞这么复杂了,直接用一个BoundField列就可以了。
(2)除手工在源视图下填写代码外,另外一种正规方法是在GridView上点智能标记,调用快捷菜单“编辑模板”,然后选Column[2]-性别,进入模板列编辑状态,在此图中可设插入控件,编辑完后点“结束模板编辑”按钮返回,如果同学们采用这种方法,那么在设计完后,对照一下HTML代码,看有无缺漏。
另外ItemTemplate是浏览状态下的控件显示。
EditItemTemplate是编辑状态下的控件显示。
(3)使用Bind方法可将修改后的数据写回,通常在数据绑定控件的EditItemTemplate或InsertItemTemplate模板中使用Bind方法,并将字段名称传递给它,以显示和编辑字段数据,双向绑定语法格式如下:
字段名"
(4)在编辑模板状态下,在ItemTemplate模板中为“删除”按钮设置以下这些属性。
关键是CommandName="
OnClientClick="
returnconfirm("
您确定要删除该条记录吗?
"
);
10.导入命名空间:
usingSystem.Data.SqlClient;
//cyd2010.10导入命名空间,此例就不用类来处理了
11.在Page_Load函数上方写下数据库连接字符串
//cyd2010.10声明连接字符串,所取值来自于Web.config文件中的键
stringMyConnStr=System.Configuration.ConfigurationSettings.AppSettings["
];
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["
].DefaultView;
else
DataViewSortedDV=newDataView(ds.Tables["
]);
SortedDV.Sort=ViewState["
SortExpression"
].ToString()+"
"
+ViewState["
].ToString();
GridView1.DataSource=SortedDV;
GridView1.DataBind();
14.GridView1的Sorting事件代码如下:
protectedvoidGridView1_Sorting(objectsender,GridViewSortEventArgse)
]==null)ViewState["
]="
DESC"
;
].ToString()=="
ASC"
)
ViewState["
]=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;
17.GridView1的RowCancelingEdit事件代码如下:
protectedvoidGridView1_RowCancelingEdit(objectsender,GridViewCancelEditEventArgse)
18.GridView1的RowUpdating事件代码如下:
protectedvoidGridView1_RowUpdating(objectsender,GridViewUpdateEventArgse)
//cyd2010修改记录
try
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="
@xm"
((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text);
@xb"
((DropDownList)GridView1.Rows[e.RowIndex].Cells[2].Controls[1]).Text);
//cyd2010.10因为性别是用下拉列表框来处理的,属于模板字段,所以为1,其它都为0
@csny"
((TextBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0]).Text);
@gl"
((TextBox)GridView1.Rows[e.RowIndex].Cells[4].Controls[0]).Text);
@gz"
((TextBox)GridView1.Rows[e.RowIndex].Cells[5].Controls[0]).Text);
catch(Exceptionex)
Response.Write("
数据库更新出错"
+ex.ToString());
19.GridView1的PageIndexChanging事件代码如下:
protectedvoidGridView1_PageIndexChanging(objectsender,GridViewPageEventArgse)
//cyd2010.10设置要显示的页的索引并重新绑定数据
GridView1.PageIndex=e.NewPageIndex;
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当鼠标移开时还原背景色
onmouseout"
this.style.backgroundColor=c"
/*以前用以下这段代码配合删除按钮,进行删除前确认,但是失败了,原因是两段代码冲突,后将GridView中的删除按钮列转换成
模板列,并给ItemTemplate模板中为按钮的OnClientClick事件写代码:
您确定要删除该条记录吗?
就实现了删除前有确认对话框的效果
//cyd2010.10解决删除记录时有提示
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
班级号
bjm
班级名
rs
人数
rxsj
入学时间
bzr
班主任
GridView事件总结:
序号
事件
说明
1
PageIndexChanged
在单击某一页导航按钮时,但在GridView控件处理分页操作之后发生。
此事件通常用于以下情形:
在用户定位到该控件中的另一页之后,您需要执行某项任务。
PageIndexChanging
在单击某一页导航按钮时,但在GridView控件处理分页操作之前发生。
此事件通常用于取消分页操作。
3
RowCancelingEdit
在单击某一行的“取消”按钮(其CommandName属性设置为“Cancel”的按钮)时,但在GridView控件退出编辑模式之前发生。
此事件通常用于停止取消操作。
RowCommand
当单击GridView控件中的按钮时发生。
此事件通常用于在控件中单击按钮时执行某项任务。
5
RowCreated
当在GridView控件中创建新行时发生。
此事件通常用于在创建行时修改行的内容。
6
RowDataBound
RowDataBound顾名思义,行绑定的时候触发的事件,由于GridView被加载的时候不是一下子出来的,就是一行一行的出来的,每出来一行,就触发一次RowDataBound事件,最终把整个GridView加载出来,你可以针对这个事件处理相应的事情,比如,在每一行添加OnMourseOver,OnMourseOut事件,这样GridView的每一行就有了这些事件。
7
RowDeleted
RowDeleted发生在删除数据之后。
在单击某一行的“删除”按钮(其CommandName属性设置为“Delete”的按钮)时,但在GridView控件从数据源中删除相应记录之后发生。
此事件通常用于检查删除操作的结果。
RowDeleting
RowDeleting发生在删除数据之前,在单击某一行的“删除”按钮(其CommandName属性设置为“Delete”的按钮)时,但在GridView控件从数据源中删除相应记录之前发生。
此事件通常用于取消删除操作。
9
RowEditing
在GridView中的行进入编辑模式之前,引发RowEditing事件,如果您需要在编辑记录前进行某些预处理,可以在这里操作。
发生在单击某一行的“编辑”按钮(其CommandName属性设置为“Edit”的按钮)以后,GridView控件进入编辑模式之前。
此事件通常用于取消编辑操作。
10
RowUpdated
RowUpdated发生在更新数据源之后。
发生在单击某一行的“更新”按钮(其CommandName属性设置为“Update”的按钮),并且GridView控件对该行进行更新之后。
此事件通常用于检查更新操作的结果。
11
RowUpdating
RowUpdating事件发生在更新数据源之前,发生在单击某一行的“更新”按钮以后,GridView控件对该行进行更新之前。
此事件通常用于取消更新操作。
12
Sele