如何在LightSwitch中创建多栏自动完成的下拉框

[原文发表地址]: How to Create a Multi-Column Auto-Complete Drop-down Box in LightSwitch [原文发表时间]: 2011-08-04 13:01 在这篇博文中,我想介绍一种非常常见的下拉用法(下拉框也称组合框或者自动完成框),能够让用户从查找或者父表中一系列值中进行选择,此下拉用法通常称为“查找列表”。通常,这些列表呈现一个栏,比如项目的“名称”。但很多时候我们希望呈现给用户多栏的信息。通过Visual Studio LightSwitch,这不仅仅容易实现,还非常的灵活,会根据你创建的布局应变。在这篇博文中,我会介绍各种常见的使用LightSwitch中自动完成框的布局。要知道的是,这些技术中大部分都不仅局限于自动完成框。实际上你会发现这些布局控制在屏幕的任何地方都是适用的。现在就让我们开始吧。 设置一个查找列表 要看视频教学点击这里:如何操作:在LightSwitch应用中创建并控制查找列表的? 当你在Visual Studio LightSwitch中将表关联之后,父表关系就会自动在屏幕上以完成框的形式呈现。如果产品隶属于分类,产品表就是分类表的父表。 当你创建了一个项目屏幕时,分类就在自动完成框内展示,并呈现表的摘要属性。当一行数据显示在屏幕上时,LightSwitch用摘要属性来决定该显示什么内容的。这不仅适用于自动完成框,而且还适用于系统的任意场景。比如,搜索屏幕使用这个属性为所选记录提供连接至编辑屏幕。系统将其默认为表内首位字符串属性,你可以在数据设计器中的属性窗口进行更改。 现在当我们为项目创建一个详细编辑屏幕时,我们就从分类中获取了自动完成框。如果你创建并运行应用(F5)你会发现类似于父表的东西呈现在自动完成框内: 摘要属性默认为显示,通常这是你所需要的。但是,你也不用局限于此。实际上,你还可以从在屏幕设计器和它丰富多样的布局控制中找到很多小花样(查看Sheel在团队博客上写的屏幕设计器贴士)。点击“设计屏幕”按钮,进入屏幕自定义模式,展开自动完成框节点,显示摘要控制: 显示多栏 要在自动完成框显示多栏,请点击摘要控件下的展开箭头,将其变更为栏布局: 默认设置下,实体上所有的域都会显示出来。将你不想在自动完成框中显示的项目删除,并按你的喜好重新编排顺序。在我的例子中,分类包括名称,描述和图片。 系统默认栏宽为150像素。你可以在这个属性中自行设置你想要的宽度。在这个例子中,我把描述设置为“自动大小”因为我希望栏可以拉伸。接着在自定义模式中点击保存,你就可以看到布局的改变了。 如要看此步骤的视频教学,点击:如何操作:在自动完成下拉框中显示多栏的? 显示图片和文本 你会发现这非常简单。不过如果你想在这里显示一张图片,那么为实现这个特定目的,你可以使用更好的布局控件,那就是“图片和文本”以及“文本和图片”布局控件。在这里你选择图片以及其它三个你想显示的信息:(TITLE)比其余的字体要大,而(SUBTITLE)的字体比(DESCRIPTION)大些。 在我的例子中,我还把名称的宽度属性设置为“自动大小”。你现在保存自定义模式就会看到一个更好的布局。当然,你无需选择图片,也可以用这个布局单独显示文本。 显示链接以编辑 有时你可能想直接在下拉单中编辑行。这样用户就可以无需打开其它的屏幕,直接更正信息了。LightSwitch通过设置标签控制为“链接”形式显示来实现此操作。这些链接看上去像超链接,它们引导用户前往编辑画面。比如回到自定义模式,我们可以选择名称属性然后将其设置为“以链接显示”。 点击保存,你就会看到名称在自动完成框中以超链接形式出现。如果你点击它,分类的默认编辑画面就会出现,让用户编辑记录。在保存变更之后,点击自动完成框底部的刷新按钮就能看到改动后的效果了。 在Visual Studio LightSwitch中还有很多灵活的布局控制,让项目编辑变得异常简单。我的下一篇博文就会告诉你怎样给自动完成框添加命令,以向列表添加新项目,这也是商业应用中用户生产率场景中非常常见的。 希望你们喜欢!

