This article was translated by machine. To view in the article in English, select the English check box. You can also display the English text in a popup window by moving the mouse pointer over the text.
الترجمة
الأصلي
This documentation is archived and is not being maintained.

ImportCatalogPart.GetWebPart أسلوب

Visual Studio 2010

إرجاع a مرجع إلى a WebPart عنصر تحكم based تشغيل the قيم in the وصف passed في the أسلوب.

مساحة الاسم:  System.Web.UI.WebControls.WebParts
التجميع:  System.Web (في System.Web.dll)

public override WebPart GetWebPart(
	WebPartDescription description
)

المعلمات

description
النوع: System.Web.UI.WebControls.WebParts.WebPartDescription
WebPartDescription تحتوي على تفاصيل حول عنصر التحكم.

القيمة المُرجعة

النوع: System.Web.UI.WebControls.WebParts.WebPart
A WebPart عنصر تحكم whose وصف التلائمات the قيم في description.

استثناء:شرط
ArgumentNullException

description هو null.

ArgumentException

descriptionهو غير متوفرWebPartDescriptionالقيمة.

GetWebPart الأسلوب بإرجاع مرجع في WebPartتفاصيل الوصف التي تطابق قيم عنصر تحكم WebPartDescriptionالكائن الذي تم إدخاله في الأسلوب. Typically, this أسلوب هو used together مع the GetAvailableWebPartDescriptions أسلوب, which هو used إلى retrieve the descriptions of عناصر التحكم في the كاتالوج. الفردية WebPartعناصر يمكن ثم استرداد أو التعامل معه كما هو مطلوب بتمرير الفردية WebPartDescriptionالكائنات GetWebPartالأسلوب.

يوضح المثال تعليمات برمجية التالي كيفية استخدام GetWebPartالأسلوب تشغيل صفحة ويب. المثال الأجزاء الأربعة:

  • أ عنصر تحكم المستخدم التي تمكنك من تغيير أوضاع العرض على صفحة "أجزاء ويب".

  • صفحة ويب التي تحتوي على " CatalogZoneعنصر التحكم ImportCatalogPartالتحكم، along مع تعليمات برمجية التي تستخدم GetWebPartالأسلوب.

  • مصدر تعليمات برمجية الملف الذي يحتوي على عمودين المخصصة WebPartعناصر التحكم.

  • شرح كيفية مثال يعمل عند تحميل الصفحة في مستعرض.

الجزء أول من هذا المثال تعليمات برمجية هو عنصر تحكم مستخدم الذي يمكن مستخدمين من إلى تغيير أوضاع عرض تشغيل صفحة ويب. يجب وضع تعليمات برمجية المصدر التالية في ملف و تسمية Displaymodemenucs.ascx أو Displaymodemenuvb.ascx (اعتماداً تشغيل اللغة الذي تستخدمه). لعرض تفاصيل حول أوضاع ووصف المصدر تعليمات برمجية في عنصر التحكم هذا، راجع الإرشادات التفصيلية: تغيير أوضاع العرض على صفحة أجزاء ويب.


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

 // Use a field to reference the current 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;

    // Fill the dropdown with the names of supported display modes.
    foreach (WebPartDisplayMode mode in _manager.SupportedDisplayModes)
    {
      String modeName = mode.Name;
      // Make sure a mode is enabled before adding it.
      if (mode.IsEnabled(_manager))
      {
        ListItem item = new ListItem(modeName, modeName);
        DisplayModeDropdown.Items.Add(item);
      }
    }

    // If shared scope is allowed for this user, display the scope-switching
    // UI and select the appropriate radio button for the current user scope.
    if (_manager.Personalization.CanEnterSharedScope)
    {
      Panel2.Visible = true;
      if (_manager.Personalization.Scope == PersonalizationScope.User)
        RadioButton1.Checked = true;
      else
        RadioButton2.Checked = true;
    }

  }

  // Change the page to the selected display mode.
  void DisplayModeDropdown_SelectedIndexChanged(object sender, EventArgs e)
  {
    String selectedMode = DisplayModeDropdown.SelectedValue;

    WebPartDisplayMode mode = _manager.SupportedDisplayModes[selectedMode];
    if (mode != null)
      _manager.DisplayMode = mode;
  }

  // Set the selected item equal to the current display mode.
  void Page_PreRender(object sender, EventArgs e)
  {
    ListItemCollection items = DisplayModeDropdown.Items;
    int selectedIndex = 
      items.IndexOf(items.FindByText(_manager.DisplayMode.Name));
    DisplayModeDropdown.SelectedIndex = selectedIndex;
  }

  // Reset all of a user's personalization data for the page.
  protected void LinkButton1_Click(object sender, EventArgs e)
  {
    _manager.Personalization.ResetPersonalizationState();
  }

  // If not in User personalization scope, toggle into it.
  protected void RadioButton1_CheckedChanged(object sender, EventArgs e)
  {
    if (_manager.Personalization.Scope == PersonalizationScope.Shared)
      _manager.Personalization.ToggleScope();
  }

  // If not in Shared scope, and if user is allowed, toggle the scope.
  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" 
      AssociatedControlID="DisplayModeDropdown"/>
    <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" />
    <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>


الجزء الثاني من مثال التعليمة البرمجية صفحة ويب. في أعلى الصفحة هي الثاني registerتوجيهات، واحدة للمستخدم عنصر تحكم والآخر للمكون المترجمة التي تحتوي على جهازي المخصصة WebPartعنصر تحكم s. كل من عناصر التحكم هذه يتم الرجوع إليها شكل إلزامي في علامات الصفحة. تشغيل مراجع مصرحة WebPartعناصر التحكم (كلاهما تبدأ aspSampleبادئة)، لاحظ أن يكون لكل exportMode="all"تمت الإضافة سمة إلى it. This سمة enables you إلى يصدّر a .WebPart وصف ملف for the عنصر تحكم, which you will استخدم في a later إلى step إلى استيراد the عنصر تحكم إلى a الصفحة.

ملاحظةملاحظة

لتمكين مستخدمين تطبيق "أجزاء ويب" لتصدير ملف وصف ل WebPartعناصر التحكم، يجب أيضا تمكين ميزة التصدير في تطبيق ويب بواسطة إضافة enableExport="true"السمة إلى <webParts>عنصر (الذي هو تابع <system.web>عنصر) في ملف Web.config. يصدّر معطل بشكل افتراضي، حتى إذا لم يتم ممكّن التصدير للتطبيق الخاص بك، قم بتحرير ملف ويب.config والقيام بذلك الآن.

صفحة ويب أيضا على مرجع مصرحة ImportCatalogPartعنصر تحكم، تتداخل في التسلسل الهرمي المناسبة لعناصر مصرحة. The GetWebPart أسلوب هو called within the تعليمات برمجية for the Button2_Click أسلوب.


<%@ page language="c#" %>
<%@ register TagPrefix="uc1" 
  TagName="DisplayModeMenuCS" 
  Src="DisplayModeMenuCS.ascx" %>
<%@ register tagprefix="aspSample" 
  Namespace="Samples.AspNet.CS.Controls" %>

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

<script runat="server">

  protected void Button1_Click(object sender, EventArgs e)
  {
    WebPartDescriptionCollection descriptions =
      ImportCatalogPart1.GetAvailableWebPartDescriptions();
    StringBuilder descriptionContent = new StringBuilder();
    foreach (WebPartDescription description in descriptions)
    {
      descriptionContent.AppendLine("<div><br /><strong>" + description.Title +
        "</strong><br />");
      descriptionContent.AppendLine("&nbsp;ID: " + description.ID + "<br />");
      descriptionContent.AppendLine("&nbsp;Description: " +
        description.Description + "<br /></div><hr />");
    }

    Label1.Text = "<h3>Catalog Contents</h3>" + descriptionContent.ToString();     

  }

  protected void Button2_Click(object sender, EventArgs e)
  {
    WebPartDescriptionCollection descriptions =
      ImportCatalogPart1.GetAvailableWebPartDescriptions();

    if (descriptions.Count > 0)
    {
      WebPart partToAdd =
        ImportCatalogPart1.GetWebPart(descriptions[0]);
      WebPartManager1.AddWebPart(partToAdd, zone1, 0);
    }
  }

  protected void Page_Load(object sender, EventArgs e)
  {
    Button1.Visible = false;
    Button2.Visible = false;
    Label1.Visible = false;
  }

  protected void ImportCatalogPart1_PreRender(object sender, 
    EventArgs e)
  {
    Button1.Visible = true;
    Button2.Visible = true;
    Label1.Visible = true;
  }


