更新面板中的Sharepoint人员编辑器 - 部分回发后无法设置值

时间:2010-04-07 23:02:18

标签: c# asp.net asp.net-ajax

尝试使用更新面板在人员选择器中设置默认值。在没有更新面板的测试页面上,代码

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>

非常感谢您的见解。

1 个答案:

答案 0 :(得分:1)

由于PeoplePicker在内部使用自己的Ajax请求来自行更新,我们遇到了这个问题。我在下面找到两个例子来解决这个问题。

  1. Simple Way Using Hidden Field & Javascript
  2. Bit complex using jQuery