3

在几分钟内轻松地将您的LightSwitch应用程序部署到Azure网站

[原文发表地址]  Easily Deploy Your LightSwitch Apps to Azure Websites in Minutes [原文发表时间]  2012-10-18 15:49 作为我在最近的所有会议中演示准备的一部分,我一直在将我的 LightSwitch应用程序部署到Azure 网站,我可以诚实地说,它是目前为止最简单的方式来启动和运行 LightSwitch 应用程序。如果您想要一个像我在这些部署博文中所展示的纯粹的内部商务应用程序的话,当然您可以始终手动设置您自己的服务器、 数据库和网络。然而,当部署失败时,这总是很难解决哪儿出错了,因为每个人的环境是有一点点不同。Azure 网站的不错的事情就是无需为环境困扰,并已为您准备好来部署LightSwitch应用程序。 在这篇文章中,我将详细地分步介绍如何部署一个LightSwitch 应用程序到Azure网站。但是首先,您可能在想到底什么是Azure网站,它和云服务之间的区别是什么?LightSwitch 应用程序可以通过Publishing Wizard(发布向导)部署到这两者,但您为什么选择这个而不选择另一个呢? Azure 云服务提供预留的、 无限可扩展的、 n 层选项,并作为一个服务 (Paas) 运行在一个平台上。Azure 网站用于快速而简单的 web 应用程序和服务部署。您可以免费开始,然后根据需要来扩展。因此,如果您不需要Azure 云服务提供的其他服务 ,如缓存,blob 存储,CDN等,而且您只有一个 LightSwitch应用程序需要部署,那么Azure网站就是合适的选择。 如果您对部署到云服务感兴趣,请参阅Andrew &Brian的博文:使用Visual Studio 2012发布 LightSwitch 应用程序到Azure 步骤 1: 构建您的应用程序 当然我们需要一个应用程序来部署;-)所以在这篇文章中,我将使用样本库中的Contoso Construction示例。这是一个不错的高级示例,它使用了外部数据源和一些扩展,所以它是现实世界中典型的 LightSwitch 应用程序的好例子。 我想将应用程序作为一个桌面客户端,将服务和SQL 数据库托管在Azure中。Azure网站对于这个可以说是很完美。因为 LightSwitch…

2

LightSwitch社区和内容汇总——九月

原文发表地址: LightSwitch Community & Content Rollup–September 原文发表时间: 2011-09-29 07:07 社区正在不断地壮大,所以我觉得我应该开始每个月发表一些好的文章,视频,例子和扩展了。发布博文的好处是如果我遗漏了某些东西,你可以直接在评论中补充。首先给出几个LightSwitch团队“平台”,你可以进行培训,咨询,与LightSwitch团队交流互动。最大的一个平台就是: LightSwitch开发者中心 在这个地方,你可以实现一站式培训内容,例子,扩展,文档,播客,论坛入口,社区等等。所有团队内容都在这个站点上汇集,我们还在上面加了所有社区发布的扩展和例子。如果你正在学习LightSwitch,这就是你首先该去的地方。以下是一些其他不错的选择: LightSwitch MSDN论坛 LightSwitch团队博客 Facebook上的LightSwitch Twitter上的LightSwitch (@VSLightSwitch, #VisualStudio #LightSwitch) 社区站点 我还知道一些很不错的网站,上面有MVPs和社区明星运营的LightSwitch内容,你可以经常去查看一下。没有像你们这样有热情的朋友们我们是不可能进步的。如果还有谁在运营LightSwitch社区网站或者论坛的,请在评论中告诉我,我把你也加进来。 LightSwitch中心 LightSwitch帮助站点 SilverlightZone上的LightSwitch LightSwitch技巧 (意大利语) 最受欢迎团队内容 我发现既然我开了这个系列,在这里提供一些高浏览量的更新内容会很不错。有许多很好玩的东西,尤其在开发者中心学习部分,我们会不断在上面汇总博客文章,视频和库文档,下面列举一些你不容错过的内容: LightSwitch“怎么办”系列视频 LightSwitch训练技巧 LightSwitch技术白皮书系列 LightSwitch课程管理点对点例子和教程 探索LightSwitch结构 扩展LightSwitch 你还可以看一看最受欢迎例子和最受欢迎的扩展。我们在8月还发布了许多杂志文章,视频和播客。 本月值得关注的内容 我知道本月还没有结束,但是我想赶在欧洲周末派对前结束这篇博客。我会把其他一些内容汇总到下个月。以下是一些团队和社区正在做的很好玩的项目。查看一下就本月发布的19个免费扩展吧! 免费扩展(点击此处查看所有): 色彩按钮扩展 图表控件扩展 绿色商业主题 组合框 超链接商业类型 合法系统黑屏主题 亮橙色主题 LightSwitch主题商业灰 简明商业类型扩展 简明控件扩展 简明LightSwitch指令 办公黑和银色主题 办公集成包扩展 密码控件 SindControls.SnapSlider 标准形式2x蓝色主题…

1

.NET 激动人心的时刻

[原文发表地址] Exciting Times for .NET [原文发表时间] 4/10/2014 上周我有幸在//build/上发言,这是每年微软开发人员的第一次大事件。正如我在昨天的汇总中提到的,Office、SharePoint开发者可以追溯你的发言。根据tweets和之后的反馈,我的部分很顺利。你可以看这里:开发 Office 365 云业务应用程序. 虽然 Office 团队也出席了 //build/大会,但是主要这次大会主要由 Windows Azure、.NET占主导。作为一个老资历的.NET 开发人员,这次大会的气氛非常的好!作为一名员工,它远比过去我所参见的任何一次大会更鼓舞人心。这次build大会不仅对我们.Net开发者,也是对跨平台开发者传递出满满的爱。 我所在的,Visual Studio其中的较大型团队,负责很多 Visual Studio 工具 (正如你可能从我的帖子得知),但我们的团队也是负责.NET核心 框架、 CLR 和托管语言 (VB、 C#、 F #)以及很多其他的事情。在//build/大会上,.NET 和语言做了很多变化。 第二天的关键点推荐传奇 Anders Hejlsberg ,在他那里发表了”Roslyn”(.NET 编译器平台) 到 CodePlex 上并宣布该项目的开源代码。震耳欲聋的掌声充满我所在房间(是的,掌声充满了很多房间) 在”新的微软”,突出的是,所有我们团队对拥有开源和跨平台开发的态度的转变。 作为 Visual Studio 的用户,您可以将预览版安装到VS2013上,它会切换至 Roslyn 编译器得到的新的语言功能,以及Dustin 和Mads在会议上展示的IDE 增强的功能。同时也可以查阅这些相关的Channel 9 访谈。 会议:未来的 C# (他们也表现出一些 VB:-))…

1

Visual Studio 2013 中我最喜欢LightSwitch的新功能

   [原文发表地址] My Favorite New LightSwitch Features in Visual Studio 2013  [原文发表时间] 2013-09-12 周一时, VisualStudio2013候选版本已经可以使用了,这个版本上面的更多Lightswitch的功能“亮点”,让我兴奋。如果你还没有获得最新的版本,我鼓励你们下载。 下载并安装VS2013RC(你可以安装在预览版本上面) 在LightSwitch团队的博客上能看到很多他们正在研发的新功能,但这里只介绍我和他们工作一段时间后觉得最感兴趣的内容。现在从最亮眼的部分开始… 新的项目系统 在VisualStudio2013中,我们彻底地改变了解决方案资源管理器中的LightSwitch解决方案及其相关项目的显示方式。我们不再有单独的逻辑和文件的视图。我们不再隐藏任何组成层叠的LightSwitch解决方案的配套项目和文件。我们也分开了模型文件来匹配你在LightSwicth中工作时用到的每种类型的资产,比如一个实体,查询,或者屏幕。现在每个这些项目都代表一个与众不同的LSML文件。 我得承认一开始我有些害怕,但我觉得更多的是“你动了我的奶酪”反应(人们抗拒改变,我也不例外)。但在使用新系统工作了几个月之后,我觉得它真的很方便。 特别是在构建HTML的客户端时,你想要调整CSS,添加自己的JavaScript库和部件,并添加引用来指向default.htm。对于服务器的项目,你可能想要添加自己的自定义类,业务规则的扩展方法,等等。以前我发现自己需要经常切换到文件视图来做这些事情。这种新的结构要好得多,因为我在任何时候都可以看到我需要的所有文件。它与解决方案资源管理器的一些很酷的功能也能很好的兼容,如搜索和范围的视图。 我们仍然拥有熟悉的节点,像“数据源”和“屏幕”,但你也会看到,它们所属的项目是可见的,这么一来所有的支持文件组织成了逻辑文件夹。 你可能会注意到你的解决方案的节点下的项目的名称为“悬挂的节点”。如果你展开该节点,你只会看到它的属性。这将带你进入LightSwitch服务器属性页面,在这里你可以指定功能扩展和访问控制选项。此外,如果你启用了SharePoint,那么你也会看到这些属性。如果你有一个Silverlight客户端在你的解决方案中,那么你也可以在这里访问客户端属性。                                                                                                                                                             多重LightSwitch设计器 作为看到所有这些文件和分裂模型的结果,我们现在可以一次打开多个LightSwitch设计器!是的!对于开发经验来说,这绝对是一个值得欢迎的新功能。你打开任何资产(实体,查询,屏幕)将打开它自己的实例,并且你可以把这些设计器窗口停在你想要的任何地方。 关于LightSwitch,我一直喜欢的事情之一是它的超快速的数据建模和屏幕设计。当你改变你的数据模型(编辑或者从实体移除属性)时,你创建的基于实体的屏幕就会自动更新。这完全地消除了数据绑定错误。现在,你可以打开多个设计器,你会发现,如果你更改名称或从实体移除属性,任何基于它的打开的屏幕也会显示脏标志。此外,如果你的项目在源代码管理下,你会在解决方案资源管理器中注意到一个更改标志(更多的在源代码控制下!) 更好的SCC的支持 分裂模型的另一个结果是大大简化了开发团队为了建立一个单一的LightSwitch的解决方案不得不在迁入源代码控制时, 处理合并冲突的负担。现在每个文件代表一个资产,合并冲突应该比以前少得多。而当它们工作时,你可以更容易地识别它们,因为模型文件(LSML)小得多。 LightSwitch测试团队已经释放了一系列团队的新产品,包括数据源控制,连续的构建、用户界面和负载测试。可以从以下链接中迁出: 团队开发系列第1部分:引言(Peter Hauge) 团队开发系列第2部分:源代码控制的最佳实践(RaghuveerGopalakrishnan) 团队开发系列第3部分:改变LightSwitch团队建设(Saar Shen) 团队开发系列第4部分:测试LightSwitch应用程序(Saar Shen) SQL Server数据工具(SSDT)链接的数据库项目 我的另一个最喜欢的功能是能够把SQL Server数据工具(SSDT)数据库项目连接到LightSwitch应用程序,以便执行LightSwitch的“ApplicationData”数据库的高级操作。这通常被称为作为内部或内部数据库。 以前,如果你需要支持默认数据,存储过程,维护,管理标志,或任何其他在LightSwitch数据设计的范围外的数据库编程,你不得不选择与外部数据库调和和管理完全脱离LightSwitch的开发经验。现在你不必了。如果你想为新LightSwitch项目创建一个新的数据库,你可以使用数据设计把数据模型化,然后在一个链接的项目中写一些脚本来实现数据库的高级定制。这些脚本和内部数据库一起被部署在F5和发布中。 为了使用这一点,只需添加一个新的数据库项目到您的解决方案,然后在LightSwitch项目属性中,你可以把它们联系在一起。 请记住,你仍然需要使用数据设计器来定义架构。以下是数据库项目的一些实际用途: 添加存储过程你LightSwitch原有的数据库 原有的数据库管理与数据库项目 LightSwitch应用中的数据管理 HTML表控件 其中一个最重要的反馈是我们从客户那里听到的,在我们在四月份第一次 在vs2012 Update 2发布的HTML客户端中,缺少了一个表/网格控件,现在它在这里,伙计! 基于jQuery…

1

LightSwitch 社区&内容汇总–2012年四月

[原文发表地址]  LightSwitch Community & Content Rollup–April 2012 [原文发表时间]  2012-05-01 7:11 AM 去年秋天,我开始发表一系列围绕Visual Studio LightSwitch的博文,其中包括了社区发生的有趣事情、 内容、 示例和扩展。如果你错过了这些汇总,您可以在这里查看所有的: LightSwitch 社区&内容汇总 自2 月 29 日发布Visual Studio 11 beta 版后, 4 月里仍然有很多围绕Beta版的事情。如果你还没有使用它,我鼓励你下载 Visual Studio 11 Beta。此外请确保查阅这些 LightSwitch Beta 的资源和社区站点: 有一个想法吗?:LightSwitch UserVoice 站 需要报告 一个bug 吗?: LightSwitch Connect站点 有一个问题吗?: LightSwitch beta 版论坛 需要学习新的功能?: LightSwitch 开发人员中心 Visual Studio Beta中 LightSwitch的资源 LightSwitch…

1

LightSwitch 办公集成扩展包的乐趣

原文发表地址: Fun with the Office Integration Pack Extension for LightSwitch 原文发表时间: 2011-09-22 07:43 AM 上周Grid Logic发布了一款免费的LightSwitch扩展,叫做办公集成包,它迅速跃居VS Gallery上最受欢迎的LightSwitch扩展第二位!它能让你用数据填充文档和电子表格,用Outlook创建邮件和约会,从Excel导入重要数据,创建PDF以及做一些LightSwitch桌面应用的其他东西。大家都知道我做过一些office开发,所以我想亲自试试这个扩展。在这篇博文中,我会给你一些关于从Excel和Word导出数据的小技巧。 安装办公集成包 首先你要做的就是安装这个办公集成包。你还可以下载应用程序示例和文档。(顺便提一句,这里还免费提供源代码!)你可以直接通过Visual Studio LightSwitch中的扩展管理器下载安装办公集成包,或者你也可以手动从Visual Studio Gallery下载。 安装了扩展之后,重启Visual Studio。然后你要通过打开项目属性,点击扩展标签,选择办公集成包来使得你的LightSwitch项目上启用扩展。 现在我们来看看这个小东西能做什么。 导出到Excel LightSwitch在数据网格上有一个很好的功能,那就是可以让你将其导出到Excel: 它提供给用户一种基本的方法:从系统中调取数据,创建报告或者用Excel对数据做进一步的分析。不过,你不能用自己的代码来调用这个功能。办公集成包里很好的一个功能就是它不仅支持用代码来调用导出,还可以为它添加一系列自定义处理。你可以控制导出哪些字段,还可以指定导出数据到哪个工作表中。 比如说在我的搜索屏幕(如上图所示)中有一列客户,我希望创建自己的输出,只导出CompanyName, ContactName, ContactTitle 和Phone这些内容。在屏幕设计器中先添加一个按钮到Data Grid的命令栏,我把它叫做ExportToExcel。 在属性窗口,你可以指定一张图片来显示你想显示的东西。我们还可以在网格中通过选择Customer Data Grid来关掉默认的Excel导出,,并在属性窗口选择“Disable Export to Excel”。 现在我们就需要写些代码来导出我们所需要的字段了。右击ExportToExcel按钮,选择“Edit Execute Code”。我们可以用多种不同的OfficeInetgration.Excel.Export API来实现。我学习一个新的API常用的方法是通过IntelliSense,所以如果我们开始输入“OfficeIntegration (dot) Excel (dot)”,你会看到一系列可用的方法: 这个Export方法有四个重载。第一个也是最简单的一个就是获取数据集合,输出所有数据和字段到一个新的Excel中,就和内置Excel导出一样。第二个重载可以让我们指定一个特定的Excel,ExcelSheet和区间。在我们的例子中,我们想要指定特定的字段,这可以有多种方法来实现。第三个和第四个重载可以让我们指定ColumnNames参数,它有两种形式。一种是一个简单的List(Of String)。只需用把你想输出的字段名字填充到列表就可以了。 1: Private Sub ExportToExcel_Execute() 2: Dim…

1

在 5 分钟内为 LightSwitch 解决方案构建一个 HTML 客户端

[原文发表地址]  Building an HTML Client for a LightSwitch Solution in 5 Minutes [原文发表时间]  2012-11-22 8:42 如果你还没听说,我们上周发布了 HTML客户端预览版 2,其中添加了能够为你的 LightSwitch 解决方案创建基于 HTML5/JavaScript 的客户端的功能。我想通过添加一个HTML配套应用程序到我的Contoso Construction示例中来演示如何快速构建这些客户端将是个不错的做法。 Contoso Construction是一个示例,它使用了 LightSwitch 扩展和稍微高级的编码技术,以此与邮件服务器相集成、 自动化 Word 和 Excel、创建地图可视化效果、 提供高级的数据筛选以及连接到 OData 源。Silverlight 客户端是在桌面上运行的,用于建筑公司管理建设项目。 此应用程序的功能之一就是添加施工现场的照片。 然而目前,它的工作方式是工地上的人必须得将图片带回办公室上传,或人员需要随身携带一台笔记本电脑来运行这个丰富的桌面应用程序。因此,我们希望能够提供通过任何现代的移动设备上传照片的功能。那就让我们看看如何在几分钟内创建此配套客户端。 添加一个客户端 我们需要做的第一件事是添加一个新的移动客户端到我们当前的项目中。(你将需要首先安装 LightSwitch HTML 客户端预览版 2来得到此功能。请记住,此版本仍处于预览中,所以请确保不要这样对任何产品应用程序使用它 — — 请使用副本;))。 右击项目节点,选择" Add Client…(添加客户端)" 然后选择 HTML 客户端,将客户端命名为"MobileClient"。 这样做了以后,LightSwitch 将会升级你的项目以支持预览版 2…

1

在Visual Studio 11的LightSwitch应用程序中使用SQL Server LocalDB

[原文发表地址]  Working with SQL Server LocalDB in LightSwitch Projects in Visual Studio 11 [原文发表时间] 2012-04-19 16:10 说明:本文适用于Visual Studio 11 Beta中的LightSwitch (LightSwitch V2) 在Visual Studio LightSwitch中,当你通过数据设计器设计数据模型时,你不是在创建新的表就是在连接到外部数据源。当你创建新表时,LightSwitch 会自动在内部数据库中创建它们,这也被称为内在数据库或ApplicationData。在 Visual Studio 2010 中的 LightSwitch 的第一个版本中,我们将 SQL 2008 Express用于内部数据库开发。现在Visual Studio 11中的LightSwitch,我们则使用SQL Server LocalDB。(注: LocalDB 仅在开发过程中使用。当你部署你的应用程序时,你可以选择部署到SQL Server的任何版本。) LocalDB 是SQL Server Express的新版本,它占用更少的内存,是为开发人员而设计的。当你安装 Visual Studio 11 时,它会自动为你安装。当开发LightSwitch 项目时,LocalDB 用于替换SQL Server Express 用户实例功能(现在不建议使用它)。在这篇文章中,我将为你们展示一些在LightSwitch项目中使用…