</script>


<html xmlns="http://www.w3.org/1999/xhtml" >
  <head id="Head1" runat="server">
    <title>
      ImportCatalogPart Control
    </title>
  </head>
  <body>
    <form id="form1" runat="server">
      <asp:webpartmanager id="WebPartManager1" runat="server"  />
      <uc1:DisplayModeMenuCS ID="DisplayModeMenu1" runat="server" />
      <asp:webpartzone id="zone1" runat="server" >
        <PartTitleStyle BorderWidth="1"
          Font-Names="Verdana, Arial"
          Font-Size="110%"
          BackColor="LightBlue" />
        <zonetemplate>
          <asp:Calendar ID="Calendar1" runat="server" Title="My Calendar" />
          <aspsample:textdisplaywebpart id="wp1" runat="server" 
            Title="Text Display WebPart" exportmode="all" 
            description="Dynamically displays text in a label"/>
          <aspsample:userinfowebpart id="wp2" runat="server" 
            Title="User Info WebPart" exportmode="all" 
            description="Gathers user information" />
        </zonetemplate>
      </asp:webpartzone> 
      <asp:CatalogZone ID="CatalogZone1" runat="server">
        <ZoneTemplate>
          <asp:ImportCatalogPart ID="ImportCatalogPart1" 
            runat="server" 
            OnPreRender="ImportCatalogPart1_PreRender" />
        </ZoneTemplate>
      </asp:CatalogZone>
      <hr />
      <asp:Button ID="Button1" runat="server" 
        Text="Get WebPart Description" 
        OnClick="Button1_Click" />
      <br />
      <asp:Button ID="Button2" runat="server" 
        Text="Use GetWebPart" 
        OnClick="Button2_Click" />
      <asp:Label ID="Label1" runat="server" Text=""></asp:Label>  
    </form>
  </body>
</html>


الجزء الثالث من مثال التعليمة البرمجية هو رمز المصدر ل جهازي WebPartعناصر التحكم. لتشغيل مثال التعليمات البرمجية , يجب عليك التحويل برمجياً للتعليمات البرمجية المصدر . يمكنك تحويله برمجياً مباشرة و وضع ناتج التجميع في مجلد سلة موقع ويب الخاص بك أو في مخزن التجميع العمومي المؤقت. بشكل بديل، يمكنك وضع التعليمات البرمجية المصدر في مجلد App_Code للموقع الخاص بك ، حيث سيتم تحويله برمجيا بشكل حيوي وقت التشغيل . مثال التعليمات البرمجية هذا يستخدم التحويل البرمجي الديناميكي. للإرشادات التفصيلية التي توضح كلا الأسلوبين التحويل البرمجي، راجع الإرشادات التفصيلية: تطوير و استخدام عنصر تحكم خادم مخصص.


using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Security.Permissions;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

namespace Samples.AspNet.CS.Controls
{
  [AspNetHostingPermission(SecurityAction.Demand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  [AspNetHostingPermission(SecurityAction.InheritanceDemand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  public class UserInfoWebPart : WebPart
  {
    HttpServerUtility server = HttpContext.Current.Server;
    private String _userNickName = "Add a nickname.";
    private String _userPetName = "Add a pet's name.";
    private DateTime _userSpecialDate = DateTime.Now;
    private Boolean _userIsCurrent = true;
    private JobTypeName _userJobType = JobTypeName.Unselected;
    public enum JobTypeName
    {
      Unselected = 0,
      Support = 1,
      Service = 2,
      Professional = 3, 
      Technical = 4,
      Manager = 5,
      Executive = 6
    }
    Label NickNameLabel;
    Label PetNameLabel;
    Label SpecialDateLabel;
    CheckBox IsCurrentCheckBox;
    Label JobTypeLabel;

    // Add the Personalizable and WebBrowsable attributes to the  
    // public properties, so that users can save property values  
    // and edit them with a PropertyGridEditorPart control.
    [Personalizable(), WebBrowsable, WebDisplayName("Nickname")]
    public String NickName
    {
      get 
      { 
        object o = ViewState["NickName"];
        if (o != null)
          return (string)o;
        else
          return _userNickName;        
      } 

      set { _userNickName = server.HtmlEncode(value); }
    }

    [Personalizable(), WebBrowsable, WebDisplayName("Pet Name")]
    public String PetName
    {
      get 
      { 
        object o = ViewState["PetName"];
        if (o != null)
          return (string)o;
        else
          return _userPetName;        
      }

      set { _userPetName = server.HtmlEncode(value); }
    }

    [Personalizable(), WebBrowsable(), WebDisplayName("Special Day")]
    public DateTime SpecialDay
    {
      get
      {
        object o = ViewState["SpecialDay"];
        if (o != null)
          return (DateTime)o;
        else
          return _userSpecialDate;

      }

      set { _userSpecialDate = value; }
    }

    [Personalizable(), WebBrowsable(), WebDisplayName("Job Type")]
    public JobTypeName UserJobType
    {
      get
      {
        object o = ViewState["UserJobType"];
        if (o != null)
          return (JobTypeName)o;
        else
          return _userJobType;
      }

      set { _userJobType = (JobTypeName)value; }
    }

    [Personalizable(), WebBrowsable(), WebDisplayName("Is Current")]
    public Boolean IsCurrent
    {
      get
      {
        object o = ViewState["IsCurrent"];
        if (o != null)
          return (Boolean)o;
        else
          return _userIsCurrent;
      }

      set { _userIsCurrent = value; }
    }


    protected override void CreateChildControls()
    {
      Controls.Clear();

      NickNameLabel = new Label();
      NickNameLabel.Text = this.NickName;
      SetControlAttributes(NickNameLabel);

      PetNameLabel = new Label();
      PetNameLabel.Text = this.PetName;
      SetControlAttributes(PetNameLabel);

      SpecialDateLabel = new Label();
      SpecialDateLabel.Text = this.SpecialDay.ToShortDateString();
      SetControlAttributes(SpecialDateLabel);

      IsCurrentCheckBox = new CheckBox();
      IsCurrentCheckBox.Checked = this.IsCurrent;
      SetControlAttributes(IsCurrentCheckBox);

      JobTypeLabel = new Label();
      JobTypeLabel.Text = this.UserJobType.ToString();
      SetControlAttributes(JobTypeLabel);

      ChildControlsCreated = true;

    }

    private void SetControlAttributes(WebControl ctl)
    {
      ctl.BackColor = Color.White;
      ctl.BorderWidth = 1;
      ctl.Width = 200;
      this.Controls.Add(ctl);
    }

    protected override void RenderContents(HtmlTextWriter writer)
    {
      writer.Write("Nickname:");
      writer.WriteBreak();
      NickNameLabel.RenderControl(writer);
      writer.WriteBreak();
      writer.Write("Pet Name:");
      writer.WriteBreak();
      PetNameLabel.RenderControl(writer);
      writer.WriteBreak();
      writer.Write("Special Date:");
      writer.WriteBreak();
      SpecialDateLabel.RenderControl(writer);
      writer.WriteBreak();
      writer.Write("Job Type:");
      writer.WriteBreak();
      JobTypeLabel.RenderControl(writer);
      writer.WriteBreak();
      writer.Write("Current:");
      writer.WriteBreak();
      IsCurrentCheckBox.RenderControl(writer);
    }
  }


  [AspNetHostingPermission(SecurityAction.Demand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  [AspNetHostingPermission(SecurityAction.InheritanceDemand,
    Level = AspNetHostingPermissionLevel.Minimal)]
  public class TextDisplayWebPart : WebPart
  {
    private String _contentText = null;
    TextBox input;
    Label DisplayContent;
    Literal lineBreak;

    [Personalizable(), WebBrowsable]
    public String ContentText
    {
      get { return _contentText; }
      set { _contentText = value; }
    }

    protected override void CreateChildControls()
    {
      Controls.Clear();
      DisplayContent = new Label();
      DisplayContent.BackColor = Color.LightBlue;
      DisplayContent.Text = this.ContentText;
      this.Controls.Add(DisplayContent);

      lineBreak = new Literal();
      lineBreak.Text = @"<br />";
      Controls.Add(lineBreak);

      input = new TextBox();
      this.Controls.Add(input);
      Button update = new Button();
      update.Text = "Set Label Content";
      update.Click += new EventHandler(this.submit_Click);
      this.Controls.Add(update);

    }

    private void submit_Click(object sender, EventArgs e)
    {
      // Update the label string.
      if (input.Text != String.Empty)
      {
        _contentText = input.Text + @"<br />";
        input.Text = String.Empty;
        DisplayContent.Text = this.ContentText;
      }
    }

  }

}


Now تشغيل the تعليمات برمجية مثال. التحميل صفحة ويب في مستعرض. The أول step هو يصدّر a .WebPart وصف ملف for each WebPart عنصر تحكم (for the TextDisplayWebPart و for the UserInfoWebPart عنصر تحكم). For each عنصر تحكم, انقر the الأفعال قائمة تشغيل the عنصر تحكم (represented بواسطة the downward arrow في the عنوان bar), و انقر يصدّر. اتبع الإرشادات التي تظهر على حفظ ملف وصف.WebPart لعنصر التحكم. بعد أن قمت بتصديرها ملف وصف لكل عنصر تحكم، يغلق صفحة ويب، ثم قم بتحرير مصدر الصفحة في محرر. يحذف the <aspSample:userinfowebpart> و the <aspSample:textdisplaywebpart> عنصر تحكم إعلان عناصر, then حفظ و يغلق the ملف. (You are doing this step إلى simulate a مستخدم who does not yet have these عناصر التحكم, so you can استيراد the عناصر التحكم إلى the الصفحة).

تحميل الويب الصفحة مرة أخرى في مستعرض. استخدم عنصر تحكم القائمة منسدلة الوضع عرض وحدد كاتالوج لتبديل الصفحة ل كاتالوج الالوضع. في the ImportCatalogPart عنصر تحكم, انقر the استعراض زر, استعراض إلى the .WebPart ملفات you تاريخ الإنشاء, تحديد واحد, then انقر the يحمّل زر. يجب أن يظهر مرجع إلى عنصر التحكم باستخدام علامة صندوق بجانبه. Now that the عنصر تحكم وصف هو uploaded إلى the ImportCatalogPart عنصر تحكم, انقر the استخدم GetWebPart زر قريب the أسفل of the الصفحة. This will demonstrate the effect of calling the GetWebPart أسلوب و passing إلى it the عنصر تحكم وصف currently تم تحميله في the ImportCatalogPart عنصر تحكم. ملاحظة that the associated عنصر تحكم الخادم هو تمت الإضافة immediately إلى the ويب الصفحة, without the مستخدم having إلى انقر the إضافة زر. GetWebPart الأسلوب، الذي هو سابقا في Button2_Clickمصدر الصفحة، يقوم الأسلوب بإرجاع WebPartعنصر تحكم مقترن بوصف الحالية التي هو تحميلها في ImportCatalogPartعنصر التحكم. التالي AddWebPartأسلوب هو يسمى، و WebPartعنصر التحكم هو مباشرة بإضافتها إلى الصفحة. وهذا يوضح كيف إلى بإضافة عنصر تحكم برمجياً من ImportCatalogPartالتحكم دون تدخل من قبل مستخدم.

بعد إضافة the أول عنصر تحكم, تكرار the عملية إلى add the ثانية عنصر تحكم إلى the الصفحة. وأخيراً، انقر فوق إغلاق لإنهاء كاتالوج الوضع وإرجاع الصفحة لوضع الاستعراض. كلاهما مخصص عناصر التحكم should now appear في the الصفحة, containing the قيم they had when you exported وصف ملفات earlier.

نظام التشغيل Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, الإصدار x64 من نظام التشغيل Windows XP Professional, Windows XP Starter Edition, Windows Server 2008, نظام التشغيل Windows Server 2003, نظام التشغيل Windows Server 2000 المزود بحزمة الخدمة SP4, نظام التشغيل Windows Millennium Edition, نظام التشغيل Windows 98

لا يدعم .NET Framework و .NET Compact Framework كافة الإصدارات الخاصة بكل نظام أساسي. للحصول على قائمة بالإصدارات المدعمة، راجع متطلبات النظام إطار عمل .NET.

.NET Framework

مدعوم في: 4, 3.5, 3.0, 2.0
إظهار: