`
terryfeng
  • 浏览: 504441 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

CSLA.Net 3.0.5 项目管理示例 UI ProjectList.aspx

阅读更多
<%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true"
    CodeFile="ProjectList.aspx.cs" Inherits="PTWeb.ProjectList" Title="项目列表" %>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    <div>
        <strong>项目<br />
        </strong>
        <%-- AllowPaging="True" 允许分页
            PageSize="4" 每页4行
            DataKeyNames="Id" 强调这个设置是非常重要的,因为后台要通过获取这个Key值来唯一的定位这条记录,从而选择和删除操作
            (549)
        --%>
        <asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False" AllowSorting="true" 
            DataSourceID="ProjectListDataSource" PageSize="4" DataKeyNames="Id" OnRowDeleted="GridView1_RowDeleted">
            <Columns>
            <%-- Visible="False" 这一列被隐藏 --%>
                <asp:BoundField DataField="Id" HeaderText="Id" SortExpression="Id" Visible="False" />
                <%-- 超链接域
                     DataNavigateUrlFields="Id"    DataNavigateUrlFormatString="ProjectEdit.aspx?id={0}
                     数据导航域ID                  数据导航URL
                                            组合
                     当数据源中包含多个必须组合用于创建 HyperLinkField 对象的超链接的字段时,请使用 DataNavigateUrlFields 属性。DataNavigateUrlFields 
                     属性中指定的字段与 DataNavigateUrlFormatString 属性中的格式字符串组合,以构造 HyperLinkField 对象中的超链接。 
                --%>
                <asp:HyperLinkField DataNavigateUrlFields="Id" DataNavigateUrlFormatString="ProjectEdit.aspx?id={0}"
                    DataTextField="Name" HeaderText="项目" />
                    <%-- ShowDeleteButton="True" SelectText="Edit" 
                        显示删除按钮             选择文本进入编辑模式
                    
                    --%>
                <asp:CommandField ShowDeleteButton="True" SelectText="Edit" />
            </Columns>
        </asp:GridView>
        <asp:LinkButton ID="NewProjectButton" runat="server" OnClick="NewProjectButton_Click">添加项目</asp:LinkButton>
        <br />
        <br />
        <asp:Label ID="ErrorLabel" runat="server" ForeColor="Red"></asp:Label>
        <csla:CslaDataSource ID="ProjectListDataSource" runat="server" TypeName="ProjectTracker.Library.ProjectList, ProjectTracker.Library"
            OnDeleteObject="ProjectListDataSource_DeleteObject" OnSelectObject="ProjectListDataSource_SelectObject"
            TypeSupportsPaging="False" TypeSupportsSorting="False">
        </csla:CslaDataSource>
        <br />
    </div>
</asp:Content>

 

//======================================================================
//   
//        Guid1:               d08d215e-c7a9-4079-95d1-54704d568a8a
//        CLR版本:             2.0.50727.3053
//        新建项输入的名称:    ProjectList
//        机器名称:            SOFTWARE-FRT-08
//        命名空间名称:        PTWeb
//        文件名:              ProjectList
//        当前系统时间:        2008-10-2 19:08:08
//        用户所在的域:        TECHSTAR
//        当前登录用户名:      frt
//        创建年份:            2008
//
//        Created by Terry.Feng.C (冯瑞涛) at 2008-10-2 19:08:08
//        
//
//======================================================================

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;
using ProjectTracker.Library;

namespace PTWeb
{
    /// <summary>
    /// 这个类和RoleList页面几乎一样,可以参考前面的描述
    /// </summary>
    public partial class ProjectList : System.Web.UI.Page
    {
        #region 私有成员
        private void ApplyAuthorizationRules()
        {
            this.GridView1.Columns[this.GridView1.Columns.Count - 1].Visible = Project.CanDeleteObject();
            NewProjectButton.Visible = ProjectTracker.Library.Project.CanAddObject();
        }

        private ProjectTracker.Library.ProjectList GetProjectList()
        {
            object businessObject = Session["currentObject"];
            if (businessObject == null || !(businessObject is ProjectTracker.Library.ProjectList))
            {
                businessObject = ProjectTracker.Library.ProjectList.GetProjectList();
                Session["currentObject"] = businessObject;
            }
            return (ProjectTracker.Library.ProjectList)businessObject;
        }


        #endregion

        #region 事件方法

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Session["currentObject"] = null;
                //授权
                ApplyAuthorizationRules();
            }
            else
                ErrorLabel.Text = string.Empty;
        }

        #region GridView1

        /// <summary>
        /// 行删除之后引发此事件,清空Session,绑定GridView,因为之前采用的是理解删除,并且没有在DeleteObject事件中调用这两个动作,是无法将删除后的数据集合
        /// 反映到GridView当中的,DataBind操作会引发SelectObject事件,这个事件中又调用了GetProjectList,方法中判断Sessions,已经是Null,导致从数据库载入
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void GridView1_RowDeleted(object sender, GridViewDeletedEventArgs e)
        {
            //将Session清空会引发,从数据调用新的数据装载集合
            Session["currentObject"] = null;
            //这个操作会引发SelectObject事件
            GridView1.DataBind();
        }

        protected void NewProjectButton_Click(object sender, EventArgs e)
        {
            // allow user to add a new project
            // 跳转至编辑页面,添加一个新的对象
            Response.Redirect("ProjectEdit.aspx");
        }

        #endregion


        #endregion

        #region 数据控制


        #region ProjectListDataSource

        /// <summary>
        /// 删除动作,会引发这个事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ProjectListDataSource_DeleteObject( object sender, Csla.Web.DeleteObjectArgs e)
        {
            try
            {
                //转换Guid类型,调用静态方法立即上除一个项目
                ProjectTracker.Library.Project.DeleteProject( new Guid(e.Keys["Id"].ToString()));
                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;
            }
        }

        protected void ProjectListDataSource_SelectObject( object sender, Csla.Web.SelectObjectArgs e)
        {
            //获取,并放回给数据源控件
            e.BusinessObject = GetProjectList();
        }

        #endregion


        #endregion

    }
}

 

分享到:
评论

相关推荐

    CSLA.NET框架开发小例子集合

    CSLA.NET框架是一种用于构建可复用的企业级应用程序的开源开发框架,由Rockford Lhotka创建。这个框架的核心设计理念是提供一套强大的业务对象模型,支持数据持久化、权限管理、事务处理和验证规则等功能。在"CSLA...

    CSLA.NET 4.5.601源码

    8. **项目跟踪器实例**:在提供的"ProjectTracker"示例中,开发者可以看到如何将这些概念应用到实际项目中。这个例子展示了如何创建一个简单的项目管理应用,包括任务分配、时间追踪等功能,是学习CSLA.NET的绝佳...

    C#企业应用开发艺术CSLA.NET框架开发实战.rar

    9. **源码分析**:附带的源码提供了丰富的示例,可以帮助读者深入理解CSLA.NET的内部工作原理,同时也可以直接用于项目开发中,加快开发进度。 10. **持续学习与社区支持**:CSLA.NET拥有活跃的社区和丰富的在线...

    [CSLA.NET] Using CSLA 4 eBook Series

    [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 ...

    一个最完整的基于Csla.net的vb源代码

    **基于Csla.Net的VB源代码详解** Csla.Net(Business Logic Layer Solutions Architecture)是由Rockford Lhotka创建的一个开源框架,它为.NET开发者提供了一种构建可复用的、可维护的业务对象的模式。这个框架的...

    C#企业应用开发艺术CSLA.NET框架开发实战.part1.rar PDF加源码

    C#企业应用开发艺术CSLA.NET框架开发实战.part1.rar(PDF加源码)

    CSLA.NET 4.0 Source Code

    3. ** 设计模式 **:CSLA.NET的核心是基于几种设计模式,如工厂模式(用于对象实例化)、策略模式(用于行为的可插拔性)、代理模式(用于远程对象访问)和状态模式(用于管理对象的状态变化)。这些模式使得代码...

    《#企业应用开发艺术CSLA.NET框架开发实战》配套源码及例程csla-4.5.700

    《#企业应用开发艺术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.NET框架源码

    CSLA (Component Services Library for Applications) .NET框架是由Rockford Lhotka创建的,它为.NET平台提供了一种强大的业务对象开发模型。该框架的主要目标是帮助开发人员构建可复用、可维护和灵活的业务应用程序...

    [CSLA .NET] CSLA .NET 框架企业应用开发艺术 (2008 版本) (英文版)

    [Apress] CSLA .NET 框架企业应用开发艺术 (2008 版本) (英文版) [Apress] Expert C# 2008 Business Objects (E-Book) ☆ 图书概要:☆ In Rockford Lhotka’s Expert C# 2008 Business Objects, you’ll learn ...

    C#企业应用开发艺术CSLA.NET框架

    此外,CSLA .NET与Windows Forms、WPF、ASP.NET等UI技术无缝集成,支持数据绑定,使开发者能够轻松地创建用户界面。 **3. 安全性和权限管理** 框架中的安全特性允许对业务对象进行细粒度的访问控制,以满足不同...

    《C#企业应用开发艺术--CSLA.NET框架开发实战》源码

    此为《C#企业应用开发艺术--CSLA.NET框架开发实战》一书的源码 作 者: Rockford Lhotka 译 者: 侯伯薇 出版日期: 2010-03 .NET应用架构开发经典 揭示CSLA.NET框架的设计权衡 从实践中精通面向对象技术 ...

    CSLA.NET 3.6

    5. **更完善的文档和示例**:随着版本的更新,CSLA.NET的文档通常会得到更新,提供更详尽的教程和示例,帮助开发者快速上手。 **压缩包内容分析** "README.txt" 文件很可能是包含了安装指南、更新内容和注意事项的...

    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框架面向实体框架的代码...

    csla.net--4.6.5源码

    通过分析Csla.net 4.6.5源码,开发者可以了解到如何实现这些特性,学习到面向对象设计原则、模式的应用,以及如何在实际项目中有效地利用Csla来提高开发效率和代码质量。同时,源码阅读也帮助开发者更好地调试和优化...

    .NET软件开发框架CSLA.NET.zip

    CSLA.NET是一个在分布式环境下只通过修改配置文件就可以实现N层部署的框架. 它致力于构建丰富,强大而灵活的业务层,包含了验证,权限,数据门户等标准化的解决方案,使你的业务对象更加标准和灵活.它提出了移动对象...

    Using CSLA 4 CSLA .NET Overview

    ### 使用CSLA 4:CSLA .NET概览 #### 一、CSLA .NET简介 **CSLA(Component-based Scalable Logical Architecture)**是一种面向对象的应用程序开发框架,主要针对.NET平台。它由Rockford Lhotka创建,并在多个...

    CSLA.NET框架开发实战Expert C#2008 Business Objects

    10. **UI绑定**:CSLA.NET对象可以直接与各种UI框架(如WinForms、WPF、ASP.NET等)绑定,简化了视图层的开发。 通过阅读《CSLA.NET框架开发实战Expert C#2008 Business Objects》,读者不仅能了解到CSLA.NET的架构...

    CSLA .NET Framework 3.5

    8. **项目Tracker cs**:在压缩包中的"ProjectTracker cs"可能是一个使用CSLA .NET 框架开发的示例项目,它演示了如何将CSLA的特性应用于实际的项目管理应用中,包括任务跟踪、资源分配等功能。 综上所述,CSLA ...

    C#企业应用开发艺术CSLA.NET框架开发实战.part2.rar

    C#企业应用开发艺术CSLA.NET框架开发实战.part2.rar

Global site tag (gtag.js) - Google Analytics