一直编写一个webpart,但网上的都过于简单,正好公司有个需求要求做工作流任务的批处理(moss的任务列表就有批处理,但自己开发的工作流不支持,哎,有高人知道如何设置或编写相应代码么?指点一下)。
下面先说一下环境,VS2008必备的,还需要安装一个插件,用来创建sharepoint的WEB部件模板,具体下载地址:http://www.microsoft.com/downloads/details.aspx?familyid=14D5D92F-C3A6-407C-AAD7-B8C41A4991BE&displaylang=en
OK,接下来创建一个WebPart,vs会生成一些代码 如下:
所有的控件都将在函数CreateChildControls()执行。看到注释了么?注释就是简单的将一个LABEL添加到WEBPART中了。
言归正传,个人分析做批处理任务分几个步骤
1.获取到指定的任务--通过用Query来获取
2.用SPgridView显示任务列表--添加SPgridView,设计样式
3.选择要完成的任务--在SpGridView中添加checkbox
4.提交任务--利用SPworkflow Update任务
好了,所有事情分步骤后就很清晰的去实现吧。
实现1
创建一个datetabl数据源
思路为当前SPWEB的任务列表利用SPquery来获取想要的任务数据源,很简单吧。
设计了一下webpart布局
private void CreateUI()
{
this.UITable = new Table();
TableRow row = new TableRow();
TableCell cell = new TableCell();
row.Cells.Add(cell);
this.UITable.Rows.Add(row);
row = new TableRow();
cell = new TableCell();
row.Cells.Add(cell);
this.UITable.Rows.Add(row);
this.Controls.Add(this.UITable);
}
整体为一个table 第一cell为按钮和报错信息 第二个cell为SPGridView
添加按钮和报错信息label
实现2,3
添加最重要的grid了
值得说明的几点:1.绑定的数据源要为ObjectDataSource 2.添加TemplateField到SPGridView,此模板用来添加checkbox
3.利用SPMenuField来给数据添加菜单及操作,效果可以和MOSS的文档库一样。
实现4
更新任务
Hashtable 里的值要与工作流的参数对应,这样工作流才能接收到值去判断流程走向。
AlterTask就可以更新工作流了。
到这里大概的一个流程就说完了,如果想下载的可以再站内去搜索一下资源,当然有些参数我也设置成了属性,显示数量和任务的链接都升级为属性,可以从修改webpart中编辑。
此webpart还有些BUG,比如翻页后保存之前选择的项,还有添加链接后有时会丢失