2019独角兽企业重金招聘Python工程师标准>>>

在使用ObjectDataSource控件的时候,可以设置其SelectMethod、InsertMethod、UpdateMethod与DeleteMethod属性,以便决定要使用业务对象的哪些方法来读取、新建、修改与删除数据,这些方法都可以接受参数。同时,GridView、DetailsView与FormView等数据绑定控件会自动创建所需参数的集合。

ObjectDataSource控件使用反射来匹配它的参数和被调用的方法的参数。参数的顺序和大小写并不重要,但是必须注意参数的名称。

1 传递参数给业务对象的InsertMethod、UpdateMethod与DeleteMethod

1.1 业务对象方法

public DataSet GetAllList()
 {
      return GetList("");
 }

public bool Add(string UserName, string Password)
{
           Ced.Model.User model = new Ced.Model.User();
           model.UserName = UserName;
           model.Password = Password;
           return dal.Add(model);
}

public bool Update(string UserName, string Password)
 {
           Ced.Model.User model = new Ced.Model.User();
           model.UserName = UserName;
           model.Password = Password;
           return dal.Update(model);
}
 public bool Delete(string UserName)
 {  
          return dal.Delete(UserName);
 }

public Ced.Model.User GetModel(string UserName)
 {  
      return dal.GetModel(UserName);
 }

1.2 在页面中添加控件

<asp:GridView ID="GridView1" runat="server" DataKeyNames="UserName"
       DataSourceID="ObjectDataSource1">
       <Columns>
           <asp:CommandField ShowDeleteButton="True" ShowEditButton="True"
               ShowSelectButton="True" />
           <asp:HyperLinkField DataNavigateUrlFields="username"
               DataNavigateUrlFormatString="Detail.aspx?username={0}" DataTextField="username"
               DataTextFormatString="{0}的详细信息" HeaderText="详细" />
       </Columns>
   </asp:GridView>

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
       DeleteMethod="Delete" InsertMethod="Add"
       SelectMethod="GetAllList" TypeName="Ced.BLL.User" UpdateMethod="Update">
   </asp:ObjectDataSource>

<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False"
           DataSourceID="ObjectDataSource2" Height="50px" Width="125px">
           <Fields>
               <asp:BoundField DataField="UserName" HeaderText="UserName"
                   SortExpression="UserName" />
               <asp:BoundField DataField="Password" HeaderText="Password"
                   SortExpression="Password" />
               <asp:CommandField ShowDeleteButton="True" ShowEditButton="True"
                   ShowInsertButton="True" />
           </Fields>
       </asp:DetailsView>
       <asp:ObjectDataSource ID="ObjectDataSource2" runat="server"
           DeleteMethod="Delete" InsertMethod="Add"
           SelectMethod="GetModel" TypeName="Ced.BLL.User" UpdateMethod="Update">
           <DeleteParameters>
               <asp:Parameter Name="UserName" Type="String" />
           </DeleteParameters>
           <UpdateParameters>
               <asp:Parameter Name="UserName" Type="String" />
               <asp:Parameter Name="Password" Type="String" />
           </UpdateParameters>
           <SelectParameters>
               <asp:ControlParameter ControlID="GridView1" Name="UserName"
                   PropertyName="SelectedValue" Type="String" />
           </SelectParameters>
       </asp:ObjectDataSource>

2 使用对象传递参数给业务对象的InsertMethod、UpdateMethod与DeleteMethod

2.1 给业务对象新增如下的方法,方法参数为实体对象

public bool Add(Ced.Model.User model)
 {
      return dal.Add(model);
 }

public bool Update(Ced.Model.User model)
 {
       return dal.Update(model);
 }

public bool Delete(Model.User user)
{

return Delete(user.UserName);
}

2.2 设置ObjectDataSource的DataObjectTypeName属性

要通过实体对象来传递参数,必须将ObjectDataSource的DataObjectTypeName属性设置为自定义的实体类名称。且实体类必须有一个默认的构造方法,且公用属性必须拥有get、set访问器。同时,DataObjectTypeName属性只会影响InsertMethod、UpdateMethod与DeleteMethod,不会影响SelectMethod。

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DataObjectTypeName="Ced.Model.User"
       DeleteMethod="Delete" InsertMethod="Add"
       SelectMethod="GetAllList" TypeName="Ced.BLL.User" UpdateMethod="Update">
   </asp:ObjectDataSource>

需要注意的是,设置了ObjectDataSource的DataObjectTypeName属性后,如果所绑定的业务对象没有包含参数为实体对象的InsertMethod、UpdateMethod与DeleteMethod,则会运行报错,提示找不到相应方法。

