繁体   English   中英

Sharepoint 2013,从列表中获取数据到ClientPeoplePicker

[英]Sharepoint 2013, get data from list to ClientPeoplePicker

在Sharepoint 2013中,我尝试从自定义列表中获取用户信息以在“编辑”表单中显示,该表单将显示在控件ClientPeoplePicker中。

我四处搜寻并尝试2种解决方案:

private void LoadUserToPeoplePicker(SPListItem item, string colName, ClientPeoplePicker peoplePicker)
    {
        //Get user information from list
        var user = item[colName] as string;

        if (!string.IsNullOrEmpty(user))
        {
            var spUser = new SPFieldUserValue(SPContext.Current.Web, user);

            //Solution 01
            var entity = new PickerEntity();
            entity.Key = spUser.LookupValue;

            PeopleEditor editor = new PeopleEditor();
            entity = editor.ValidateEntity(entity);

            peoplePicker.AddEntities(new List<PickerEntity> { entity });

            //Solution 02
            //if (!string.IsNullOrEmpty(spUser.User.Email))
            //{
            //    peoplePicker.InitialUserAccounts = spUser.User.Email;
            //}
        }
    }

我以Nintex形式覆盖它们:受保护的覆盖void OnFormControlDataBinding(object sender,EventArgs e)

这是我得到的错误:

在程序集“ Microsoft.SharePoint,版本= 15.0.0.0,区域性=中性,PublicKeyToken = 71e9bce111e9429c”中,键入“ Microsoft.SharePoint.SPUser”未标记为可序列化。

说明:执行当前Web请求期间发生未处理的异常。 请查看堆栈跟踪,以获取有关错误及其在代码中起源的更多信息。

异常详细信息:System.Runtime.Serialization.SerializationException:程序集“ Microsoft.SharePoint,版本= 15.0.0.0,区域性=中性,PublicKeyToken = 71e9bce111e9429c”中的类型“ Microsoft.SharePoint.SPUser”未标记为可序列化。

源错误:

当前Web请求的执行期间生成了未处理的异常。 可以使用下面的异常堆栈跟踪来标识有关异常的来源和位置的信息。

堆栈跟踪:

[SerializationException:程序集'Microsoft.SharePoint,版本= 15.0.0.0,文化=中性,PublicKeyToken = 71e9bce111e9429c'中的类型'Microsoft.SharePoint.SPUser'未标记为可序列化。] System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers(RuntimeType类型)+14210117 System.Runtime.Serialization.FormatterServices.GetSerializableMembers(类型,StreamingContext上下文)+408 System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo()+420 System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo .InitSerialize(对象obj,ISurrogateSelector surrogateSelector,StreamingContext上下文,SerObjectInfoInit serObjectInfoInit,IFormatterConverter转换器,ObjectWriter objectWriter,SerializationBinder绑定器)+532 System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.Serialroro(Object Selector,IS serObjectInfoInit,IFormatterConverter转换器,对象 ctWriter objectWriter,SerializationBinder活页夹)+270 System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(对象图,Header [] inHeaders,__BinaryWriter serWriter,布尔fCheck)+814 System.Runtime.Serialization.Formatters.Binary.BinaryFormat Serialize(Stream serializationStream,Object graph,Header [] headers,Boolean fCheck)+322 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream,Object graph)+17 System.Web.UI.ObjectStateFormatter.SerializeValue( SerializerBinaryWriter writer,对象值)+3526

[ArgumentException:序列化类型为'Microsoft.SharePoint.SPUser。'的值'i:0#.w | fsoft.fpt.vn \\ hoavt2'的错误] System.Web.UI.ObjectStateFormatter.SerializeValue(SerializerBinaryWriter编写器,对象值)+ 4068 System.Web.UI.ObjectStateFormatter.Serialize(对象状态图,目的)+103 System.Web.UI.Util.SerializeWithAssert(IStateFormatter2格式化程序,对象stateGraph,目的)+67 System.Web.UI.HiddenFieldPageStatePersister.Save( )+173 System.Web.UI.Page.SaveAllState()+1161 System.Web.UI.Page.ProcessRequestMain(布尔值includeStagesBeforeAsyncPoint,布尔值includeStagesAfterAsyncPoint)+4660

任何人都面临该问题,请提供帮助。

我发现我错了:)它不在那个函数中,在另一个函数中

private void ExtractValueForApprover(IOrderedDictionary dictionary, ClientPeoplePicker peoplePicker,
        string colName)
    {
        if (peoplePicker == null || string.IsNullOrEmpty(colName))
        {
            return;
        }

        if (peoplePicker.ResolvedEntities.Count > 0)
        {
            var user = SPContext.Current.Web.EnsureUser(peoplePicker.GetPickerEntity().Key);

            AddValueToDictionary(colName, user.LoginName, dictionary);
        }
    }

我将以下行提取:SPContext.Current.Web.EnsureUser(peoplePicker.GetPickerEntity()。Key)到扩展方法,然后发生上述错误。

这可能对你们有帮助。

谢谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM