Создание Web-частей

Перед использованием Web-частей следует создать ASP.NET приложение (New|Wev Site и выбрать Empty Web Site). Далее в приложение следует добавить ASP-страницу (выполнить в окне Solution Explorer команду контекстного меню Web New Item  и выбрать Web Form).

В автоматически сформированный код страницы после тега <form> вставить: <asp:webpartmanager id="WebPartManager1" runat="server" />. Любая страница, использующая технологию web Parts должна содержать элемент <asp:webpartmanager>.

Для добавления зоны Web-частей используется элемент <asp:webpartzone>.

Следующий пример иллюстрирует страницу, содержающую две зоны:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">    <title>Web Parts</title></head>

<body>

    <form id="form1" runat="server">

    <asp:webpartmanager id="WebPartManager1" runat="server" />

  <br />

  <table cellspacing="0" cellpadding="0" border="0">

    <tr>

      <td valign="top">

      <asp:webpartzone id="SideBarZone" runat="server"

        headertext="Sidebar">

        <zonetemplate>           </zonetemplate>

      </asp:webpartzone>

      </td>

      <td valign="top">

      <asp:webpartzone id="MainZone" runat="server" headertext="Main">

     <zonetemplate>             </zonetemplate>

   </asp:webpartzone>

      </td>

      <td valign="top">       </td>

    </tr>

  </table>

    </form>

</body>

</html>

Контент каждой заны указывается между тегами      <zonetemplate>             </zonetemplate>.

Например:

   <zonetemplate>

      <asp:label id="contentPart" runat="server" title="Content">

      <h2>Заголовок моей страницы</h2>

      <p>Установите закладку на моюстраницу!</p>

    </asp:label>

     </zonetemplate>

 

Для добавления в проект ASP-страницы, содержащей элементы управления Web-частей, следует создать страницу элементов управления (выполнить в окне Solution Explorer команду контекстного меню Web New Item  и выбрать Web User Control).

Страница элементов управления начинается с тега <%@ Control   %>.

Следующий пример определяет страницу элементов управления, вводящую свойство с атрибутом   [Personalizable] и определяющую два элемента управления:

 <asp:textbox id="inputBox"> и <asp:button id="searchButton" text="Search" />.

Эта страница содержится в файле WebUserControl.ascx и определяет класс WebUserControl:

<%@ Control Language="C#" AutoEventWireup="true"

CodeFile="WebUserControl.ascx.cs" Inherits="WebUserControl" %>

<script runat="server">

  private int results;

  [Personalizable]

  public int ResultsPerPage

  { get        {return results;}

     set      {results = value;}

  }   

</script>

<asp:textbox runat="server" id="inputBox"></asp:textbox>

<br />

<asp:button runat="server" id="searchButton" text="Search" />

Созданные таким образом элементы управления также можно добавить в зону Web-частей. Для того чтобы данные элементы управления были доступны на ASP-странице, сразу после тега page следует ввести тег register, устанавливающий префикс (в данном примере uc1) для доступа к пользовательским элементам управления:

<%@ register tagprefix="uc1" tagname="WebUserControl"

  src="WebUserControl.ascx" %>

После этого в Web-зонах можно размещать пользовательские элементы управления.

Например:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs"

Inherits="_Default" %>

<%@ register tagprefix="uc1" tagname="WebUserControl"

  src="WebUserControl.ascx" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">    <title>Web Parts</title></head>

<body>

    <form id="form1" runat="server">

    <asp:webpartmanager id="WebPartManager1" runat="server" />

  <br />

  <table cellspacing="0" cellpadding="0" border="0">

    <tr>

      <td valign="top">

      <asp:webpartzone id="SideBarZone" runat="server"

        headertext="Sidebar">

        <zonetemplate>

        <asp:label runat="server" id="linksPart" title="Links">

      <a href="www.asp.net">ASP.NET site</a>              <br />

      <a href="www.gotdotnet.com">GotDotNet</a>        <br />

      <a href="www.contoso.com">Contoso.com</a>        <br />

    </asp:label>

    <uc1:WebUserControl id="searchPart" runat="server"  title="Search" />

        </zonetemplate>       </asp:webpartzone>

      </td>

      <td valign="top">

      <asp:webpartzone id="MainZone" runat="server" headertext="Main">

     <zonetemplate>

      <asp:label id="contentPart" runat="server" title="Content">

      <h2>Заголовок моей страницы</h2>       <p>Установите ссылки!</p>

    </asp:label>

     </zonetemplate>    </asp:webpartzone>

      </td>

      <td valign="top">      </td>

    </tr>

  </table>    </form></body></html>

 

В результате выполнения приведенного выше кода будет создано две Web-зоны (Sidebar и Main). В каждой из зон будут расположены элементы управления и стрелки, позволяющие настраивать свойства визуального отображения элементов управления. На следующем рисунке приведен внешний вид созданной с применением Web-частей ASP-страницы.

 

Для того чтобы управлять поведением посредством зон редакторов следует использовать компонент WebPartManager и создать зону Web-редактора.

Например:

<td valign="top">

<asp:editorzone id="EditorZone1" runat="server">

 <zonetemplate>

      <asp:appearanceeditorpart  runat="server"  id="AppearanceEditorPart1"/>

      <asp:layouteditorpart     runat="server"    id="LayoutEditorPart1" />

 </zonetemplate>

  </asp:editorzone>

</td>

Компонент WebPartManager и пользовательские элементы управления, отображаемые в Web-зоне, следует определить в ASP-файле элементов управления.

Например:

<%@ control language="C#" classname="DisplayModeMenuCS"%>

