1、数据绑定控件(一),2,回顾,Global.asax文件包含常用的Application_Start、Application_End、Session_Start、Session_End等事件Application对象是存储于服务器的全局变量Cookie存储信息于客户端Session对象用于在服务器端存储用户的信息,在用户结束会话时被清除新用户访问应用程序时会激活Session_Start事件,而用户退出应用程序时会触发Session_End事件,3,目标,理解数据绑定使用DataList控件使用数据视图排序和筛选在ASP.NET中使用ADO.NET的事务处理,4,数据绑定简介2-1,控件,FO
2、RM,数据,检索到的数据,数据,输出结果,欢迎“”,数据绑定是将数据链接到显示该数据的控件的过程,5,数据绑定简介2-2,用于绑定控件的表达式置于标记之间,数据绑定,简单属性,表达式,方法的结果,数据源,6,简单属性绑定,ImageUrl=red.bmprunat=serverImageUrl=red.bmprunat=serverImageUrl=red.bmprunat=server,代码视图,/定义成员变量protectedstaticintvote1=0;protectedstaticintvote2=0;protectedstaticintvote3=0;privatevoidbtn
3、Vote1_Click(objectsender,System.EventArgse)vote1+=1;this.DataBind();privatevoidbtnVote2_Click(objectsender,System.EventArgse)vote2+=1;this.DataBind();privatevoidbtnVote3_Click(objectsender,System.EventArgse)vote3+=1;this.DataBind();,HTML视图,运行结果,7,表达式绑定,ImageUrl=red.bmprunat=serverImageUrl=red.bmprun
4、at=serverImageUrl=red.bmprunat=server,代码视图,HTML视图,运行结果,/定义成员变量protectedstaticintvote1=0;protectedstaticintvote2=0;protectedstaticintvote3=0;privatevoidbtnVote1_Click(objectsender,System.EventArgse)vote1+=1;this.DataBind();privatevoidbtnVote2_Click(objectsender,System.EventArgse)vote2+=1;this.DataBin
5、d();privatevoidbtnVote3_Click(objectsender,System.EventArgse)vote3+=1;this.DataBind();,8,方法的结果绑定,protectedstringGetVotePercent(intvote)intsumVote=vote1+vote2+vote3;if(sumVote=0)return0%;elsedecimalpercent=100*(Convert.ToDecimal(vote)/Convert.ToDecimal(sumVote);returnpercent.ToString(n2)+%;,建立一个新方法,I
6、mageUrl=red.bmprunat=serverImageUrl=red.bmprunat=serverImageUrl=red.bmprunat=server,调用方法的结果绑定,运行结果,9,使用DataList控件显示数据3-1,使用Datalist控件可以指定数据流,输出结果,WELCOME,WELCOME,水平方式,垂直方式,Datalist控件,项模板,交替项模板,页脚模板,页眉模板,编辑项模板,选择项模板,分隔符模板,也可以为DataList控件设置要显示的数据列数和行数,10,使用DataList控件显示数据3-2,示例:DatalistDemo.aspx,private
7、voidPage_Load(objectsender,System.EventArgse)Response.Write(“带有交替列的数据列表”+“);if(!IsPostBack)DataTablemydt=newDataTable();DataRowmydr;mydt.Columns.Add(newDataColumn(Numbers“,typeof(Int32);mydt.Columns.Add(newDataColumn(Squares“,typeof(Int32);mydt.Columns.Add(newDataColumn(Cubes“,typeof(Int32);续,for(in
8、ti=0;i55,14,使用DataView控件3-2,employee表的DataView控件仅检索年龄大于55的职员的记录,mydv=newDataView(ds.Tablesemployee);mydv.RowFilter=age55;,Sort属性用于以递增或递减顺序为行排序,mydv.Sort=fnameASC;,递增排列,15,使用DataView控件3-3,DataView控件可以限制employee表中显示的行,privatevoidPage_Load(objectsender,System.EventArgse)Response.Write(“数据视图);SqlConnect
9、ionobjSqlConnection=newSqlConnection(server=vijayk;uid=sa;pwd=playware;database=pubs);SqlDataAdapterobjSqlAdapter=newSqlDataAdapter(select*fromemployeewherejob_id=5,objSqlConnection);DataSetobjDataSet=newDataSet();objSqlAdapter.Fill(objDataSet,employee);DataViewobjDataView=newDataView(objDataSet.Tab
10、lesemployee);objDataView.RowFilter=job_lvl180;objDataView.Sort=fnameASC;dgMyGrid.DataSource=objDataView;dgMyGrid.DataBind();,输出结果,16,事务处理5-1,ASP.NET中可用的事务处理指令,数据库级,ADO.NET级,可以在以下级别创建事务处理,ASP.NET页面级,要启用ASP.NET页面中的事务处理,请将事务处理指令添加到ASPX页面,17,privatevoidbtnTransfer_Click(objectsender,System.EventArgse)lb
11、lAccount1.Text=;lblAccount2.Text=;intCurrBalance;stringstrSQL=SelectBalanceFROMAccountwhereAccNo=+txtFrom.Text+;SqlConnectionobjSqlConnection=newSqlConnection(server=SQLDB;uid=sa;pwd=password;”+”database=Account);objSqlConnection.Open();SqlDataReaderobjReader;SqlCommandobjSqlCommand=newSqlCommand(st
12、rSQL,objSqlConnection);try续.,导入System.EnterpriseServices命名空间,使ContextUtil类可用于实现事务处理的提交和放弃方法,ASPTransactionsDemo.aspx,Transaction=“RequiresNew”指令已添加到页面,确保Asp页面上的操作将于新的事务处理开始,事务处理5-2,18,objReader=objSqlCommand.ExecuteReader();objReader.Read();CurrBalance=Convert.ToInt32(objReader.GetValue(0);objReader
13、.Close();if(CurrBalanceConvert.ToInt32(txtAmount.Text)throw(newException(“转帐金额不足);strSQL=UpdateAccountsetBalance=Balance-+txtAmount.Text+whereAccNo=+Convert.ToInt32(txtFrom.Text)+;objSqlCommand.CommandText=strSQL;objSqlCommand.ExecuteNonQuery();,事务处理5-3,19,lblAccount1.Text=“帐户+txtFrom.Text+成功记入借方;st
14、rSQL=UpdateAccountsetBalance=Balance+txtAmount.Text+whereAccNo=+Convert.ToInt32(txtTo.Text)+;objSqlCommand.CommandText=strSQL;objSqlCommand.ExecuteNonQuery();lblAccount2.Text=“帐户”+txtTo.Text+“成功记入贷方;ContextUtil.SetComplete();lblException.Text=“成功将金额+txtAmount.Text+“从帐户”+txtFrom.Text+“转帐到帐户”+txtTo.Te
15、xt+“。;catch(Exceptionex)续.,在所有事务处理均成功的事件中提交事务处理,事务处理5-4,20,ContextUtil.SetAbort();lblException.Text=“错误:+ex.Message;finallyobjSqlConnection.Close();,输出结果,在任何单项事务处理失败的事件中放弃所有事务处理,事务处理5-5,21,在ADO.NET级实现事务处理4-1,privatevoidbtnTransfer_Click(objectsender,System.EventArgse)lblAccount1.Text=;lblAccount2.Te
16、xt=;intCurrBalance;stringstrSQL=SelectBalanceFROMAccountwhereAccNo=“+txtFrom.Text+;SqlConnectionobjSqlConnection=newSqlConnection(server=VIJAYK;uid=sa;pwd=playware;database=Account);objSqlConnection.Open();SqlDataReaderobjReader;SqlCommandobjSqlCommand=newSqlCommand(strSQL,objSqlConnection);Cont.,AD
17、OTransactionDemo.aspx,导入命名空间System.Data.SqlClient,并且在在btnTransfer按钮的Click事件中添加代码,22,SqlTransactionobjSqlTransaction=objSqlConnection.BeginTransaction();objSqlCommand.Transaction=objSqlTransaction;tryobjReader=objSqlCommand.ExecuteReader();objReader.Read();CurrBalance=Convert.ToInt32(objReader.GetVal
18、ue(0);objReader.Close();if(CurrBalanceConvert.ToInt32(txtAmount.Text)throw(newException(“转帐金额不足);续.,在ADO.NET级实现事务处理4-2,23,strSQL=UpdateAccountsetBalance=Balance-+txtAmount.Text+whereAccNo=+Convert.ToInt32(txtFrom.Text)+;objSqlCommand.CommandText=strSQL;objSqlCommand.ExecuteNonQuery();lblAccount1.Tex
19、t=“帐户”+txtFrom.Text+“成功记入借方;strSQL=UpdateAccountsetBalance=Balance+txtAmount.Text+whereAccNo=+Convert.ToInt32(txtTo.Text)+;objSqlCommand.CommandText=strSQL;objSqlCommand.ExecuteNonQuery();,在ADO.NET级实现事务处理4-3,24,lblAccount2.Text=“帐户”+txtTo.Text+“成功记入贷方;objSqlTransaction.Commit();lblException.Text=“成功
20、将金额+txtAmount.Text+“从帐户”+txtFrom.Text+“转入帐户”+txtTo.Text+“。;catch(Exceptionex)objSqlTransaction.Rollback();lblException.Text=Error:+ex.Message;finallyobjSqlConnection.Close();,完成事务处理时提交变更,事务处理不成功时恢复变更,输出结果,在ADO.NET级实现事务处理4-4,25,总结2-1,数据绑定是将从数据库中检索到的数据链接到将显示这些数据的控件的过程可对多种类型的数据执行数据绑定,例如:表达式数据库数据Databinder.Eval方法DataGrid、DataList和Repeater等控件可用于连接数据库并实现对数据库数据的进行数据绑定Databinder.Eval方法用于计算运行时的数据绑定表达式,并按照浏览器显示的要求来格式化输出结果,26,总结2-2,DataList控件可用于显示数据,而且支持指定数据流模板用于将数据显示在浏览器和DataList控件中DataView可用于自定义DataTable中数据的显示。DataView中的数据可进行筛选、搜索和排列ADO.NET级的事务处理可以通过SqlTransaction类的方法来应用。可通过使用事务处理指令来指示页面上的事务处理支持级,
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100