1

在数据输入屏幕上筛选有大量数据的查询列表

原文发表地址 Filtering Lookup Lists with Large Amounts of Data on Data Entry Screens 原文发表时间 2011 9-15 3:53 PM 在数据输入屏幕上筛选有大量数据的查询列表 首先我想说,能回来继续写博客真好。真不好意思我离开了几周——从旅行归来后我一直在内部做一些很酷的东西。我收到了许多你们对于文章和视频的建议,非常感谢你们一直以来那么包容我。今天我要向你们展示创建数据输入屏幕时另一个常见(且必要的)技术。 在我之前关于数据驱动查询列表(有时称为“选择列表”)的博文里,我展示了一些格式化,编辑和添加数据的技巧。如未看到这些博文,请参见以下链接: 如何在LightSwitch中创建多栏自动完成下拉框 如何在LightSwitch中允许向自动完成下拉框添加数据 在这篇博文中我会向你展示一些不同的方法,来帮助用户在数据输入屏幕上从大量查找列表数据中做选择。比如,假设我们产品与分类间有一对多的关系,在输入新产品时我们就要从自动完成框中选择一个分类。LightSwitch会根据我们创建产品的屏幕自动生成这个分类。然后我们就可以为它设置格式,就像我在先前的例子中展示的那样。 现在假定我们设定了上百甚至上千种产品的分类,在为我们的客户创建订单时,我们需要从中选择。这就是我将要使用的数据模型——它显示了一个产品要在一个OrderDetail行项目上被选中。OrderDetail有一个父OrderHeader栏,这个父栏又从属于一个父客户栏,就像good ‘ol Northwind那样。 在上面的产品屏幕上,只有20个分类,所以在下拉分类表中显示所有的查询列表数据不成问题。但是,对有许多数据的产品表来说这不是最佳的选择——要下拉数据太多,一下子显示会比较困难。这对我们的用户来说也许也不是一个很有成效的选择,无论他们想上下滚动浏览数据,或了解他们寻找的产品名称来使用自动完成框。更好的方案是使用,能支持更多的搜索选项并为数据分页的模态窗口选取器。或通过给出分类下拉栏,筛选用户首先选择的产品列表。我们来详细看看这两种方法。 使用模态窗口选取器 假定我选择了编辑详情屏幕模板来创建一个屏幕以输入OrderDetail记录。根据默认设置,LightSwitch会自动生成一个产品自动完成框。这同样也适用于OrderHeader,因为它也是OrderDetail的父类。在这个屏幕上,我不想让用户来改变OrderHeader,所以我会把它变成一个总结控件。我还会把产品上的自动完成框将变成模态窗口选取器: 我还想让产品按照字母排列显示,所以我还创建了一个名为“SortedProducts”的查询,然后在屏幕顶端选择“添加数据项”,然后选择SortedProducts查询: 给屏幕添加完查询后,选择目录树中的产品,设置“Choices”属性从“Auto”改为“SortedProducts”。 你还可以决定每页显示多少行的数据,只要选择SortedProducts查询,然后在属性窗口设置每页显示项数即可。默认设置是每页45行。 现在点击F5运行应用,看看结果。注意当你运行屏幕时,你可以选择Product旁的省略号,调出模型窗口选取器。用户可以搜索并为数据分页。这对用户来说不仅方便了查询,而且对服务器来说也很高效。 使用经筛选的自动完成框 另一个技巧就是使用一个自动完成框作为筛选器进入下一个分类。这限制了需要被下拉并显示给用户的选择数量。如果你有级联筛选列表的话,这个技巧会非常有用。第一次的选择筛选了第二个筛选的数据,然后第二个再筛选下一个的数据,以此类推。数据可以来源于同一个表,也可以像我例子中那样来源于不同的表——你要做的就是在屏幕上正确设置查询,这样它们就可以被适当地选择筛选了。 返回上面的OrderDetail屏幕,把产品目录项设回自动完成框控件。然后我们要为屏幕添加一个数据项来跟踪被选分类。我们会用这个分类来决定产品列表上的筛选器,所以用户只会看见被选分类中的产品。再次点击“添加数据项”,这次添加一个名为“SelectedCategory”本地分类类型属性。 然后,把SelectedCategory拖到上述产品的目录树上。LightSwitch会自动创建自动完成框控件。 如果你还想给分类列表分类,可以参照我们对产品的分类方法,依照个人喜好创建一个查询,为屏幕添加数据项,然后把选择属性从自动设到查询。 现在我们要对根据分类筛选的产品创建一个查询。有两种方法。你可以创建一个新的名为ProductsByCategory的全局查询,如果这个查询只为这个特定的屏幕使用,你可以点击我们之前添加的SortedProduct查询旁边的编辑查询。我们采用的是这种做法。这会打开查询设计器,你可以在屏幕上本地修改查询。点击+Filter按钮,在Category.Id上添加一个参数化的筛选,然后在第二个下拉栏中选择Category.Id,在第四个下拉栏中选择参数,在最后一个下拉中选择“Add New…”来创建一个参数化的询问。你也可以让这个参数可选或者必选。我们将其设为必选,这样用户就必须在产品显示前选择分类了。 最后我们要连接参数绑定。回到屏幕,选择刚在SortedProducts查询上创建的Id参数,在属性窗口设置参数绑定到SelectedCategory.Id。完成此项操作后,左边灰色列中会显示绑定。 设置查询参数值后,LightSwitch会自动执行查询,你无需编写额外的代码。点击F5看看结果。注意现在产品下拉列表是空的,你必须先选择一个分类,满足SortedProducts查询,然后执行。还有就是如果你做了产品选择,然后改变了分类,选择仍会显示,不会消失。只要记得每次用户改变分类,产品查询都会在服务器上重新执行一遍。 除此之外,你还可能想做的是显示产品所属初始分类。当屏幕打开时,选择分类是空白的。这是因为它是和屏幕属性绑定的,而属性不支持数据。不过我们可以在代码中设定SelectedCategory的初始值。回到屏幕设计器,在右上方下拉有“编写代码”按钮,选择InitializeDataWorkspace方法,编写以下代码: 1: Private Sub OrderDetailDetail_InitializeDataWorkspace(saveChangesTo As List(Of IDataService)) 2: ‘ Write your…

1