尝试使用更新面板在人员选择器中设置默认值。在没有更新面板的测试页面上,代码
PeopleEditor1.CommaSeparatedAccounts = "domain\\user.account";
工作得很好。只要在人员编辑器周围添加更新面板,选择器的文本区域就会被清除,并且以后对上述代码段的调用将被忽略。这可以通过将以下内容放在带有代码隐藏的新aspx页面上来重现。
code-behind:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
PeopleEditor1.CommaSeparatedAccounts = "domain\\user.account";
}
aspx source:
<asp:ScriptManager runat="server" id="ScriptMan">
</asp:ScriptManager>
<asp:CheckBox runat="server" ID="causepostback" AutoPostBack="true" Text="Should this be checked?" />
<asp:UpdatePanel runat="server" ID="candypanel" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="causepostback" />
</Triggers>
<ContentTemplate>
<SharePoint:PeopleEditor runat="server" ID="PeopleEditor1" MultiSelect="true"
AllowEmpty="false" SelectionSet="User,SecGroup,SPGroup" AutoPostBack="false"
BorderWidth="1" Width="265px" PlaceButtonsUnderEntityEditor="false" Rows="1" />
</ContentTemplate>
</asp:UpdatePanel>
非常感谢您的见解。
答案 0 :(得分:1)
由于PeoplePicker在内部使用自己的Ajax请求来自行更新,我们遇到了这个问题。我在下面找到两个例子来解决这个问题。