MyGeneration学习笔记(8) :dOOdad提供的数据绑定、特殊函数和事务处理

简介:
同上篇,主要是参考dOOdad文档,并加入了一些自己的理解。

1.  数据绑定:
    (1) 绑定到DataGrid(WebApp)

if (emps.LoadAll())
{
     dvEmps 
= emps.DefaultView;
     dgEmps.DataSource 
= dvEmps;
     dgEmps.DataBind();
}

   (2) 绑定到ComboBox(WinApp)

// get data
emps.Query.AddResultColumn(Employees.ColumnNames.EmployeeID);
emps.Query.AddResultColumn(Employees.ColumnNames.LastName);
emps.Query.AddOrderBy(Employees.ColumnNames.LastName,
WhereParameter.Dir.ASC);
emps.Query.Load();
// bind to combobox
cmbEmployees.DisplayMember  =  Employees.ColumnNames.LastName;
cmbEmployees.ValueMember 
=  Employees.ColumnNames.EmployeeID;
cmbEmployees.Datasource 
=  emps.DefaultView;


   (3) 绑定到DropDownList(WebApp)

  // get data
 emps.Query.AddResultColumn(Employees.ColumnNames.EmployeeID);
 emps.Query.AddResultColumn(Employees.ColumnNames.LastName);
 emps.Query.AddOrderBy(Employees.ColumnNames.LastName,
 WhereParameter.Dir.ASC);
 emps.Query.Load();
 
// bind to drop-down list
 ddlEmployees.Datasource  =  emps.DefaultView;
 ddlEmployees.DataTextField 
=  Employees.ColumnNames.LastName;
 ddlEmployees.DataValueField 
=  Employees.ColumnNames.EmployeeID;
 ddlEmployees.Databind();

 

 

2.  特殊函数:执行自定义存储过程和SQL语句

Examples:
(1)LoadFromSql: (从数据库中检索并返回检索结果集,查询结果保存到DataTable中)

ListDictionary Parms  =   new  ListDictionary();
Parms.Add(
" @parameterName1 " , value1);
Parms.Add(
" @parameterName2 " , value2);
parms.Add……
if ( this .LoadFromSql( " proc_GetSpecialEmployee " , Parms))
{
  ...
}


(2)LoadFromSqlNoExec: (执行无结果集的存储过程,返回受影响的行数)
        int NbrOfChecks = this.LoadFromSqlNoExec("proc_CalculatePayroll");
        例如:删除一条记录,dOOdad提供的文档中的方法是:先LoadByPrimaryKey,再MarkAsDeleted,最后再Save进数据库;这个过程要对数据库进行两次操作。实际上,我们可以只操作一次数据库(直接用dOOdads模板生成的存储过程),而不用先Load。
 ListDictionary Parms = new ListDictionary();
 Parms.Add("@ID", empID);
 int effectLine = this.LoadFromSqlNoExec("proc_EmployeeDelete",Parms);

(3)LoadFromSqlReader:(返回SqlDataReader)
 SqlDataReader rdr = this.LoadFromSqlReader("proc_GetSpecialEmployee", Parms) as SqlDataReader;

(4)LoadFromSqlScalar:(返回单个值)
 DateTime EarliestHireDate;
 ListDictionary Parms = new ListDictionary();
 Parms.Add("@Active", 1);
 EarliestHireDate = Convert.ToDateTime(this.LoadFromSqlScalar("GetEarliestHireDate",Parms));

(5)LoadFromRawSql:
 this.LoadFromRawSql("SELECT MIN(EM_HireDate) FROM tEmployees WHERE EM_Active = {0}","1");

 

3.  事务处理:

TransactionMgr tx  =  TransactionMgr.ThreadTransactionMgr();
try
{
    Employees emps 
= new Employees();
    emps.AddNew();
    emps.FirstName 
= "Jimmy";
    emps.LastName 
= "Doe";
    Products prds 
= new Products();
    prds.AddNew();
    prds.ProductName 
= " Lunch Box ";
    prds.Discontinued 
= false;
    tx.BeginTransaction();
    emps.Save();
    prds.Save();
    tx.CommitTransaction();
}

catch (Exception ex)
{
    tx.RollbackTransaction();
    TransactionMgr.ThreadTransactionMgrReset();
}


本文转自Silent Void博客园博客,原文链接:http://www.cnblogs.com/happyhippy/archive/2006/08/30/601234.html ,如需转载请自行联系原作者
相关文章
|
4月前
|
小程序 数据管理 数据处理
小程序数据绑定机制的优点
【10月更文挑战第23天】小程序数据绑定机制具有众多优点,它极大地提升了小程序的开发效率、交互性、可维护性和用户体验,是小程序开发中不可或缺的重要机制。你还可以根据实际情况进一步扩展和细化相关内容,使其更具针对性和实用性。
|
7月前
|
存储 C# 开发者
在winform中如何实现双向数据绑定?
在winform中如何实现双向数据绑定?
97 0
|
JavaScript
DOM操作之CRUD操作
1.append():父元素将子元素追加到末尾 对象1.append(对象2):将对象2添加到对象1元素内部,并且在尾部 2.prepend():父元素将子元素追加到开头 对象1.prepend(对象2):将对象2添加到对象1元素内部,并且在开头 3.appendTo(): 对象1.appendTo(对象2):将对象1添加到对象2内部,并且在尾部 4.prependTo(): 对象1.prependTo(对象2):将对象1添加到对象2内部,并且在开头 5.after():添加元素到元素后面 对象1.after(对象2):将对象2添加到对象1后面。对象1和对象2是兄弟关系
87 0
|
10月前
|
存储 前端开发 API
IndexedDB的异步操作特性对于前端开发者来说有什么挑战和注意事项吗?
IndexedDB是浏览器的客户端数据库,用于前端数据存储。其异步操作特性带来挑战,要求开发者熟悉异步编程,处理回调函数或Promise。注意事务管理,合理控制事务生命周期,防止阻塞。数据版本管理是关键,需处理升级和兼容性问题。错误处理必不可少,确保程序稳定性。性能优化涉及索引设计和查询优化,避免影响应用性能。理解并应对这些挑战,能有效利用IndexedDB构建高效Web应用。
|
前端开发 JavaScript
单向数据流和双向数据绑定有什么区别,以及他们的优缺点?
单向数据流和双向数据绑定有什么区别,以及他们的优缺点?
|
前端开发
前端工作总结266-数据绑定逻辑处理
前端工作总结266-数据绑定逻辑处理
132 0
|
4月前
|
JavaScript 索引
Vue 3.x 版本中双向数据绑定的底层实现有哪些变化
从Vue 2.x的`Object.defineProperty`到Vue 3.x的`Proxy`,实现了更高效的数据劫持与响应式处理。`Proxy`不仅能够代理整个对象,动态响应属性的增删,还优化了嵌套对象的处理和依赖追踪,减少了不必要的视图更新,提升了性能。同时,Vue 3.x对数组的响应式处理也更加灵活,简化了开发流程。
|
9月前
|
JavaScript API 开发者
Vue中双向数据绑定是如何实现的?底层原理简介
Vue中双向数据绑定是如何实现的?底层原理简介
84 4
|
存储 JavaScript
一文搞定数据响应式原理
一文搞定数据响应式原理
一文搞定数据响应式原理