转载于:https://my.oschina.net/jackguo/blog/269715

ObjectDataSource使用初步相关推荐

  1. TensorRT 7.2.1开发初步

    TensorRT 7.2.1开发初步 TensorRT 7.2.1开发人员指南演示了如何使用C ++和Python API来实现最常见的深度学习层.它显示了如何采用深度学习框架构建现有模型,并使用该模 ...

  2. SOC,System on-a-Chip技术初步

    SOC,System on-a-Chip技术初步 S O C(拼作S-O-C)是一种集成电路,它包含了电子系统在单个芯片上所需的所有电路和组件.它可以与传统的计算机系统形成对比,后者由许多不同的组件组 ...

  3. 与ObjectDataSource共舞

    4,ORM组件XCode(与ObjectDataSource共舞) XCode为了能更方便的解决大部分问题,不得不"屈身"于ObjectDataSource. 先上一个经典例子(O ...

  4. 《OpenCV3编程入门》学习笔记3 HighGUI图形用户界面初步

    第3章 HighGUI图形用户界面初步 3.1 图像的载入.显示和输出到文件 1.OpenCV命名空间2种访问方法 (1)代码开头加:usingnamespace cv; (2)每个类或函数前加:cv ...

  5. 初步判断内存泄漏方法

    有时候,内存泄漏不明显,或者怀疑系统有内存泄漏,我们可以通过下面介绍的方法初步确认系统是否存在内存泄漏. 首先在Java命令行中增加-verbose:gc参数, 然后重新启动java进程. 当系统运行 ...

  6. android蓝牙4.0(BLE)开发之ibeacon初步

    一个april beacon里携带的信息如下 ? 1 <code class=" hljs ">0201061AFF4C0002159069BDB88C11416BAC ...

  7. 游戏AI之初步介绍(0)

    目录 游戏AI是什么? 游戏AI和理论AI 智能的假象 (更新)游戏AI和机器学习 介绍一些游戏AI 4X游戏AI <求生之路>系列 角色扮演/沙盒游戏中的NPC 游戏AI 需要学些什么? ...

  8. 【转】ibatis的简介与初步搭建应用

    [转]ibatis的简介与初步搭建应用 一.ibatis的简介 ibatis是什么东西就不介绍了,自己去找谷老师. 这里讲下自己的使用体会.之前自己学过Hibernate,是看尚学堂的视频教学的,看完 ...

  9. 初步了解:使用JavaScript进行表达式(De Do Do Do,De Da Da Da)

    by Donavon West 由Donavon West 初步了解:使用JavaScript进行表达式(De Do Do Do,De Da Da Da) (A first look: do expr ...

最新文章

  1. Java学习总结:41(文件操作类:File)
  2. spark 决策树分类算法demo
  3. python中提供怎样的内置库、可以用来创建用户界面_Python程序设计案例课堂第二篇核心技术第十章图形用户界面...
  4. Fiori Elements value help的工作原理
  5. 为什么WebUI里新建任务的状态字段下拉框里没有released选项
  6. delphi打开word文件(刚刚学会的嘿嘿~)
  7. java23种设计模式之五:代理模式
  8. AIX下RAC搭建 Oracle10G(六)dbca建库
  9. C#回调函数应用示例,形象比喻方法助理解
  10. 2023年中国AI论文影响力超越美国?
  11. logstash java插件_[logstash-input-log4j]插件使用详解
  12. python的去重函数_python去重函数是什么
  13. html中用div做框架的代码,用div和css做框架
  14. 挨批评了!Chrome 对用户隐私保护还不如 IE?
  15. 【推荐】JSON在线格式化工具
  16. YOLO3 动漫人脸识别
  17. 一、理解网络编程和套接字
  18. java 接受gsm信息_android 获取手机GSM/CDMA信号信息,并获得基站信息
  19. 机械硬盘的文件系统突然变成RAW了,如何保住盘上数据?
  20. 高数篇(二)-- 傅里叶变换 VS 拉普拉斯变换

热门文章

  1. WebGL学习之纹理盒
  2. 【系列】EOS开发1 开发环境搭建
  3. Tweaked Identical Binary Trees - Medium
  4. WAF Bypass数据库特性(Mysql探索篇)
  5. Static 作用探讨
  6. 命题模式持续在变 你变不变
  7. 一个游戏客户端文件的字节加解密代码,我花1000元请人解的,存在这,以后应该用得到。...
  8. 项目10天投产,测试仅剩2天,如何处理?
  9. bzoj-1026 windy数
  10. 初步学习JS中的闭包