在SharePoint Designer 二零零六中应用交叉列表查询的数量视图起名

起名 1

三:切入原有留言版系统

如下图:

在1月份时,那时曾用CYQ.Data 1.2本子演示过1个完好无损的示范,留言版:详见:CYQ.Data
轻量数据层之路 应用示范一
留言版(四)

本篇将使用2.N连串版本,在不改变原来留言版系统一行代码的场地下,达成其数据库操作日志作用。

四个表的结构如下图:

起名 2起名 3AopLog 实现只是添加了二个构造函数和兑现End方法

然后,你就能够看来在页面编辑的的窗口中看见插入了3个报表,如下图在那么些表格右侧插入两个空驶列车:

起名 4起名 5

起名 6

摩登版本下载见:CYQ.Data 轻量数据层之路
bug反馈、优化提议、最新框架下载

在“库存”一列的首先个记录单元格里,同样
选取“粘贴”,之后,就会师世三个总数据,如下图,不要心急:

 

**2 新建链接源

        public void WriteInsert(object id)
        {
            if (ContainUrl(“reg.aspx”))
            {
                Write(id,”注册成功!”);
            }
            else
            {
                Write(id,string.Format(“添加一行留言[id={0}]!”,id));//需求启用更加多分支时,请使用”params object[] aopInfo信息[以此要求修改界面参数代码]”
            }
        }

