SharePoint 2010中的客户端AJAX应用——对话框显示详细信息页

不止于采样:深度挖掘英飞凌Aurix EVADC的硬件同步与高级触发模式,实现多传感器精准时序采集 本文深入探讨英飞凌Aurix TC3xx系列EVADC模块的硬件同步与高级触发技术,揭示如何通过多簇异构转换单元设计和精密时钟校准,实现汽车电子中多传感器微秒级精准时序采集。重点解析GTM定时器触发配置、低抖动采样时序构建及MCAL优化策略,为电机控制、BMS等应用提供硬件级解决方案,显著提升系统性能与能效。 阅读详情

 http://archive.cnblogs.com/a/1789846/

 

本文是SharePoint 2010客户端AJAX应用系列的一部分。

ASP.Net AJAX模板是一门全新的引人注目的客户端技术,允许开发者快速构建AJAX易于维护的交互式应用程序。由于ASP.Net AJAX模板和SharePoint 2010都支持oData协议,因此两者结合在一起将是一个强大的组合。

SharePoint 2010 之所以可以带给人们Web 2.0的外观和感觉很大一部分要归功于其弹出式模式对话框的使用。为了进一步丰富上一篇 中的AJAX应用,我们在每张卡片上挂接一个操作,打开一个对话框以便对该卡片做更细致的处理。在之前的使用SharePoint 2010模式对话框 一文中,我们学习了如何在模式对话框中打开远端的页面,以及如何响应对话框确定或取消事件。本文中的模式对话框会更进一步,基于本地的HTML内容打开对话框。

首先,我们在前文中做好的索引卡上添加一个编辑图标。我们将在其上挂接打开模式对话框的操作:

1 < div class = "userStoryTitle" >
2      {{ 标题 }}
3      < span class = "userStoryButtons" >
4          < a href = "#" onclick = "javascript:openDialog(); return false;" >
5              < img src = "/_layouts/images/edititem.gif" />
6          </ a >
7      </ span >
8 </ div >

为了先简单测试一下打开对话框的效果,同时也复习一下前面学习的模式对话框的使用,我们编写如下的打开对话框代码:

1 function openDialog() {
2      var options = {
4          width: 800,
5          height: 600,
6          title: "User Story" ,
7      };
8      SP.UI.ModalDialog.showModalDialog(options);
9 }

显然硬编码的URL中的参数id不是最佳做法,这里只是作为示范。结果看起来像这样:

这是一个非常有用的技术,允许我们在不离开现有的SharePoint网页的情况下打开一个对话框,使用户可以直接浏览另一个网页。然而,在这里我们希望我们的应用程序中编辑的信息是在浏览器的内存里(通过ASP.Net AJAX模板存储数据)。该showModalDialog()函数可以支持这一方案,但要稍微复杂一些。

模式对话框方式打开本地HTML内容

首先,我们需要一个HTML元素用于弹出。作为用来测试的一个初稿,我们使用如下的html内容:

1 < div id = "userStoryDetails" >
2      Hello World!
3 </ div >

由于我们传递给showModalDialog()的options参数支持一个'html'参数来替代'url'参数,因此猜测可能看起来我们只需要简单地在openDialog中获取到userStoryDetails元素并作为选项传递即可。然而,这一做法有一个问题。默认SharePoint的showModalDialog()函数将销毁传递给它的DOM元素。结果是对话框只可以打开一次,再次打开就会失败。

为了避免这种行为,我们可以在一个全局变量中缓存该DOM元素,而不是放在函数层中作为一个局部变量。代码如下所示:

01 var userStoryDetails;
02    
03 Sys.onReady(function () {
04      userStoryDetails = document.getElementById("userStoryDetails");
05      ...
06 });
07    
08 function openDialog() {
09      var options = {
10          html: userStoryDetails,
11          width: 600,
12          height: 300,
13          title: "User Story",
14      };
15      SP.UI.ModalDialog.showModalDialog(options);
16 }

有了这个代码,我们就可以多次关闭和打开模式对话框了。结果如下所示:


接下来我们来处理对话框操作完成后的结果。在前面的文章中我们也介绍过做法。首先在对话框的代码中调用commonModalDialogClose(),然后在主窗口中实现回调函数,以便SharePoint在关闭弹窗时调用。
修改我们的userStoryDetails内容,增加调用commonModalDialogClose()的代码如下:

01 < div id = "userStoryDetails" >
02    < input
03      type = "button"
04      value = "确定"
05      onclick = "SP.UI.ModalDialog.commonModalDialogClose(SP.UI.DialogResult.OK, '点了确定'); return false;"
06      class = "ms-ButtonHeightWidth"
07      />
08    < input
09      type = "button"
10      value = "取消"
11      onclick = "SP.UI.ModalDialog.commonModalDialogClose(SP.UI.DialogResult.cancel, '点了取消'); return false;"
12      class = "ms-ButtonHeightWidth"
13      />
14 </ div >

请注意commonModalDialogClose()第一个参数,是一个DialogResult。这个参数非常重要,因为我们的回调函数将通过此方法,区分不同的对话框关闭方式。例如,当用户点击在右上角的X时,SharePoint会传递DialogResult.cancel作为第一个参数。

commonModalDialogClose()的第二个参数会直接作为回调函数的第二个参数进行传递。

为了关闭对话框时对结果进行处理,我们可以为showModalDialog函数的options参数中增加一个dialogReturnValueCallback参数。结果如下:

01 function openDialog() {
02      var options = {
03          html: userStoryDetails,
04          width: 800,
05          height: 600,
06          title: "User Story" ,
07          dialogReturnValueCallback: onDialogClose
08      };
09      SP.UI.ModalDialog.showModalDialog(options);
10 }
11    
12 function onDialogClose(dialogResult, returnValue) {
13      if (dialogResult == SP.UI.DialogResult.OK) {
14          alert( '( ^_^ )/~~拜拜!' );
15      }
16      if (dialogResult == SP.UI.DialogResult.cancel) {
17          alert(returnValue);
18      }
19 }

现在我们可以打开和关闭SharePoint模式对话框并处理结果。如果需要,我们还可以对模式对话框的options中的其他参数进行调整。例如的X,Y,allowMaximize,showMaximized和showClose。这方面的文档很少,希望MSDN上的这个页面 在不久的将来能够更新。

接下来,我们要正式进行对话框内容的编写。

显示selectedData

为了可以显示当前选定的项目,我们将需要将弹出对话框中的HTML绑定到当前选中的列表项。下面是一个最简单的例子:

1 < div id = "userStoryDetails" class = "sys-template" >{{ 标题 }}</ div >

注意其中sys-template类的使用。在上一篇博文中我们说过,任何dataView 依附的元素都需要加上这个类。用于在页面加载时将该元素设为display:none,dataView显示时会将其设回到display:block。

接下来,我们需要第二个dataView对象来绑定对话框中显示的HTML内容。

1 detailsDataView = Sys.query( "#userStoryDetails" ).dataView().get(0);

注意,我们并没有像第一个dataView那样设置dataProvider或fetchOperation。原因是我们将绑定其data属性到主dataView的selectedData属性,如下所示:

1 $create(Sys.Binding, {
2             source: dataView,
3             path: "selectedData" ,
4             target: detailsDataView,
5             targetProperty: "data"
6         });

selectedData 是DataView的一个特殊属性,代表当前选定的项目。现在离我们完成主-子关系的应用场景已经非常接近了。剩下的主要任务就是告诉主DataView什么时侯更新 selectedData。我们可以通过在主DataView的模板中的某个元素上添加sys:command="select"来完成该任务。添加到打开该模式对话框的按钮上应该最合乎逻辑:

1 <span class= "userStoryButtons" >
2            <a  href= "#" onclick= "javascript:openDialog(); return false;"   sys:command= "select" >
3                  <img alt= "edit" src= "/_layouts/images/edititem.gif" >
4            </a>
5 </span>

现在,我们完成了如下所示的逻辑:

显示主项对应的详细信息

到目前为止,我们所显示的信息过于单薄了。在后面的博文中,我们会实现对字段内容的编辑和保存功能。本文中,我们仅仅再多加些只读字段。