<script runat="server">

   // Поле ссылки на текущий элемент WebPartManager

  WebPartManager _manager;

  void Page_Init(object sender, EventArgs e)

  {    Page.InitComplete += new EventHandler(InitComplete);  } 

  void InitComplete(object sender, System.EventArgs e)

  { _manager = WebPartManager.GetCurrentWebPartManager(Page);

    String browseModeName = WebPartManager.BrowseDisplayMode.Name;

    // Заполнение списка поддерживаемыми режимами отображения

    foreach (WebPartDisplayMode mode in _manager.SupportedDisplayModes)

    {

      String modeName = mode.Name;

      // Перед добавлением проверяем, доступен ли режим

      if (mode.IsEnabled(_manager))

      { ListItem item = new ListItem(modeName, modeName);

         DisplayModeDropdown.Items.Add(item);

      }

    }

    // Отображение и выбор радиокнопки

    if (_manager.Personalization.CanEnterSharedScope)

    { Panel2.Visible = true;

      if (_manager.Personalization.Scope ==  PersonalizationScope.User)

        RadioButton1.Checked = true;

      else

        RadioButton2.Checked = true;

    }

  }

  // Устанавливаем выбранный режим

  void DisplayModeDropdown_SelectedIndexChanged(object sender,

                                                                                         EventArgs e)

  {    String selectedMode = DisplayModeDropdown.SelectedValue;

      WebPartDisplayMode mode =

                                        _manager.SupportedDisplayModes[selectedMode];

    if (mode != null)    _manager.DisplayMode = mode;

  }

  // Устанавливаем выделенный элемент равным текущему режиму

  void Page_PreRender(object sender, EventArgs e)

  {

    ListItemCollection items = DisplayModeDropdown.Items;

    int selectedIndex =

               items.IndexOf(items.FindByText(_manager.DisplayMode.Name));

    DisplayModeDropdown.SelectedIndex = selectedIndex;

  }

  // Персонализация данных на странице

  protected void LinkButton1_Click(object sender, EventArgs e)

  {    _manager.Personalization.ResetPersonalizationState();

  }

  protected void RadioButton1_CheckedChanged(object sender, EventArgs e)

  {

    if (_manager.Personalization.Scope ==  PersonalizationScope.Shared)

      _manager.Personalization.ToggleScope();

  }

  protected void RadioButton2_CheckedChanged(object sender,

    EventArgs e)

  { if (_manager.Personalization.CanEnterSharedScope &&

        _manager.Personalization.Scope ==  PersonalizationScope.User)

        _manager.Personalization.ToggleScope();

  }

</script>

<div>

  <asp:Panel ID="Panel1" runat="server"  Borderwidth="1" Width="230"

    BackColor="lightgray" Font-Names="Verdana, Arial, Sans Serif" >

    <asp:Label ID="Label1" runat="server" Text="&nbsp;Display Mode"

      Font-Bold="true"      Font-Size="8"      Width="120" />

   <div>

  <asp:DropDownList ID="DisplayModeDropdown" runat="server" 

    AutoPostBack="true" Width="120"

    OnSelectedIndexChanged="DisplayModeDropdown_SelectedIndexChanged"

  />

    <asp:LinkButton ID="LinkButton1" runat="server" Text="Reset User State"

      ToolTip="Reset the current user’s personalization data for  the page."

      Font-Size="8"  OnClick="LinkButton1_Click" />

   </div>

   <asp:Panel ID="Panel2" runat="server" GroupingText="Personalization Scope"

      Font-Bold="true"  Font-Size="8"  Visible="false" >

    <asp:RadioButton ID="RadioButton1" runat="server"  Text="User"

        AutoPostBack="true" GroupName="Scope"

        OnCheckedChanged="RadioButton1_CheckedChanged" />

      <asp:RadioButton ID="RadioButton2" runat="server"  Text="Shared"

        AutoPostBack="true"  GroupName="Scope"

        OnCheckedChanged="RadioButton2_CheckedChanged" />

    </asp:Panel>

  </asp:Panel>

</div>

В результате создаваемвя ASP-страница примет вид, как на следующем рисунке:

 

Класс WebPart предоставляет широкий набор свойств, включая следующие:

§  AccessKey – определяет клавиши быстрого доступа;

§  AllowClose – определяет, может ли пользователь закрыть Web-часть;

§  AllowConnect – определяет, позволяет ли элемент управления WebPart  соединятся с ним другим элементам управления;

§  AllowEdit – определяет, может ли пользователь изменять элемент управления WebPart посредством пользовательского интерфейса элемента управления, предоставляемого частью редактором;

§  AllowHide – определяет, может ли пользователь скрыть элемент управления WebPart;

 

§  BorderColor – определяет цвет рамки элемента управления (свойство наследуется от класса WebControl);

§  DisplayTitle – заголовок WebPart;

§  Enabled – определяет доступность серверного элемента управления;

§  Hidden – определяет, отображается ли на странице элемент управления WebPart;

§  IsClosed – определяет, закрыт ли элемент управления WebPart;

§  IsShared– определяет, видим ли элемент управления WebPart всем пользователям Web-страницы;

§  Page – содержит ссылку на объект Page, в котором размещены серверные элементы управления;

§  Verbs – содержит набор команд, ассоциируемых с элементом управления WebPart;

§  Zone – определяет Web-зону, содержащую элемент управления WebPart.

Атрибут [Personalizable] определяет сохранность значения открытого и доступного свойства для web-страницы (по умолчанию данные записываются в таблицу базы данных (файл данных aspnetdb.mdf).

Если свойству назначит атрибут [WebBrowsable], то его можно будет редактировать посредством пользовательского интерфейса частей редакторов.

Для создания элементов управления WebPart можно использовать не только класс. Web-части можно создавать и на основе серврных элементов управления.

Элемент управления WebPart может имеет как стандартные команды, так и команды, определяемые интерфейсом IWebActionable.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100