首页 > 代码库 > 数据源控件
数据源控件
数据绑定:
【1】手动查找数据
(1).获得数据一般要是一个集合
(2).把这个集合赋给控件的DataSource属性-----对于CS,只需要前两步就可以完成数据的绑定
(3).执行这个空间的DataBind()方法。
【2】使用数据源控件
(1).对于数据源控件上的【SELECT】所有数据-----GetModelList()方法,默认是传参NULL,但是东软生成的代码有点缺陷,所以得将其在DAL的方法进行修改:
1 /// <summary> 2 /// 获得所有数据列表 3 /// </summary> 4 public DataSet GetList(string strWhere) 5 { 6 StringBuilder strSql = new StringBuilder(); 7 strSql.Append("select TypeId,TypeName,Price,AddBed,BedPrice,Remark "); 8 strSql.Append(" FROM RoomType "); 9 if (strWhere != null && strWhere.Trim() != "")10 {11 strSql.Append(" where " + strWhere);12 }13 return DbHelperSQL.Query(strSql.ToString());14 }
-------------------PS:其中这一句 if (strWhere != null && strWhere.Trim() != "") 是将其未考虑到的情况加入!!
(2).使用数据源控件【删除】操作时会报错,是因为【ObjectDataSource】的【DataObjectTypeName】属性默认的设置为 Model.RoomType,即在执行【查询】【更新】【删除】操作时,传的参数都是Model模型,不能只传 int 类型的 TypeId .!!
所以,应对错误的解决方案为:重载一个传Model的方法 Delete(Model.RoomType model):
1 /// <summary> 2 /// 删除一条数据 3 /// 重载了下面那个删除方法,并且调用了下面那个删除方法 4 /// </summary> 5 public bool Delete(Model.RoomType model) 6 { 7 return Delete(model.TypeId); 8 } 9 10 /// <summary>11 /// 删除一条数据12 /// </summary>13 public bool Delete(int TypeId)14 {15 16 return dal.Delete(TypeId);17 }
-----------------PS:此时点击【删除】事件还是会犯错,这是因为没有指定控件 【GridView】 的 【DataKeyNames】属性-----------DataKeyNames="TypeId",这样就OK
----------------PS:对于无用的 ID 列可以进行隐藏,不让用户看到!!!!此时无影响
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
以GridView【更新】为例介绍几个事件发生的先后顺序:
1).GridView控件的GridView1_RowUpdating()--------------此时参数 e 中是零散的 Model 的个属性的值
2).数据源控件的ods_Updating()------------------------此时参数 e 中是一个 Model 模型,是将上一步中的各个零散的属性值组合起来的
(前两个事件,由于是在调用【更新】代码之前触发的,所以可以对用户更新的数据进行校验或修改)
3).调用了业务逻辑层的【更新】方法(处理更新)
4).数据源控件的GridView1_RowUpdated()
5).控件的ods_Updated()
(后两个方法,可以通过判断e.Exception是否为空,来判断在程序的第3步执行中有没有发生异常,e.ExceptionHandled---表示在程序中处理更新操作过程中引发的异常已被处理)
1 /// <summary> 2 /// 第一个处理 3 /// </summary> 4 /// <param name="sender"></param> 5 /// <param name="e"></param> 6 protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) 7 { 8 //TODO:可以对用户更新的数据进行校验或修改 9 10 //此时参数 e 中是零散的 Model 的个属性的值11 }12 13 /// <summary>14 /// 第二个处理15 /// </summary>16 /// <param name="sender"></param>17 /// <param name="e"></param>18 protected void ods_Updating(object sender, ObjectDataSourceMethodEventArgs e)19 {20 //TODO:可以对用户更新的数据进行校验或修改21 22 //此时参数 e 中是一个 Model 模型,是将上一步中的各个零散的属性值组合起来的23 }24 25 /// <summary>26 /// 第三个处理27 /// </summary>28 /// <param name="sender"></param>29 /// <param name="e"></param>30 protected void GridView1_RowUpdated(object sender, GridViewUpdatedEventArgs e)31 {32 if (e.Exception != null)33 {34 //作异常的处理35 Maticsoft.Common.MessageBox.Show(this, "更新时出错!");36 37 //设为True,表示在程序中处理更新操作过程中引发的异常已被处理。38 e.ExceptionHandled = true;39 }40 41 }42 43 /// <summary>44 /// 第四个处理45 /// </summary>46 /// <param name="sender"></param>47 /// <param name="e"></param>48 protected void ods_Updated(object sender, ObjectDataSourceStatusEventArgs e)49 {50 //TODO:可以通过判断e.Exception是否为空,来判断在程序的第3步执行中有没有发生异常51 }
数据源控件