起名 7format-number(number(@_x603b__x6570__x91cf_)-number(concat(‘0′,../../../产品应用/Rows/Row[@Title=current()/@Title]/@_x5df2__x7528__x6570__x91cf_)),’####’)
起名 8

5:实现ActionLog方法

概述:

CREATE TABLE [dbo].[ActionLogs](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [UserID] [int] NULL,
    [Msg] [nvarchar](500) COLLATE Chinese_PRC_CI_AS NULL,
    [LogTime] [datetime] NULL CONSTRAINT [DF_ActionLogs_LogTime]  DEFAULT (getdate()),
 CONSTRAINT [PK_ActionLogs] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

4 插入“产品使用”子视图:
自然要把光标移到如下拉的职责,并且在右侧展开“产品使用”选择下边已用数量,点击图中的按钮,选取“接通的子视图

        private void Write(object id,string msg)
        {
            int userID = GetUserID();
            if (userID == 0)
            {
                int.TryParse(Convert.ToString(id), out userID);
            }
            if (userID > 0)
            {
                MAction action = new MAction(TableNames.ActionLogs);
                action.SetNoAop();//写日记时,注意关闭Aop效率。
                action.Set(ActionLogs.UserID, userID);
                action.Set(ActionLogs.Msg, msg);
                action.Insert();
                action.Close();
            }
        }

那三个空列,用来存放在使用数据和仓库储存数据。

e:达成登记日志与留言日志记录

起名 9

 

你会看到包涵1个列表的XML树状结构:

1:扩张3个日记操作表[ActionLogs],那个须要,表结构如下

**5 插入仓库储存数据

a:从Session获取用户ID

选择要一连的列表:

        #region IAop 成员

点击“仓库储存”下的首先个字段,如图设置它的XPATH表明式:

起名 10起名 11

起名 12

1:将类库生成的AopLog.dll放到留言系统的Bin目录下

起名 13

    public class AopLog : IAop
    {
        ActionLog log;
        public AopLog()
        {
            log = new ActionLog();
        }
        #region IAop 成员

**在表格的右手还有一个空白列用来放计算的仓库储存数量。在列首,请填上“库存”,并且把总数据下的字段(如上海体育场地的100.00万分标签)复制到,仓库储存下边,如图:
起名 14

        #endregion
    }

点击分明后,表格中会多出八个联按的子视图,如下图,你直接删除这么些标题,然后在列首加1个“已用”就OK了。

正文步骤:

如下图:
起名 15

 

起名 16

 

     
使用列表作为公司小型数据管理的缓解方案是相当便利的,不过不便利的地点是列表与列表之间不便宜开始展览多少的连年,不过选择SPD大家能够创设列表与列表之间的陆续查询的数量视图。唯一不便利的是,使用跨列表查询时,大家不得以应用“表单”这一种多少视图,那意味我们就不得以采纳规划出的页面进行编辑的操作。可是对于不复杂的运用,跨列表的多寡视图功用还是给了大家丰硕大的便利。

二:建类库项目独立完结操作日志

下一步来抉择总是形式:

    public class AopLog : IAop
    {

在“达成”后,你能够望见如下的新链接源:

2:升级原来CYQ.Data.DLL的1.2本子到新型版本。[一齐匹配,直接复盖升级]

前骤:
     
有多少个列表,在那之中3个是“全部产品”,用来囤积产品ID、总数据和别的基本新闻,另三个列表是“使用产品”,记录了产品ID和接纳的数目。
未来大家要列出一个表,来展现每一件产品的仓库储存数据,使用公式很不难:仓库储存数量=总数量-使用量。

        public void End(AopEnum action, bool success, object id, params object[] aopInfo)
        {
            //那里等会要兑现
        }

起名 17

        public void OnError(string msg)
        {
            //在数据库操作十一分时引发
        }

起名 18

        public IAop GetFromConfig()
        {
            return null;//那个暗中认可重临null就行了
        }

起名 19

起名 20起名 21

1 打开SPD在根目录新建贰个ASPX页面,起名为 Remain.aspx :

        public void OnError(string msg)
        {
            //那里先没用到,数据库操作11分时引发
        }

3 插入“全体产品”的数额视图
在新数据源中,点击它的上下文菜单,单击浮现数据,以开辟这几个数据源的详细情状:

起名 22起名 23

起名 24

4:回到AopLog落成格局

在弹出的窗口点击如图按钮:

点击下载 [为节约空间,删除了变更的dll,请重新引用dll编绎运营]

可是尚未动用的“随变”这几个产品的仓库储存好象计算不科学,大家把那个公式再变成如下的公式,就化解:

1:操作登陆 、注册、留言!!!数据库记录结果如下图:

举行“全体出品”,找到“产品ID”、“产品名称”和“总数量”,如图插入多门类视图:

3:大家将现实贯彻分流到另三个类处理:新建类:ActionLog.cs,并事先留下方法接口:

起名 25

起名 26

起名 27

        public IAop GetFromConfig()
        {
            return null;//暗中认可那样就行了
        }

此刻会弹出一个连连菜单,如下图,因为本示例中的产品ID,是改了系统的“标题”字段为“产品ID”名称的,所以再三再四的字段都为@Title,如若您是其余字段,请选择正确的里边名称:

        #endregion
    }

点击分明后,就能够见到仓库储存一度被总计出来了。

五:示例下载

起名 28

起名 29

起名 30

前言:

起名 31

b:插入表数据方式封装

起名 32

2:新建三个类,继承自CYQ.Data.Aop.IAop接口,并促成之如:

起名 33

 

如下图:

public class ActionLog
{
    public void WriteFill(object id)
    {
    }
    public void WriteInsert(object id)
    {    
    }

**方法是,点击“数据视图”-“插入数据视图”,在右侧的数目源库的链接源中,点击“新建连接源”,如下图:
起名 34

起名 35起名 36创建ActionLogs表

起名 37

 

在弹出窗口中输入如下的表达式:

         public void Begin(AopEnum action, string objName, params object[] aopInfo)
        {
            //那里先没用到,用于权限判断
        }

**方法是点击SPD的“打开”-“网站”,输入SP网站的U奥迪Q7L,然后“新建”-ASPX页面。保存为Remain.aspx

3:配置文件appSettings项扩张一行配置:<add key=”Aop”
value=”AopLog,AopLog.AopLog”/>

起名 38format-number(number(@_x603b__x6570__x91cf_)-number(../../../产品应用/Rows/Row[@Title=current()/@Title]/@_x5df2__x7528__x6570__x91cf_),’####’)
起名 39

 

起名 40

 

结果的URL:http://www.sharepoint.org.cn/dosboy/remain.aspx

c:检查和测试Url是或不是包括内定字符

**步骤:

2:创设表的数据库脚本如下:

        public void Begin(AopEnum action, string objName, params object[] aopInfo)
        {
        }

d:达成登陆日志记录

 

        private bool ContainUrl(string key)
        {
            return System.Web.HttpContext.Current.Request.Url.ToString().ToLower().Contains(key);
        }

        public void WriteFill(object id)
        {
            if (ContainUrl(“login.aspx”))
            {
                Write(id,”登陆成功!”);
            }
        }

       private int GetUserID()
        {
            int id=0;
            if (HttpContext.Current.Session[“ID”] != null)
            {
                int.TryParse(Convert.ToString(HttpContext.Current.Session[“ID”]), out id);
            }
            return id;
        }

一:建表

1:新建2个门类类库起名就叫:AopLog,同时丰裕对CYQ.Data.DLL的引用[2.N层层版本]

四:运营结果

        public void End(AopEnum action, bool success, object id, params object[] aopInfo)
        {
            if (success)
            {
                switch (action)
                {
                    case AopEnum.Fill:
                        log.WriteFill(id);
                        break;
                    case AopEnum.Insert:
                        log.WriteInsert(id);
                        break;
                    default:
                        break;
                }
            }
        }

 

起名 41起名 42

 

    #region 别的方法
     private int GetUserID()
    {
    }
    private void Write(object id, string msg)
    {   
    }
    private bool ContainUrl(string key)
    {     
    }
    #endregion
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图