- 浏览: 507311 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (329)
- [发布至博客园首页] (12)
- [随笔分类][01] .Net X (59)
- [随笔分类][20] Architecture (16)
- [随笔分类][21] Developer Logs (13)
- [网站分类]Windows 7 (1)
- [随笔分类][13] Oracle & .Net (7)
- [随笔分类][16] Love in China (14)
- [随笔分类][15] Development Tools (20)
- [随笔分类][18] Windows Phone (12)
- [随笔分类][12] Design & Pattern (17)
- [网站分类].NET新手区 (22)
- [网站分类]首页候选区 (2)
- [随笔分类][08] Windows (Server) (13)
- [随笔分类][02] CSLA.Net (3)
- [随笔分类][10] jQuery & javaScript (10)
- [随笔分类][11] SQL Server (4)
- [随笔分类][22] Enterprise Logs (3)
- [随笔分类][03] News (9)
- [随笔分类][19] Quality Assurance (2)
- [随笔分类][05] Silverlight (20)
- [随笔分类][14] Google Earth & .Net (6)
- [网站分类]非技术区 (9)
- [随笔分类][07] WWF (2)
- [随笔分类][04] SharePoint (1)
- [随笔分类][20] Analysis & Design (36)
- [随笔分类][06] WCF (5)
- [随笔分类][12] Architecture (1)
- [随笔分类][09] WPF (0)
- [随笔分类][17] VStudio & Expression (5)
最新评论
-
zhangyy130:
你好,我关于第二段的那个表视图、模型与图这三者的关系我没有看明 ...
UML模型的组成 -
guji528:
谢谢分享!
Enterprise Architect 基础应用 -
studentsky:
好文章,图文并茂!
WCF 第一个用 Visual Studio 2010 创建的WCF服务 -
chen975311486:
用哪个工具画的????
UML中对关系的描述 (二) -
frankies:
继续学习中。。
UML 交互概述图
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="RolesEdit.aspx.cs" Inherits="PTWeb.RolesEdit" Title="项目职务" %> <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server"> <div> <%-- 多视图控件 --%> <asp:MultiView ID="MultiView1" runat="server" ActiveViewIndex="0"> <%-- 视图1 用于显示 --%> <asp:View ID="MainView" runat="server"> <%-- 视图中的内容 AutoGenerateColumns="False" 代表无需自动刷新内容 DataKeyNames="Id",代表数据主键名字,设置此值,可以获取每一行的这个值 DataSourceID="RolesDataSource" 数据源 --%> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="RolesDataSource" DataKeyNames="Id"> <Columns> <%-- ReadOnly="True" 即使在编辑状态下也不能修改 SortExpression="Name" 排序字段 --%> <asp:BoundField DataField="Id" HeaderText="编号" ReadOnly="True" SortExpression="Id" /> <asp:BoundField DataField="Name" HeaderText="职务" SortExpression="Name" /> <%-- 启用删除按钮和编辑按钮 --%> <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" /> </Columns> </asp:GridView> <asp:LinkButton ID="AddRoleButton" runat="server" OnClick="AddRoleButton_Click">添加职务</asp:LinkButton><br /> </asp:View> <%-- 视图2 用户插入新数据 --%> <asp:View ID="InsertView" runat="server"> <%-- OnItemInserted="DetailsView1_ItemInserted" 插入新值后调用 OnModeChanged="DetailsView1_ModeChanged" 模式更改调用 AutoGenerateRows="False" 无需自动刷新 DataSourceID="RolesDataSource" 数据源 --%> <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" DataSourceID="RolesDataSource" DefaultMode="Insert" Height="50px" Width="125px" DataKeyNames="Id" OnItemInserted="DetailsView1_ItemInserted" OnModeChanged="DetailsView1_ModeChanged"> <Fields> <asp:BoundField DataField="Id" HeaderText="编号" SortExpression="Id" /> <asp:BoundField DataField="Name" HeaderText="职务" SortExpression="Name" /> <%-- 显示插入按钮 --%> <asp:CommandField ShowInsertButton="True" /> </Fields> </asp:DetailsView> </asp:View> </asp:MultiView> <%-- 错误反馈标签,红色的 --%> <asp:Label ID="ErrorLabel" runat="server" ForeColor="Red"></asp:Label><br /> <%--自定数据源控件(539) TypeName="ProjectTracker.Library.Admin.Roles, ProjectTracker.Library" 控件关联的业务类 逗号 业务类所在的程序集 --%> <csla:CslaDataSource ID="RolesDataSource" runat="server" TypeName="ProjectTracker.Library.Admin.Roles, ProjectTracker.Library" OnDeleteObject="RolesDataSource_DeleteObject" OnInsertObject="RolesDataSource_InsertObject" OnSelectObject="RolesDataSource_SelectObject" OnUpdateObject="RolesDataSource_UpdateObject" TypeSupportsPaging="False" TypeSupportsSorting="False"> </csla:CslaDataSource> </div> </asp:Content>
//====================================================================== // // Copyright (C) All Rights Reserved // Guid1: ac0ac771-edca-45ec-a03c-8e780c6168ba // CLR版本: 2.0.50727.3053 // 新建项输入的名称: RolesEdit // 机器名称: SOFTWARE-FRT-08 // 命名空间名称: PTWeb // 文件名: RolesEdit // 当前系统时间: 2008-10-2 19:08:56 // 当前登录用户名: frt // 创建年份: 2008 // // Created by Terry.Feng.C (冯瑞涛) at 2008-10-2 19:08:56 // // //====================================================================== using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; namespace PTWeb { /// <summary> /// 这个程序中的代码都非常的简单,几乎很少超过200行,所以可以轻松的阅读 /// </summary> public partial class RolesEdit : System.Web.UI.Page { #region 私有成员 //枚举(539),直接使用数字会使代码难以维护和观看,定义枚举非常好, //比喻,可以想像如果你以后需要修改代码将MainView和InsertView这两个页面的代表调换,那么我们只需要在枚举中将0和1换个位置,尔代码无需做任何修改 private enum Views { MainView = 0, InsertView = 1 } /// <summary> /// (540) 缓存业务数据资源 /// </summary> /// <returns></returns> private ProjectTracker.Library.Admin.Roles GetRoles() { //读取指定Session内容 object businessObject = Session["currentObject"]; //判断获取内容,如果是空或者与所需的类型不符合,则重新取出数据集合 if (businessObject == null || !(businessObject is ProjectTracker.Library.Admin.Roles)) { //从数据库取出数据资源 businessObject = ProjectTracker.Library.Admin.Roles.GetRoles(); //缓存数据资源 Session["currentObject"] = businessObject; } //将数据资源返回 return (ProjectTracker.Library.Admin.Roles)businessObject; } /// <summary> /// 应用验证规则初始化页面 /// </summary> private void ApplyAuthorizationRules() { //根据当前用户CanEditObject的状态同步显示GridView的最后一列 this.GridView1.Columns[this.GridView1.Columns.Count - 1].Visible = ProjectTracker.Library.Admin.Roles.CanEditObject(); //同上面的道理一样,因为此系统没有真正意义上的权限系统所以这些权限的最终判断是写死的,在这里他们是Administrator this.AddRoleButton.Visible = ProjectTracker.Library.Admin.Roles.CanAddObject(); } #endregion #region 窗体事件 /// <summary> /// Load事件的使用多在对程序页面的初始设置上,其中的代码基本上全是围绕初始化展开的 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Page_Load(object sender, EventArgs e) { //如果不是回调,一般只第一次进入 if (!IsPostBack) { //清空内容对象(540) Session["currentObject"] = null; //这个方法的调用是初始化根据权限去初始化页面(547) ApplyAuthorizationRules(); } else this.ErrorLabel.Text = ""; } /// <summary> /// (542)加职务按钮 /// </summary> /// <param name="sender">被监控的对象</param> /// <param name="e">事件处理中所感兴趣的东西</param> protected void AddRoleButton_Click(object sender, EventArgs e) { //设置模式为插入模式 this.DetailsView1.DefaultMode = DetailsViewMode.Insert; //激活显示DetailsView的那个View,当然只显示这个视图,刚才的那个视图被隐藏 MultiView1.ActiveViewIndex = (int)Views.InsertView; } /// <summary> /// 当插入后激发 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void DetailsView1_ItemInserted( object sender, DetailsViewInsertedEventArgs e) { //点击插入后,View模式还原 MultiView1.ActiveViewIndex = (int)Views.MainView; //(545)表格重新绑定以刷新表格内容,DataBind的调用会使GridView刷新内容,之后导致RolesDataSource的SelectObject被触发 this.GridView1.DataBind(); } /// <summary> /// 在插入或者是更新等操作的时候,都有可能会点击取消操作,取消会导致模式的改变,由此引发此事件去改变显示模式,回复列表显示 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void DetailsView1_ModeChanged( object sender, EventArgs e) { //模式一点更改,索命已经点击了插入按钮,将View视图还原 MultiView1.ActiveViewIndex = (int)Views.MainView; } #endregion #region 数据控制 /// <summary> /// 删除,同理点击删除按钮激发这个事件(547) /// </summary> /// <param name="sender">一般这个对象指被监视对象,是事件的发送者,一直被监视的目标。这个对象包含着其他对象所感兴趣的内容,当这个感兴趣的内容到达某种状态就会发送消息,这个消息就是事件, /// 比如被点击了,或者修改了,去提示监控者去调用某些处理程序,这个程序就是下面的方法。</param> /// <param name="e">这个对象包含这监控者所感兴趣的数据,这个会根据不同的事件尔改变(因为不同的事件都是具有不同的委托签名的),在这里指的是删除的是那条记录啊</param> protected void RolesDataSource_DeleteObject(object sender, Csla.Web.DeleteObjectArgs e) { try { ProjectTracker.Library.Admin.Roles obj = GetRoles(); //获取被删除记录的那条记录的键值, int id = (int)e.Keys["Id"]; //调用业务类方法设置为删除标记 obj.Remove(id); //调用Save真正删除 Session["currentObject"] = obj.Save(); e.RowsAffected = 1; } catch (Csla.DataPortalException ex) { this.ErrorLabel.Text = ex.BusinessException.Message; e.RowsAffected = 0; } catch (Exception ex) { this.ErrorLabel.Text = ex.Message; e.RowsAffected = 0; } } /// <summary> /// (543)当用户通过DetailsView输入新的Role,在控件上点击插入连接,RolesDataSource会触发这个事件,将新角色添加到集合当中 /// /// </summary> ///<param name="sender">一般这个对象指被监视对象,是事件的发送者,一直被监视的目标。这个对象包含着其他对象所感兴趣的内容,当这个感兴趣的内容到达某种状态就会发送消息,这个消息就是事件, /// 比如被点击了,或者修改了,去提示监控者去调用某些处理程序,这个程序就是下面的方法。</param> /// <param name="e">这个对象包含这监控者所感兴趣的数据,这个会根据不同的事件尔改变(因为不同的事件都是具有不同的委托签名的),在这里指的是插入的是那条记录啊</param> protected void RolesDataSource_InsertObject( object sender, Csla.Web.InsertObjectArgs e) { try { //(544)获取列表对象 ProjectTracker.Library.Admin.Roles obj = GetRoles(); //调用AddNew方法,最终他会调用我们重载的AddNewCore方法,请看Roes.cs,新建一个 ProjectTracker.Library.Admin.Role role = obj.AddNew(); //(544)拷贝Values中的属性值,到Role这个对象中,当然你也可以使用,原始的Role.Name=e.Values["Name"].ToString;是一样的 Csla.Data.DataMapper.Map(e.Values, role); //调用Save保存,并将被更新的结果集返回,当然你也可以,将这个操作留给一个按钮事件 //当时请注意这个将新的结果集付给Session的动作是非常有学问的,她会在之后的显示刷新时候直接被用到,如果不付给这个缓存,那么新的结果将无法及时反映 Session["currentObject"] = obj.Save(); //受到影响 e.RowsAffected = 1; } catch (Csla.DataPortalException ex) { this.ErrorLabel.Text = ex.BusinessException.Message; e.RowsAffected = 0; } catch (Exception ex) { this.ErrorLabel.Text = ex.Message; e.RowsAffected = 0; } } /// <summary> /// 选择 /// </summary> /// <param name="sender">一般这个对象指被监视对象,是事件的发送者,一直被监视的目标。这个对象包含着其他对象所感兴趣的内容,当这个感兴趣的内容到达某种状态就会发送消息,这个消息就是事件, /// 比如被点击了,或者修改了,去提示监控者去调用某些处理程序,这个程序就是下面的方法。</param> /// <param name="e">这个对象包含这监控者所感兴趣的数据,这个会根据不同的事件尔改变(因为不同的事件都是具有不同的委托签名的),在这里指的是选择的是那条记录啊</param> protected void RolesDataSource_SelectObject( object sender, Csla.Web.SelectObjectArgs e) { //获取数据资源 ProjectTracker.Library.Admin.Roles obj = GetRoles(); //将资源,绑定 e.BusinessObject = obj; } /// <summary> /// 更新,点击绑定的控件的更新按钮会激发数据源此事件, /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void RolesDataSource_UpdateObject( object sender, Csla.Web.UpdateObjectArgs e) { ProjectTracker.Library.Admin.Roles obj = GetRoles(); try { //转换字符串到整型,作为参数,调用业务方法获取一个职务对象引用 //e.Keys可以获得当前控件的中DataKeyNames域中的值 ProjectTracker.Library.Admin.Role role = obj.GetRoleById(int.Parse(e.Keys["Id"].ToString())); //将更改对象中名字字段的值付给Name属性,这里没有使用上面的Map功能,因为只有一列 role.Name = e.Values["Name"].ToString(); //调用保存方法 Session["currentObject"] = obj.Save(); //受影响 e.RowsAffected = 1; } catch (Csla.DataPortalException ex) { this.ErrorLabel.Text = ex.BusinessException.Message; e.RowsAffected = 0; } catch (Exception ex) { this.ErrorLabel.Text = ex.Message; e.RowsAffected = 0; } } #endregion } }
发表评论
-
LINQ to SQL语句之Insert/Update/Delete操作
2009-12-30 14:54 1152Insert/Update/Delete操作 插入(Ins ... -
RabbitMQ 安装配置和简单实例
2010-01-21 16:52 1885安装ErLang运行环境 配置运行环境变量 启动服务 ... -
MSMQ(Microsoft Message Queue,微软消息队列) Asp.Net 简单示例
2010-01-22 14:59 3296系统: Windows XP 1.安装MSMQ 控制面板—&g ... -
IromPython .Net 的简介和第一个例子
2010-01-23 18:53 1371.Net 4 都已经到来 ... -
Microsoft Asp.Net MVC 从入门到精通
2010-01-27 17:53 870ASP.NET MVC Framework是微软官方提供的MV ... -
C# Socket 同步通信与异步通信 示例
2010-01-30 17:50 4767同步 1.建立链接发送和获取信息 异步 1.服务器端建立一 ... -
解决 Visual Stuido 工具栏中的工具重置后,恢复回来。
2009-12-18 17:06 1309拿DevExpress 控件为例,如果重置工具栏后,以前的工具 ... -
LINQ to SQL 用O/R设计器手工建表对象
2009-10-11 22:04 1072除了自己建立定制对象外,还可以使用O/R设计器以可视化的方式创 ... -
LINQ to XML .Net 3.5 中的新XML对象
2009-10-15 14:11 916System.Xml.Linq 命名空间中,有一系列新的LIN ... -
LINQ to XML 用 LINQ 查询 XML
2009-10-15 15:57 696将一个已知的XML放到XDocument 对象当中使用LINQ ... -
LINQ to XML 操作XML文档
2009-10-15 17:18 1020使用 XDocument 对象的 Element 方法,获取制 ... -
C# 编码规范
2009-10-15 19:20 752陈年的文档,不过很不错整理出来发到博客上,还有更多的朋友需要。 ... -
Visual Studio 项目模板、文件模板、代码段和环境设置
2009-10-15 19:31 971很久前使用过,那个时候还没有开始写博客,好久不用就都忘记了,这 ... -
ADO.NET Entity Framework 概述
2009-10-16 11:50 597ADO.NET Entity Framework 与 LINQ ... -
LinqPad 1.31 下载
2009-01-14 15:42 1003LinqPad 1.31 也许你已经非常熟悉他了,为即将使用L ... -
jQuery 的第一个例子
2009-01-18 10:34 848通过这个例子可以对jQuery的使用有个基本的认识,jQ ... -
jQuery 选择器的使用
2009-01-18 10:39 876jQuery 能如此的流行,很重要的一点也许就是他有非常强大且 ... -
一次从GridView 获得多个指定行中多个指定控件的值
2009-01-20 07:33 902一次从GridView 获得多个指定行中多个指定控件的值,非常 ... -
jQuery 的Ajax应用(1)--学习篇,内附实例
2009-01-28 21:48 1358下面以前台jQuery,后天C# 的方式,演示了,如何通过 ... -
Enterprise Library 4.1 一步一步从入门到精通(未完成)
2009-02-05 23:04 915Enterprise Library 4.1 一步一步从入门到 ...
相关推荐
C#企业应用开发艺术CSLA.NET框架开发实战.part1.rar(PDF加源码)
C#企业应用开发艺术CSLA.NET框架开发实战.part2.rar
通过学习和研究这些例子,开发者可以更好地掌握如何在实际项目中应用CSLA.NET框架,提升开发效率,同时保证代码的健壮性和可维护性。此外,对于初学者来说,这些实例也能帮助他们理解复杂的概念,如业务对象生命周期...
9. **源码分析**:附带的源码提供了丰富的示例,可以帮助读者深入理解CSLA.NET的内部工作原理,同时也可以直接用于项目开发中,加快开发进度。 10. **持续学习与社区支持**:CSLA.NET拥有活跃的社区和丰富的在线...
这个例子展示了如何创建一个简单的项目管理应用,包括任务分配、时间追踪等功能,是学习CSLA.NET的绝佳起点。 通过分析CSLA.NET 4.5.601的源码,开发者可以学习到如何有效地实现业务逻辑、数据访问、事务处理和安全...
6. **最佳实践**:从源代码中学习如何遵循Csla.Net的最佳实践,比如如何有效地管理对象状态,如何使用缓存策略,以及如何实现细粒度的权限控制。 总之,这个最完整的基于Csla.Net的VB源代码提供了丰富的学习材料,...
[CSLA.NET] Using CSLA 4 eBook Series ☆ 图书概要:☆ The Using CSLA 4 ebook series will teach you how to use CSLA 4 to create powerful object-oriented business layers for your applications, as well ...
3. ** 设计模式 **:CSLA.NET的核心是基于几种设计模式,如工厂模式(用于对象实例化)、策略模式(用于行为的可插拔性)、代理模式(用于远程对象访问)和状态模式(用于管理对象的状态变化)。这些模式使得代码...
《#企业应用开发艺术CSLA.NET框架开发实战》(Expert C#2008 Business Objects)配套源码及例程csla-4.5.700。 CSLA .NET is a software development framework that helps you build a reusable, maintainable ...
CSLA (Component Services Library for Applications) .NET框架是由Rockford Lhotka创建的,它为.NET平台提供了一种强大的业务对象开发模型。该框架的主要目标是帮助开发人员构建可复用、可维护和灵活的业务应用程序...
CSLA.NET是一个在分布式环境下只通过修改配置文件就可以实现N层部署的框架. 它致力于构建丰富,强大而灵活的业务层,包含了验证,权限,数据门户等标准化的解决方案,使你的业务对象更加标准和灵活.它提出了移动对象...
3. **事务管理**:CSLA.NET提供了事务支持,可以轻松地在业务对象级别或整个业务流程级别管理数据库事务,确保数据一致性。 4. **安全性**:框架内置了权限和角色管理,可以限制用户对业务对象的操作,如只读、修改...
[Apress] CSLA .NET 框架企业应用开发艺术 (2008 版本) (英文版) [Apress] Expert C# 2008 Business Objects (E-Book) ☆ 图书概要:☆ In Rockford Lhotka’s Expert C# 2008 Business Objects, you’ll learn ...
此外,CSLA .NET与Windows Forms、WPF、ASP.NET等UI技术无缝集成,支持数据绑定,使开发者能够轻松地创建用户界面。 **3. 安全性和权限管理** 框架中的安全特性允许对业务对象进行细粒度的访问控制,以满足不同...
此为《C#企业应用开发艺术--CSLA.NET框架开发实战》一书的源码 作 者: Rockford Lhotka 译 者: 侯伯薇 出版日期: 2010-03 .NET应用架构开发经典 揭示CSLA.NET框架的设计权衡 从实践中精通面向对象技术 ...
Visual Studio CSLA Extension for ADO.NET Entity Framework. Visual Studio extension and T4 templates for generation of CSLA objects from ADO.NET Entity Framework model. CSLA.NET框架面向实体框架的代码...
5. **更完善的文档和示例**:随着版本的更新,CSLA.NET的文档通常会得到更新,提供更详尽的教程和示例,帮助开发者快速上手。 **压缩包内容分析** "README.txt" 文件很可能是包含了安装指南、更新内容和注意事项的...
通过分析Csla.net 4.6.5源码,开发者可以了解到如何实现这些特性,学习到面向对象设计原则、模式的应用,以及如何在实际项目中有效地利用Csla来提高开发效率和代码质量。同时,源码阅读也帮助开发者更好地调试和优化...
### 使用CSLA 4:CSLA .NET概览 #### 一、CSLA .NET简介 **CSLA(Component-based Scalable Logical Architecture)**是一种面向对象的应用程序开发框架,主要针对.NET平台。它由Rockford Lhotka创建,并在多个...
10. **UI绑定**:CSLA.NET对象可以直接与各种UI框架(如WinForms、WPF、ASP.NET等)绑定,简化了视图层的开发。 通过阅读《CSLA.NET框架开发实战Expert C#2008 Business Objects》,读者不仅能了解到CSLA.NET的架构...