我在网上看到的所有东西在尝试创建子任务时基本上都做同样的事情;它首先获取当前的客户端上下文,然后获取要为其创建新子任务的任务列表。
var clientContext = new SP.ClientContext.get_current();
var oList = clientContext.get_web().get_lists().getByTitle('MyTaskList1');
我的问题是,oList 似乎没有正确填充。或者也许我只是不知道它应该是什么。我尝试使用alert(clientContext)和alert(oList)在运行代码时解析clientyContext和oList的值,但这两个值都作为[object Object]返回,我不知道它是否正确。
真的,我只是不知道我是否走在正确的道路上。有没有不同的方法来查看变量的当前值是什么?
最佳答案
任务有一个名为 ParentID 的隐藏列,当您尝试编辑 ListView 时,您看不到此列,但它在每个任务列表中都可用。
如果您想创建子任务,只需添加新行并将 ParentID 设置为与您要使用的顶级任务相同的 ID,即可为子任务建立关系。
下面的函数将允许您创建新任务(父任务)以及子任务(子任务),例如:
NewTask('Bug List'); // create the PARENT TASK, e.g. ID=15
NewSubTask(15, 'Add Try..Catch'); // sub-task for ParentID=15
NewSubTask(15, 'Recompile code'); // another sub-task
以下是上述解决方案的完整功能代码:
function NewTask(taskName)
{
var clientContext = new SP.ClientContext.get_current();
var oList = clientContext.get_web().get_lists().getByTitle('Tasks');
var itemCreateInfo = new SP.ListItemCreationInformation();
oListItem = oList.addItem(itemCreateInfo);
oListItem.set_item('Title', taskName);
oListItem.update();
clientContext.load(oListItem);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}
function NewSubTask(parentID, taskName)
{
var clientContext = new SP.ClientContext.get_current();
var oList = clientContext.get_web().get_lists().getByTitle('Tasks');
var itemCreateInfo = new SP.ListItemCreationInformation();
oListItem = oList.addItem(itemCreateInfo);
oListItem.set_item('ParentID', parentID);
oListItem.set_item('Title', taskName);
oListItem.update();
clientContext.load(oListItem);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}
function onQuerySucceeded()
{
console.log('Item created: ' + oListItem.get_id());
}
function onQueryFailed(sender, args)
{
console.log('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
上面的函数适用于当前上下文,但您可以通过简单地更改以下内容来指向任何方向:
// uses the current context
var clientContext = new SP.ClientContext.get_current();
// point to an specific URL
var clientContext = new SP.ClientContext('/sites/MySiteCollection');
关于javascript - 尝试使用 javascript 在 sharepoint 中创建子任务,但 clientContext 似乎返回 [object object],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45494208/