Как добавить пользовательскую веб-часть на страницу aspx пользовательского представления в проекте определения списка - PullRequest
3 голосов
/ 26 марта 2009

Я разработал проект определения списка и создал страницу aspx пользовательского представления, которая будет представлением списка по умолчанию. Теперь я хотел бы добавить настраиваемую веб-часть для отображения на странице настраиваемого представления aspx. Есть идеи, как это можно сделать?

Ответы [ 3 ]

2 голосов
/ 07 июля 2014

В SharePoint 2010 вы можете добавить пользовательскую веб-часть или веб-часть SharePoint в том же определении представления в Schema.xml определения списка (я не говорю об экземпляре списка ).

Хотя MSDN и не объясняет это напрямую, и если вы посмотрите на схему просмотра, вы не увидите определения '', на самом деле вы можете сделать что-то вроде этого:

<View BaseViewID="7" Type="HTML" WebPartZoneID="Main" DisplayName="$Resources:CILSS_defaultView" DefaultView="TRUE" MobileView="FALSE" MobileDefaultView="FALSE" SetupPath="pages\viewpage.aspx" ImageUrl="/_layouts/images/generic.png" Url="CI_Projects.aspx">
        <Toolbar Type="Standard" />
        <XslLink Default="TRUE">main_cilss.xsl</XslLink>
        <RowLimit Paged="TRUE">30</RowLimit>
        <ViewFields>
          <FieldRef Name="Attachments"></FieldRef>
          <FieldRef Name="LinkTitle"></FieldRef>
          <FieldRef Name="CILSS_ProjectDescription"></FieldRef>
        </ViewFields>
        <Query>
          <OrderBy>
            <FieldRef Name="LinkTitle" Ascending="TRUE"></FieldRef>
          </OrderBy>
        </Query>
        <ParameterBindings>
          <ParameterBinding Name="NoAnnouncements" Location="Resource(wss,noXinviewofY_LIST)" />
          <ParameterBinding Name="NoAnnouncementsHowTo" Location="Resource(wss,noXinviewofY_DEFAULT)" />
        </ParameterBindings>
        <WebParts>
          <AllUsersWebPart WebPartZoneID="Main" WebPartOrder="2">
            <![CDATA[<WebPart xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/WebPart/v2">
  <Title>Default Home Webpart</Title>
  <FrameType>None</FrameType>
  <Description>Use for formatted text, tables, and images.</Description>
  <IsIncluded>true</IsIncluded>
  <ZoneID>Left</ZoneID>
  <PartOrder>0</PartOrder>
  <FrameState>Normal</FrameState>
  <Height />
  <Width />
  <AllowRemove>true</AllowRemove>
  <AllowZoneChange>true</AllowZoneChange>
  <AllowMinimize>true</AllowMinimize>
  <AllowConnect>true</AllowConnect>
  <AllowEdit>true</AllowEdit>
  <AllowHide>true</AllowHide>
  <IsVisible>true</IsVisible>
  <DetailLink />
  <HelpLink />
  <HelpMode>Modeless</HelpMode>
  <Dir>Default</Dir>
  <PartImageSmall />
  <MissingAssembly>Cannot import this Web Part.</MissingAssembly>
  <PartImageLarge>/_layouts/images/mscontl.gif</PartImageLarge>
  <IsIncludedFilter />
  <Assembly>Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</Assembly>
  <TypeName>Microsoft.SharePoint.WebPartPages.ContentEditorWebPart</TypeName>
  <ContentLink xmlns="" />
  <Content xmlns="http://schemas.microsoft.com/WebPart/v2/ContentEditor">
  <Value>&lt;div&gt;Create and view Project documents:&lt;/div&gt;
&lt;br/&gt;</Value></Content>
  <PartStorage xmlns="http://schemas.microsoft.com/WebPart/v2/ContentEditor" />
</WebPart>]]>
          </AllUsersWebPart>
        </WebParts>
      </View>

Это определение представления включает веб-часть редактора содержимого в представлении списка с именем CI_Projects.aspx. Не забудьте назначить WebPartZoneId и назначить BaseViewID, отличный от представлений по умолчанию, включенных в определение списка.

Веб-часть будет включена в каждый список, который вы создадите с этим определением списка. (очевидно, только в указанном вами названном view.aspx).

2 голосов
/ 26 марта 2009

Вы можете использовать приемник функций и управлять добавлением веб-частей во время активации функций. Вот небольшая заглушка, чтобы помочь вам начать.

В функции активирован код вызова метода, аналогичный следующему:

        // Add web parts to the .aspx page that was provisioned
        SPFile page = site.GetFile(<<page url>>);

        Hashtable hashWebPartsOnPage = new Hashtable();

        using (SPLimitedWebPartManager mgr = page.GetLimitedWebPartManager(PersonalizationScope.Shared))
        {
            try
            {
                // First, let's clear the existing web parts off of the form
                foreach (System.Web.UI.WebControls.WebParts.WebPart webPart in mgr.WebParts)
                {
                    hashWebPartsOnPage.Add(webPart.ID, webPart);
                }

                foreach (string webPartName in hashWebPartsOnPage.Keys)
                {
                    System.Web.UI.WebControls.WebParts.WebPart webPart = hashWebPartsOnPage[webPartName] as System.Web.UI.WebControls.WebParts.WebPart;
                    mgr.DeleteWebPart(webPart);
                }

                // Add Part to the proper Zone
                MyWebPart myWebPart = new MyWebPart();
                //set web part properties
                mgr.AddWebPart(myWebPart, "FullPage", 1);
            }
            finally
            {
                mgr.Web.Dispose();
            }

        }
        page.Update();
1 голос
/ 27 марта 2009

Что ж, я хотел бы получить доступ к странице представления определения списка, которая, я думаю, будет недоступна с помощью вышеуказанного метода site.GetFile (). Любые другие варианты, которые вы думаете, мы можем использовать для достижения этой цели. Я пробовал следующие шаги:

  1. Скопируйте OOB «ViewPage.aspx» и поместите его в ту же папку, что и «CustomViewPage.aspx»

  2. Создайте пользовательскую веб-часть, которая показывает элементы представления с вашим индивидуальным подходом.

  3. Создайте функцию для предоставления «CustomViewpage.aspx» вместе с пользовательской веб-частью.

  4. Создание пользовательского определения списка. В файле schema.xml определения для всех представлений укажите «SetupPath» для ссылки на ваш «CustomViewPage.aspx». На этом шаге все представления, упомянутые в определении списка, будут использовать «CustomViewPage.aspx» для создания страниц представлений, а также все представления, которые вы создаете после создания списка, будут использовать «customViewPage.aspx» в качестве основы. страница для создания просмотра страниц.

Шаг 1:

Просто скопируйте OOB «ViewPage.aspx» и поместите его в папку C: \ Program Files \ Common Files \ Microsoft Shared \ extensions веб-сервера \ 12 \ TEMPLATE \ Pages как «CustomViewPage.aspx»

Шаг 2:

Создайте пользовательскую веб-часть, которая показывает элементы представления с вашим индивидуальным подходом. В основном используйте метод GetViewfromUrl («Lists //»), чтобы получить представление, а затем получить элементы в веб-части. Фрагмент кода для пользовательской веб-части выглядит следующим образом:

SPList list = SPContext.Current.List;

String strViewName =

SPView view = SPContext.Current.Web.GetViewFromUrl ("Lists / list /" + strViewName);

SPListItemCollection listItems = list.GetItems (view);

. .

.

.

Получив элементы списка, сделайте свой собственный подход к отображению элементов.

Создайте библиотеку DLL веб-части и поместите ее в GAC.

Шаг 3:

Создайте функцию для предоставления «CustomViewPage.aspx» вместе с вашей пользовательской веб-частью. При активации этой функции «Customviewpage.aspx» будет встроен в вашу пользовательскую веб-часть. Содержимое файла манифеста элементов выглядит следующим образом:

<File Url="Pages/CustomViewPage.aspx" Type="Ghostable">

  <AllUsersWebPart WebPartZoneID="Main" WebPartOrder="1">

    <![CDATA[

               <WebPart xmlns="http://schemas.microsoft.com/WebPart/v2">

                    <Assembly>CustomWebpartforView, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e3483ddc8b0d437a</Assembly>

                    <TypeName> CustomWebpartforView.MyCustomview</TypeName>

                    <FrameType>None</FrameType>

                                            <IsVisible>true</IsVisible>

                    <Title>Custom Web part for View</Title>                                 

               </WebPart>

               ]]>

  </AllUsersWebPart>

</File>

Этот шаг выдает ошибку для пути к исходному файлу, который я изменил, указав атрибут Path в теге файла

Шаг 4:

Теперь базовая страница пользовательского просмотра доступна вместе с веб-частью. Теперь, как интегрировать пользовательскую страницу просмотра с определением списка. Создайте пользовательское определение списка и для всех представлений, определенных в схеме, укажите «SetupPath» для использования «CustomViewPage.aspx». Теперь страница пользовательского представления будет использоваться в качестве страницы базового просмотра для всех представлений, определенных в определении списка, а также представления, созданные позже, также будут использовать «CustomViewpage.aspx» в качестве базовой страницы. Пример фрагмента для объявления представлений внутри schema.xml выглядит следующим образом:

Установите и активируйте функцию определения пользовательского списка.

Теперь со всеми этими шагами, когда вы создаете список на основе этого пользовательского определения списка, тогда все созданные представления будут использовать «CustomViewPage.aspx» для создания страниц представления, и ваша пользовательская веб-часть будет отображаться вместо OOB dataformwebpart. Представления, которые вы будете создавать после создания списка (через пользовательский интерфейс, через объектную модель), также будут использовать «CustomViewpage.aspx» в качестве базовой страницы для создания страниц представления.

По какой-то причине я все еще не могу увидеть CustomViewPage.aspx с моей пользовательской веб-частью. Я что-то пропустил или чего-то не хватает в этой статье.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...