01 < div id = "userStoryDetails" class = "sys-template" >
02   < table class = "ms-formtable" width = "100%" >
03      < tr >
04        < td class = "ms-formlabel" width = "190" >标题:</ td >
05        < td class = "ms-formbody" >{{ 标题 }}</ td >
06      </ tr >
07      < tr >
08        < td class = "ms-formlabel" width = "190" >点数:</ td >
09        < td class = "ms-formbody" >{{ 点数 }}</ td >
10      </ tr >
11      < tr >
12        < td colspan = "2" nowrap>
13          < span >创建于 </ span >
14          < span >{{ String.format("{0:yyyy-M-dd h:m tt}", 创建时间) }}</ span >
15    
16          < input type = "button" name = "OK" value = "确定" class = "ms-ButtonHeightWidth"
17            onclick = "SP.UI.ModalDialog.commonModalDialogClose(SP.UI.DialogResult.OK); return false;" />
18          < input type = "button" name = "Cancel" value = "取消" class = "ms-ButtonHeightWidth"
19            onclick = "SP.UI.ModalDialog.commonModalDialogClose(SP.UI.DialogResult.cancel,'点了取消'); return false;" />
20        </ td >
21      </ tr >
22    </ table >
23 </ div >

关于上面的详细信息视图,有两处需要注意。其一,我们可以显示像点数这样的没有在主dataView出现过的字段(假设在列表中有这个字段)。之所以可以,是因为主dataView实际上默认情况下是下载了列表的所有字段。关于如何从相

关的列表中获取数据也是我们在将来博文中要讨论的一个话题。
其二,我们处理日期时间的方式是如此简单。String.format是AJAX库提供的一个方法,可以用于格式化SharePoint提供的酷似C#/VB中的日期格式,使其变成读者可以接受的格式。以下是我们做好的新的详细信息视图:

下面是至今为止整个应用程序的源代码:

001 <%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>
002 <%@ Import Namespace="Microsoft.SharePoint.ApplicationPages" %>
003 <%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
004 <%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
005 <%@ Register Tagprefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
006 <%@ Import Namespace="Microsoft.SharePoint" %>
007 <%@ Assembly Name="Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
008 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="UserStories.aspx.cs" Inherits="PreDemo.Layouts.PreDemo.UserStories" DynamicMasterPageFile="~masterurl/default.master" %>
009    
010 < asp:Content ID = "PageHead" ContentPlaceHolderID = "PlaceHolderAdditionalPageHead" runat = "server" >
011 < style type = "text/css" >
012    .sys-template 
013    {
014      display:none;
015    }
016    .userStoryBackground
017    {
018      background-image: url('Images/corkboard.png');
019      width:695px;
020      height:397px;
021    }
022    .userStoryCard
023    {
024      border: 1px solid #777777;
025      width: 206px;
026      height:124px;
027      cursor: move;
028      background-image: url('Images/blankcard.png');
029      margin:4px;
030    }
031    .userStoryDescription
032    {
033      padding: 5px;
034      line-height:1.2;
035    }
036    .userStoryTitle
037    {
038      font-weight: bold;
039      padding: 2px 5px 0px 5px;
040    }
041 .userStoryButtons
042 {
043      position: absolute;
044      right: 0px;
045      padding: 2px 2px 0 0;
046 }
047 .userStoryButtons img
048 {
049      border: 0 none;
050 }
051 </ style >
052 < script src = "/_layouts/Scripts/jQuery/jquery-1.4.1.js" type = "text/javascript" ></ script >
053 < script src = "/_layouts/Scripts/plugins/jquery-ui-1.8.2.custom.min.js" type = "text/javascript" ></ script >
054 < script src = "/_layouts/Scripts/MicrosoftAjax/Start.js" type = "text/javascript" ></ script >
055 < script src = "/_layouts/Scripts/MicrosoftAjax/MicrosoftAjax.js" type = "text/javascript" ></ script >
056    
057 < script type = "text/javascript" >
058    
059 Sys.require([
060 Sys.components.dataView,
061 Sys.components.openDataContext,
062 ]);
063      var dataContext;
064      var dataView;
065      var userStoryDetails;
066      var detailsDataView;
067    
068    
069      Sys.onReady(function () {
070   userStoryDetails = document.getElementById("userStoryDetails");
071    
072          dataContext = Sys.create.openDataContext({
073              serviceUri: "/_vti_bin/ListData.svc",
074              mergeOption: Sys.Data.MergeOption.appendOnly
075          });
076    
077          dataView = Sys.query("#userStoriesList").dataView({
078              dataProvider: dataContext,
079              fetchOperation: "UserStories",
080              feachParameters: { orderby: '标题' },
081              autoFetch: "true",
082              rendered: onRendered
083          }).get(0);
084    
085          detailsDataView = Sys.query("#userStoryDetails").dataView().get(0);
086            
087          $create(Sys.Binding, {
088              source: dataView,
089              path: "selectedData",
090              target: detailsDataView,
091              targetProperty: "data"
092          });
093      });
094      function onRendered() {
095          $(".userStoryCard").draggable({
096              stop: onDragStop
097          });
098      }
099      function onDragStop(event, ui) {
100          var userStoryCard = ui.helper[0];
101          var selectedUserStoryJsonObject = dataView.findContext(userStoryCard).dataItem;
102          var newX = ui.position.left;
103          var newY = ui.position.top;
104          Sys.Observer.setValue(selectedUserStoryJsonObject, "X", newX);
105          Sys.Observer.setValue(selectedUserStoryJsonObject, "Y", newY);
106          dataContext.saveChanges();
107      }
108    
109      function openDialog() {
110          var options = {
111              html: userStoryDetails,
112              width: 580,
113              height: 320,
114              title: "User Story",
115              dialogReturnValueCallback: onDialogClose
116          };
117          SP.UI.ModalDialog.showModalDialog(options);
118      }
119    
120      function onDialogClose(dialogResult, returnValue) {
121          if (dialogResult == SP.UI.DialogResult.OK) {
122                
123          }
124          if (dialogResult == SP.UI.DialogResult.cancel) {
125               
126          }
127      }
128 </ script >
129 </ asp:Content >
130    
131 < asp:Content ID = "Main" ContentPlaceHolderID = "PlaceHolderMain" runat = "server" >
132 < div id = "userStoryDetails" class = "sys-template" >
133   < table class = "ms-formtable" width = "100%" >
134      < tr >
135        < td class = "ms-formlabel" width = "190" >标题:</ td >
136        < td class = "ms-formbody" >{{ 标题 }}</ td >
137      </ tr >
138      < tr >
139        < td class = "ms-formlabel" width = "190" >点数:</ td >
140        < td class = "ms-formbody" >{{ 点数 }}</ td >
141      </ tr >
142      < tr >
143        < td colspan = "2" nowrap>
144          < span >创建于 </ span >
145          < span >{{ String.format("{0:yyyy-M-dd h:m tt}", 创建时间) }}</ span >
146    
147          < input type = "button" name = "OK" value = "确定" class = "ms-ButtonHeightWidth"
148            onclick = "SP.UI.ModalDialog.commonModalDialogClose(SP.UI.DialogResult.OK); return false;" />
149          < input type = "button" name = "Cancel" value = "取消" class = "ms-ButtonHeightWidth"
150            onclick = "SP.UI.ModalDialog.commonModalDialogClose(SP.UI.DialogResult.cancel,'点了取消'); return false;" />
151        </ td >
152      </ tr >
153    </ table >
154 </ div >
155    
156 < div id = "userStoriesList" class = "sys-template userStoryBackground" xmlns:sys = "javascript:Sys" >
157       < div   class = "userStoryCard" sys:style = "{{ 'left:'+X+'px;top:'+Y+'px;'}}" >
158            < div class = "userStoryTitle" >
159            {{ 标题 }}
160            < span class = "userStoryButtons" >
161                < a   href = "#" onclick = "javascript:openDialog(); return false;"   sys:command = "select" >
162                  < img alt = "edit" src = "/_layouts/images/edititem.gif" >
163                </ a >
164            </ span >                           
165            </ div >
166            < div class = "userStoryDescription" >< div >{{ 说明 }}</ div >
167       </ div >
168 </ div >
169    
170 </ asp:Content >
171    
172 < asp:Content ID = "PageTitle" ContentPlaceHolderID = "PlaceHolderPageTitle" runat = "server" >
173 应用程序页
174 </ asp:Content >
175    
176 < asp:Content ID = "PageTitleInTitleArea" ContentPlaceHolderID = "PlaceHolderPageTitleInTitleArea" runat = "server" >
177 我的应用程序页
178 </ asp:Content >

总结

我们已经了解了如何绑定一个详细信息DataView到当前选中的主DataView项目,并为不同的数据类型使用不同的格式设置。下一篇中我们将更新详细信息DataView,使其支持列表项的编辑。

37、探索 SharePoint 客户端编程:从 AJAX 到 WCF 数据服务 本文深入探讨了 SharePoint 客户端编程的核心技术,涵盖从页面加载执行代码、调试 JavaScript、使用 AJAX 和面向对象的 JavaScript,到 jQuery 和 WCF 数据服务的详细应用。文章不仅提供了多种技术的实现示例,还通过实战案例展示了如何综合运用这些技术开发功能丰富的 SharePoint 应用。最后,文章展望了未来 SharePoint 客户端开发的趋势,帮助开发者更好地应对不断变化的技术环境。 阅读详情

