如何在 Sharepoint 2010 中使用 javascript 检查列表是否包含所需的行?
How to check if list contains needed rows using javascript in sharepoint2010?
我有名为“事件”的日历列表和名为“与会者”的自定义列表。
在事件的默认显示形式上,有 "registration on event" 按钮和 javascript 可以在与会者列表中创建记录,例如:
"EventID" 和 "AttendeeName"/
var siteUrl = '/hr/events';
var eventID = Utilities.SPForm.getParameterValue('ID');
var thisUserID = $().SPServices.SPGetCurrentUser();
function RegNewAttendee() {
var clientContext = new SP.ClientContext(siteUrl);
var oList = clientContext.get_web().get_lists().getByTitle('Attendees');
var objUsers = new Array();
objUsers.push(SP.FieldUserValue.fromUser(thisUserID));
var itemCreateInfo = new SP.ListItemCreationInformation();
this.oListItem = oList.addItem(itemCreateInfo);
oListItem.set_item('EventID', eventID);
oListItem.set_item('Attendee', objUsers);
oListItem.update();
clientContext.load(oListItem);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}
function onQuerySucceeded() {
alert('Registration complete! (' + thisUserID + ')');
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
如何在发帖前检查与会者列表中是否已经存在具有当前事件 ID 和姓名的行,从而避免注册信息重复?
当用户想要取消他的注册时,也需要找到并删除这一行。
提前谢谢你。
您要做的是编写一个 CAML 查询来过滤所需的名称和 eventID,并查询列表以查找匹配项。
在该异步查询的回调方法中,将变量设置为 false。然后,当您循环访问返回的项目时,将变量设置为 true 以指示匹配项目已存在。然后您可以根据该变量的值决定是否创建项目。
这意味着您将最多调用两次 clientContext.executeQueryAsync()
:第一个查询是检查项目是否已经存在,第二个是创建项目。
我有名为“事件”的日历列表和名为“与会者”的自定义列表。 在事件的默认显示形式上,有 "registration on event" 按钮和 javascript 可以在与会者列表中创建记录,例如: "EventID" 和 "AttendeeName"/
var siteUrl = '/hr/events';
var eventID = Utilities.SPForm.getParameterValue('ID');
var thisUserID = $().SPServices.SPGetCurrentUser();
function RegNewAttendee() {
var clientContext = new SP.ClientContext(siteUrl);
var oList = clientContext.get_web().get_lists().getByTitle('Attendees');
var objUsers = new Array();
objUsers.push(SP.FieldUserValue.fromUser(thisUserID));
var itemCreateInfo = new SP.ListItemCreationInformation();
this.oListItem = oList.addItem(itemCreateInfo);
oListItem.set_item('EventID', eventID);
oListItem.set_item('Attendee', objUsers);
oListItem.update();
clientContext.load(oListItem);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}
function onQuerySucceeded() {
alert('Registration complete! (' + thisUserID + ')');
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
如何在发帖前检查与会者列表中是否已经存在具有当前事件 ID 和姓名的行,从而避免注册信息重复? 当用户想要取消他的注册时,也需要找到并删除这一行。
提前谢谢你。
您要做的是编写一个 CAML 查询来过滤所需的名称和 eventID,并查询列表以查找匹配项。
在该异步查询的回调方法中,将变量设置为 false。然后,当您循环访问返回的项目时,将变量设置为 true 以指示匹配项目已存在。然后您可以根据该变量的值决定是否创建项目。
这意味着您将最多调用两次 clientContext.executeQueryAsync()
:第一个查询是检查项目是否已经存在,第二个是创建项目。