我正在尝试设置一个MySite,允许个人创建和修改多个项目,每个项目都包含一个主文档库的部分副本。我已经创建了库并上传了文档,我有一个页面,我一直在试验如何执行此操作。
我需要能够在文档库中显示文档列表,允许用户选择他们想要的文档,然后当他们点击按钮时,我需要初始化数据库中的一些信息prjoect,有关每个文件的一些信息,以及需要将文档复制到新位置的信息,以便用户可以提取它们并编辑和保存特定于一个项目的更改。如果可能的话,我们还需要能够在项目创建后通过类似的界面添加/删除它们。
不幸的是,任何使用代码的东西都受到限制;所以,我们不能使用任何需要在GAC中安装任何东西的东西,我甚至不能在ASPX文件中使用任何服务器端脚本。看起来我在搜索“Sharepoint 2007克隆主文档库”时所发现的几乎所有内容都涉及到使用代码。
我一直在使用SharePoint设计器中的东西来创建UI,我想出了如何获取要显示的文档列表,尽管我很难复制它。它创建了一个<WebPartPages:DataFormWebPart>
,其中包含<SharePoint:SPDataSource>
。但是,当我试图将Data View CheckBoxList
之类的东西拖到文档列表中时,要么它不会让我删除它(这包括表单上的任何地方,而不仅仅是文档列表中),或者实际上,正如预期的那样,它实际上并没有绑定到列表的每一行。我不清楚如何创建它。
我(或多或少)可以通过表单中的.xslt绑定控件,但是我觉得它比手工编写更简单,因为设计师看起来非常像Visual Studio设计师。不过,我很难搞清楚要使任何控件正常工作的确切方法;他们中的大多数都与CheckBoxList
有相同的问题,甚至不会放在表单上。我假设有一个类型的面板,或者其他一些东西,我需要首先添加到表单中,但这与我习惯的那么不同,我很难得到我的方位。
那么,有人能指出我在正确的方向吗?我将需要能够创建项目,选择文档,将其与一些其他信息一起复制到新项目中,包括在数据库中创建一些项目。我已经在许多不同语言上开发软件很长一段时间了,虽然最近它主要是WinForms,有很多.aspx的东西(但没什么太花哨的),而且从来没有这么难。我认为这里有一些关于模型的东西;比如,您如何告诉您想要使用连接到特定数据源的x / y / z控件的表单?您如何告诉sharepoint为文件创建新位置?如果将所选文件提供给Sharepoint并告诉他们将其复制到何处,您如何提交?
任何帮助都会非常感激我已经把头发撕了好几天了。 :)
答案 0 :(得分:1)
您可能已经对SharePoint 2010进行了更改,因为有一个javascript / jQuery编程模型,但如果没有它,您就没有实际编码所需的内容。你可能会很幸运,能够call the SharePoint web services using jQuery,但是要解决“无代码”的要求会有很多工作。
答案 1 :(得分:0)
好吧,好吧,我终于能够让这个大部分都能正常工作,尽管在我拿回数据后仍然存在一些显示数据的问题;一旦我有更好的答案,我会尝试更新这个问题。
有一个名为SPServices的酷库,它与JQuery结合使用,为SharePoint 2007的Web服务提供了一个接口。它似乎或多或少提供了使用Web服务所需的任何接口。没有你做太多额外的工作。
例如,要查询文档库,我在辅助类中设置了类似这样的函数(基于the examples from the SPServices documentation)。
ServiceClass.prototype.getSpecialDocLib = function (onComplete) {
var sc = this;
$().SPServices({
operation: "GetListItems",
async: false,
listName: "Special Document Library",
CAMLViewFields: "<ViewFields><FieldRef Name='Title' /></ViewFields>",
completefunc: function (xData, Status) {
var outTable = new DocTable();
$(xData.responseXML).find("[nodeName='z:row']").each(function () {
var i;
var outRow = new DocTableRow();
for (i = 0; i < this.attributes.length; ++i) {
outRow.addField(this.attributes[i].localName, this.attributes[i].value);
};
outTable.addRow(outRow);
});
sc.onDocumentListComplete(xData, Status);
if (onComplete != null)
onComplete(resultTable);
}
});
};
为了将文档库从一个地方复制到另一个地方,我相信您可以使用Lists。AddList创建它,(不是在SPServices中具体记录,但基于this Web Service call)从头开始或一个模板,我相信你可以使用SPServices Copy.CopyIntoItemsLocal方法。
无论如何,到目前为止,我似乎正在取得进展;一旦我有更多的经验和时间来确保一切正常,我将更新并接受这个答案,但到目前为止,我似乎正朝着“无代码”目标迈进。