相关推荐

比较不错的jquery提示框:jQuery Modal Dialog弹出对话框.rar

一个想当漂亮的jquery提示框:jQuery Modal Dialog弹出对话框插件,可用它实现各种的网页提示效果,比如错误提示框、警告框、操作提示框等,暖色调界面,使用方法简单,参考本例所展示的各种提示框生成办法,就可上手。

SharePoint 2013中使用SP.UI.ModalDialog.showModalDialog时showModalDialog未定义的解决办法

本文讲述SharePoint 2013 中使用 SP.UI.ModalDialog.showModalDialog时 showModalDialog 未定义的问题。 functionDialogCallback(dialogResult,returnValue) {...

weixin_34179968的博客 434

modal-dialog:jQuery 插件

modaldialog.js modaldialog.js基于jQuery开发的插件。 Feature 支持多弹出层 兼容主流浏览器,包括IE6 Demo $("#btn").click(function(){ var dialog = new Dialog({ content:"<p>Hello, world</p>" }); }); $("#logBtn").bind("click",function(){ var loginDialog = new Dialog({ title:"登陆", templateUrl:"template/login.html" }) });

SP.UI.ModalDialog.ShowDialog(options)杂记

 var value = SP.UI.ModalDialog.showModalDialog(options);

wyaspnet的专栏 2723

星网锐捷语音网关密码重置恢复出厂设置

星网锐捷语音网关---密码重置 第一种星网锐捷SVX网关恢复出厂设置的方法 eth1口 任意口插网线,连接电脑并设置电脑固定ip为: 一, 二 网页输入: 192.168.88.86 admin 默认密码 admin 登陆。 忘记密码 可通过以下方法重置: 三: 通过crt或者 shell工具 ,连接 root@192.168.88.86 连续输入两次 passwd a12345678 reboot重启后。通过账号 密码 a12345678 即可登陆系...

cibazhanji2176的博客 1万+

app编写需要哪种语言

原生App开发:优选Swift(iOS)和Kotlin(Android)。跨平台App开发:优选Flutter(Dart)和React Native(JavaScript)。游戏App开发:优选Unity(C#)和Unreal Engine(C++)。低代码工具:适合简单、快速的App制作。

fanying_98的博客 2070

EasyUI中dialog与modalDialog弹窗

最近在做项目新需求时,发现easyUI中弹窗不能完全关闭问题,一直没找到问题,最后才明白原来EasyUI中的弹窗的分内层和外层。在使用最外层弹框modalDialog时,一个页面只能使用一个,如果存在两个modalDialog弹窗会导致其中一个在提交的时候报错。 因为系统不知道具体要关掉的哪个弹窗。但是需求中有需要两个弹窗怎么办? 我在项目中使用了一个modalDialog最外层弹窗,接着又创...

qq_43474424的博客 6214

vcs中systemverilog和c/c++联合仿真

前言 systemverilog中,可以通过DPI、PLI来与外部其它语言的程序进行交互。PLI又分为三类,TF、ACC和VPI,可以认为是PLI技术的三代演进: 其中VPI(PLI3.0)是TF/ACC的一个超集,目前使用的PLI基本上都是VPI。 与PLI技术相独立的另一个技术就是DPI,DPI技术简化了systemverilog与foreign language的交互步骤,对于开发者相对友好,所以使用相对广泛一些。 本文不对DPI中程序调用/数据交互展开讨论(这部分可以参考绿皮书..

kevindas的博客 1万+

【JQuery easyui】 $.modalDialog 内嵌的页面form表单发起ajax请求处理

昨天下午某项目遇到一个问题,modalDialog内嵌的页面使用form表单发起ajax请求,原来的代码是在$.modalDialog组件设置一个提交按钮,但是奇怪的问题现象是,后台返回的响应json却接收不到,于是我就想到了,由于是内嵌的页面发起form表单请求,响应应该返回到该内嵌页面才能够做处理,于是就研究了很长时间,最终问题解决。   先来看下原来的代码: var dialog = $....

朝阳大司马 6346

Arduino平台软硬件原理及使用——Arduino Uno板卡的使用

Arduino Uno板卡的基本使用

洪博hopes的博客 4172

FPGA实现PCIe接口

PCI Express(PCIe)是一种高速串行计算机扩展总线标准,在FPGA中实现PCIe接口可以实现与主机系统的高速数据通信。以下是FPGA实现PCIe接口的关键技术要点。

whm128的博客 1459

ESP32舵机控制实战:从PWM原理到闭环与远程控制

在嵌入式与机器人开发中,舵机控制是一项基础而关键的技能。PWM(脉宽调制)信号作为舵机驱动的核心,通过调节高电平脉宽实现角度映射,其精度直接影响动作的准确性。然而,许多开发者在实际项目中常因电源设计、多路信号协调或角度闭环等问题束手无策。ESP32作为高性价比主控,凭借其丰富的LEDC PWM通道与双核算力,为多舵机协同、平滑运动及远程控制提供了理想平台。从单舵机角度标定到多路插值运动,再到基于电位器反馈的闭环调节,系统化的工程实践能显著提升舵机的可控性与稳定性。本文结合实战经验,系统梳理舵机控制的选型思路

weixin_33910385的博客 354

从源码编译CesiumForUnreal

从源码编译CesiumForUnreal插件

专注GIS开发 5643

SharePoint 2010中的客户端AJAX应用——保存数据至SharePoint

====================================================== 注:本文源代码点此下载 ====================================================== 本文是sharepoint 2010客户端ajax应用系列的一部分。 asp.net ajax模板是一门全新的引人注目的客户端技术,允许开发者快

javazhuanzai的专栏 347

AI Agent开发第82课-手把手教你把paddleocr-vl做成mcp使其在DIFY里运行

本文详解如何将国产顶尖多模态 OCR 模型 PaddleOCR-VL 封装为标准 MCP(Model Calling Protocol)服务,并通过自研的 HTTP-based MCP Client 接入 Dify 1.10,实现 AI Agent 在对话中自动识别并调用 OCR 能力。该方案已在某头部保险公司真实业务流程中落地,使用了当前最先进的“Agentic AI 原生”设计思想。

打造全国最全的AI Agent开发知识领域的博客 1624

制作一个完整的Shopify主题

Liquid是Shopify的模板语言,用于动态渲染页面内容。Liquid是Shopify的模板语言,用于动态渲染页面内容。Shopify主题包含多个文件和文件夹,包括布局、模板、部分、配置和资产文件夹。Shopify主题包含多个文件和文件夹,包括布局、模板、部分、配置和资产文件夹。准备好你的主题后,可以将其提交到Shopify主题商店。确保你的主题符合Shopify的质量标准和指南。准备好你的主题后,可以将其提交到Shopify主题商店。确保你的主题符合Shopify的质量标准和指南。

luckucu的博客 174

SharePoint 2010中的客户端AJAX应用——jQuery的整合与持久化

本次我们将演示如何与jQuery进行整合,在一块虚拟布告牌(Corkboard)上以可拖动的索引卡片的方式显示每个列表项,并且我们将获取X和Y坐标返回给SharePoint。 布告牌上的卡片 首先,为了使我们的应用更有趣一些,在PageHead里加上一些CSS样式设置(放在一个单独的CSS样式文件里的话当然更好)以便使我们的user stories项以卡片的方式显示在布告牌上。 &l...

142

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

SharePoint 2010 以Jquery Ajax方式更新SharePoint列表数据!

之前本人的博客介绍了《sharepoint 2010自定义访问日志列表设置移动终端否和客户端访问系统等计算列的公式》,那如何通过Jquery提交访问日志到自定义的SharePoint的访问日志列表中。本文介绍通过Jquery ajax访问SharePoint 2010的list web服务并添加列表记录,这样就无需后台代码就可以实现操作列表,IP地址的解析采用搜狐提供的以J...

apple199203的博客 211

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Sharepoint 2010 新特性笔记

Training summary Session 1 - Visual Studio 2010 Tools for SharePoint 2010 l VS2010集成了Sharepoint Manager(Sharepoint Explorer) l VS2010集成了WSPBuilder(在vs2010中可以新建sharepoint项目右击项目可以将新功能直接部署到sharep...

weixin_30567225的博客 247
上一篇: Custom Ribbon Action (DownLoad Multiple File) -------------SharePoint 2010
下一篇: IBM Http Server 的安装配置方法
SseJava
博客等级 码龄23年 7粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值