SharePoint托管应用程序-在托管web列表上创建级联下拉列表

SharePoint托管应用程序-在托管web列表上创建级联下拉列表,sharepoint,sharepoint-2013,sharepoint-apps,Sharepoint,Sharepoint 2013,Sharepoint Apps,我已经创建了一个SharePoint托管的应用程序(Javascript对象模型),它可以在主机web上创建列表 我需要在新表单和编辑表单中添加一些javascript,以便在2个查找字段上创建级联下拉效果 以下是我如何创建列表及其字段: // Create a new list on host web var createList = function (listTitle, onSuccess, onFieldsReady) { var listCreationInf

我已经创建了一个SharePoint托管的应用程序(Javascript对象模型),它可以在主机web上创建列表

我需要在新表单和编辑表单中添加一些javascript,以便在2个查找字段上创建级联下拉效果

以下是我如何创建列表及其字段:

    // Create a new list on host web
    var createList = function (listTitle, onSuccess, onFieldsReady) {
    var listCreationInfo = new SP.ListCreationInformation();
    listCreationInfo.set_title(listTitle);
    listCreationInfo.set_templateType(SP.ListTemplateType.genericList);

    var lists = hostWeb.get_lists();
    var newList = lists.add(listCreationInfo);

    currentContext.load(newList);
    currentContext.executeQueryAsync(onSuccess(newList, onFieldsReady), onListCreationFail);
}

    // Create a new field on a list
    var createField = function (list, fieldType, fieldName, fieldDisplayName, fieldRequired, onSuccess) {
    var fields = list.get_fields();
    var fieldXml = "<Field Type='" + fieldType + "' Required='" + fieldRequired + "' DisplayName='" + fieldDisplayName + "' Name='" + fieldName + "'></Field>";
    var createdField = fields.addFieldAsXml(fieldXml, true, SP.AddFieldOptions.addFieldInternalNameHint | SP.AddFieldOptions.addFieldToDefaultView);

    currentContext.load(createdField);
    currentContext.executeQueryAsync(onSuccess, onProvisionFieldFail);
}
//在主机web上创建新列表
var createList=函数(listTitle、onSuccess、onFieldsReady){
var listCreationInfo=新SP.ListCreationInformation();
listCreationInfo.set_title(listTitle);
listCreationInfo.set_templateType(SP.ListTemplateType.genericList);
var lists=hostWeb.get_lists();
var newList=lists.add(listCreationInfo);
加载(newList);
currentContext.executeQueryAsync(onSuccess(newList,onFieldsReady),onListCreationFail);
}
//在列表上创建新字段
var createField=函数(列表、字段类型、字段名、字段显示名、字段必需、onSuccess){
var fields=list.get_fields();
var fieldXml=“”;
var createdField=fields.addFieldAsXml(fieldXml,true,SP.AddFieldOptions.addFieldInternalNameHint | SP.AddFieldOptions.addFieldToDefaultView);
加载(createdField);
currentContext.executeQueryAsync(onSuccess,onProvisionionFieldFail);
}
你能给我一些建议吗

问候,


Marian

< P>你应该考虑放弃使用NeXFrand和Edv.Enth.ASPX的想法。只需编写自己的表单,并使用JSOM或WebApi添加/编辑列表项

将项目添加到列表的示例代码:

jQuery.ajax({
    url: "http://<site url>/_api/web/lists/GetByTitle('Test')",
    type: "POST",
    data: JSON.stringify({ '__metadata': { 'type': 'SP.List' }, 'Title': 'New title' }),
    headers: { 
        "X-HTTP-Method":"MERGE",
        "accept": "application/json;odata=verbose",
        "content-type": "application/json;odata=verbose",
        "content-length": <length of post body>,
        "X-RequestDigest": $("#__REQUESTDIGEST").val(),
        "IF-MATCH": "*"
    },
    success: doSuccess,
    error: doError
 });
jQuery.ajax({
url:“http:///_api/web/lists/GetByTitle(‘测试’)“,
类型:“POST”,
数据:JSON.stringify({'\uu metadata':{'type':'SP.List'},'Title':'newtitle'}),
标题:{
“X-HTTP-Method”:“合并”,
“接受”:“application/json;odata=verbose”,
“内容类型”:“应用程序/json;odata=verbose”,
“内容长度”:,
“X-RequestDigest”:$(“#u-RequestDigest”).val(),
“如果匹配”:“*”
},
成功:成功,
错误:doError
});
参考资料:

试试这个

var clientContext = new SP.ClientContext.get_current();
var list = clientContext.get_web().get_lists().getByTitle('ListName');

if(list) {
    var fldCollection = list.get_fields();

    var fieldLookup1 = clientContext.castTo(
        fldCollection.addFieldAsXml('<Field Name="FieldName1" Type="Lookup" DisplayName="My Lookup Field 1" List="Lists/MyLookupList" ShowField="Title" />', true, SP.AddFieldOptions.addToDefaultContentType),
        SP.FieldLookup
    );

    fieldLookup1.set_title("MyLookupField1");
    fieldLookup1.set_description("Lookup field 1 description");
    fieldLookup1.update();
    list.update();

    clientContext.executeQueryAsync(
        Function.createDelegate(this, this.onQuerySucceeded),
        Function.createDelegate(this, this.onQueryFailed)
    );
}
var clientContext=new SP.clientContext.get_current();
var list=clientContext.get_web().get_list().getByTitle('ListName');
如果(列表){
var fldCollection=list.get_fields();
var fieldLookup1=clientContext.castTo(
fldCollection.addFieldAsXml(“”,true,SP.AddFieldOptions.addToDefaultContentType),
SP.FieldLookup
);
fieldLookup1.设置标题(“MyLookupField1”);
fieldLookup1.设置_描述(“查找字段1描述”);
fieldLookup1.update();
list.update();
clientContext.executeQueryAsync(
Function.createDelegate(this,this.onquerySucceed),
Function.createDelegate(this,this.onQueryFailed)
);
}
请让我知道它是否有效;)

祝你今天愉快