Archiv

Archiv für die Kategorie ‘Customization’

ID im Display und Edit Form anzeigen

25. November 2010

 

Field Definition:


<Field ID="{f1be43e9-418d-41b2-982e-8894e7ee6e13}"
       Type="Computed"
       Name="TaskID"
       StaticName="TaskID"
       DisplayName="Task ID"
       Group="_Hidden"
       SourceID="http://schemas.microsoft.com/sharepoint/v3">
  <FieldRefs>
    <FieldRef Name="ID" />
  </FieldRefs>
  <DisplayPattern>
    <Column Name="ID" />
  </DisplayPattern>
</Field>

 

ContentType Definition:

<FieldRef ID="{f1be43e9-418d-41b2-982e-8894e7ee6e13}" Name="TaskID" ShowInDisplayForm="TRUE" ShowInEditForm="TRUE" ShowInNewForm="FALSE"/>

 

Es ist auch möglich über das UI eine berechnete Spalte zu erzeugen und dort als Formel =[ID] einzutragen.

Der Typ Computed hat aber den Vorteil das dieser keine Spalte im SQL Server benötigt im Gegensatz zu Calculated (SqlVariant)

Thomas Customization, SharePoint ,

CustomForm in UserDisp.aspx

5. November 2010

Die UserDisp.aspx Page enthält ein DelegateControl mit der ID = “ProfileRedirection”. Der SharePoint Server nutzt diese Möglichkeit um die Benutzerinformationen aus der MySite darzustellen.

Meine Frage war nun wie kann ich auf der Seite einfach nur die Toolbar austauschen um so mein Button hinzuzufügen ohne eine neue Page bereitzustellen?

Eine Lösung ist eine eigenes Form (Kopie von  “UserListForm”) wo dann das “UserInfoListFormToolBar” ausgetauscht wird, da dieses nicht über TemplateName übersteuert werden kann. Alternativ kann auch ein Redirect auf eine eigene Page durchgeführt werden wo bei dann auch nur eine Kopie der UserDisp.aspx und UserListForm angelegt wird.

<SharePoint:UserInfoListFormToolBar runat="server" />

Ersetzen durch:

<SharePoint:FormComponent runat="server" TemplateName="MyUserInfoListDisplayFormToolBar" />
<SharePoint:RenderingTemplate id="MyUserInfoListDisplayFormToolBar" runat="server">
   <Template>
     <script type="text/javascript">
       recycleBinEnabled = <SharePoint:ProjectProperty Property="RecycleBinEnabled" runat="server"/>;
     </script>
     <wssuc:ToolBar CssClass="ms-toolbar" id="toolBarTbl" runat="server" FocusOnToolbar=true>
     <Template_Buttons>
         <SharePoint:UserInfoListEditItemButton runat="server"/>
         <SharePoint:UserInfoListDeleteItemButton runat="server"/>
     </Template_Buttons>
    </wssuc:ToolBar>
  </Template>
</SharePoint:RenderingTemplate>

Implementierung des UserControls um das Form auszutauschen:

CodeBehind:

public partial class UserProfModify : UserControl, IFormDelegateControlSource
{
    private static readonly Guid featureId = new Guid("0e2c460d-c1e1-4539-a88c-75db03816881");
    private static bool IsMyUserSettingsEnabled(SPSite site)
    {
        return site.Features[featureId] != null;
    }

    #region IFormDelegateControlSource Member

    public void OnFormInit(object objOfInterest)
    {
        SPListItem listItem = objOfInterest as SPListItem;
        if (listItem != null)
        {
            // Prüfen ob es sich um eine Person handelt.
            SPContentTypeId id = (SPContentTypeId)listItem["ContentTypeId"];
            if (SPBuiltInContentTypeId.Person.IsParentOf(id))
            {
                // Prüfen ob für diese SiteCollection das angepasste Form erwünscht ist.
                if (UserProfModify.IsMyUserSettingsEnabled(listItem.Web.Site))
                {
                    // ctl00, PlaceHolderMain, UserListForm
                    Control t = Page.Controls[0].FindControl("PlaceHolderMain");
                    if (t != null)
                    {
                        FormComponent userForm = t.FindControl("UserListForm") as FormComponent;
                        if (userForm != null)
                        {
                            userForm.TemplateName = "MyUserListForm";
                        }
                    }
                }
            }
        }
    }

    public void OnFormSave(object objOfInterest)
    {
    }

    #endregion
} 

UserControl (ascx)

<%@ Control Language="C#" AutoEventWireup="false" CodeBehind="UserProfModify.ascx.cs"    Inherits="TestUserPage.WebControls.UserProfModify, $SharePoint.Project.AssemblyFullName$" %>

Feature:

<?xml version="1.0" encoding="utf-8"?><Elements xmlns="http://schemas.microsoft.com/sharepoint/">  <Control Id="ProfileRedirection" Sequence="95" ControlSrc="~/_controltemplates/UserProfModify.ascx" /></Elements>

Thomas Customization, Deployment, SharePoint , , ,