自定义LightSwitch时间追踪启动包


[原文发表地址]Customizing the LightSwitch Time Tracker Starter Kit

[原文发表时间]2011-10-13 07:07

Visual Studio LightSwitch发布了一系列7 启动包,大家可以把这些作为应用的起点。从Visual Studio LightSwitch中通过扩展管理器可以直接下载安装。参看Robert Green的Visual Studio Toolbox 介绍了解更多详情

这些启动包中有一个时间追踪应用程序,可以帮助正在做的项目追踪雇员时间表。以下是数据模型:

image

雇员往他们的时间表上输入多个时间内容,每个时间实体上会选择一个项目。本周一个博客读者问我怎样才能获取一个指定雇员在特定项目上的工作时间总数。在这篇博文中,我会教你们如何创建一个界面,对项目,雇员和时间总数进行筛选。

创建参数化查询

要实现该功能,我们要创建一个参数化查询,能够有选择地对雇员和项目进行筛选。右击方案资源管理器上的时间输入表,选择“添加查询”。将其命名为TimeWorked。下一步我们需要在Project.Id“等于”上添加一个筛选,然后选择“@参数”,添加新参数ProjectID。同样对雇员做同样的操作,展开时间表提交器,选择Id“等于”另一个“@参数”。这次添加新参数SubmitterID。

image

然后选择SubmitterID参数,在属性窗口勾选“可选”,使之成为可选参数。这样我们就可以有选择地通过选择项目在所有雇员中查看工作总时间。同时再添加一类SubmittedDate降序排列。你的查询现在应该看上去是这样的。

image

创建自定义搜索界面

下一步在这个询问基础上添加一个全新的搜索界面。点击询问设计器顶端的“添加界面”按钮,选择搜索数据界面模板,选择你刚刚为界面数据创建的TimeWorked询问,点击确认。

image

注意LightSwitch会为筛选标准添加界面域,这个必须加入查询中。不过我们不想让用户麻烦地输入ID,我们希望为雇员和项目做下拉选项。这样我们删除界面设计器左边视图模型中的两个域。

image

当你删除了这些域之后,目录树中也会自动移除。然后点击顶端的“添加数据项”按钮,添加一个“项目(实体)”类型的本地属性,将其命名为“SelectedProject”,然后点击确定。

image

对雇员做同样的操作。再次点击“添加数据项”按钮,为“雇员(实体)”类型添加一个本地属性,命名为“SelectedEmployee”,然后点击确认。现在你就能在视图模型中看到雇员和项目了。把他们拖到目录树顶端,放在数据网格上方。LightSwitch会自动为你创建下拉控件。

image

我们下一步要做的就是将所选项与查询参数建立关联。首先在视图模型中选择ProjectID查询参数,然后在属性窗口中设置连接到SelectedProject.Id:

image

做完这步之后,一个灰色的箭头会指示你连接到左边。同样对SubmitterID做同样的操作,设置连接到SelectedEmployee.Id。

计算小时

我们要实现统计全部工作时间所需的最后一个小界面,它基于我们筛选标准的时间统计。点击“添加新数据项”,这次选择Decimal类型的本地属性,消选“需要”,调用“总时间”。

image

现在你会在视图模型中看到TotalHours的域。把它拖到目录树中,添加到界面的任意位置。在这个例子中,我会把它添加到结果网格上。确定把控件变成一个标签框。你还可以选择便签的样式,这个可以在属性窗口中进行修改。

我们所要做的最后一件事就是根据这个筛选来计算总时间。每一次TimeWorked询问成功加载,我们就要计算一下总时间。在视图模型中选择TimeWorked,在界面下拉中点击“编写代码”按钮,选择“TimeWorked_Loaded”函数。编写下列代码以统计时间:

Private Sub TimeWorked_Loaded(succeeded As Boolean)    Me.TotalHours = 0
     If succeeded Then
        For Each te In TimeWorked            Me.TotalHours += te.HoursWorked        Next    End IfEnd Sub

现在运行!选择一个项目,询问就会执行,所有雇员在这个项目上的工作时间一览无遗。如果你想选择一个雇员,结果也会只显示他一个人的工作时间。

image

启动包是Visual Studio LightSwitch很好的入门助手,我希望你们都去探索一下,然后根据自己的需要来进行自定义。

希望你们喜欢!

Skip to main content