<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=ASP.NET_Tutorial%2FCustom_Controls%2FAction</id>
		<title>ASP.NET Tutorial/Custom Controls/Action - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=ASP.NET_Tutorial%2FCustom_Controls%2FAction"/>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=ASP.NET_Tutorial/Custom_Controls/Action&amp;action=history"/>
		<updated>2026-04-29T16:10:51Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://nfex.ru/index.php?title=ASP.NET_Tutorial/Custom_Controls/Action&amp;diff=3292&amp;oldid=prev</id>
		<title> в 15:30, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=ASP.NET_Tutorial/Custom_Controls/Action&amp;diff=3292&amp;oldid=prev"/>
				<updated>2010-05-26T15:30:57Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 15:30, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://nfex.ru/index.php?title=ASP.NET_Tutorial/Custom_Controls/Action&amp;diff=3293&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=ASP.NET_Tutorial/Custom_Controls/Action&amp;diff=3293&amp;oldid=prev"/>
				<updated>2010-05-26T12:00:16Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Exposing Events from a User Control==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
File: Control.ascx&lt;br /&gt;
&amp;lt;%@ Control Language=&amp;quot;C#&amp;quot; ClassName=&amp;quot;TabStrip&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;%@ Import Namespace=&amp;quot;System.Collections.Generic&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;script runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
    public event EventHandler TabClick;&lt;br /&gt;
    public int SelectedIndex&lt;br /&gt;
    {&lt;br /&gt;
        get { return dlstTabStrip.SelectedIndex; }&lt;br /&gt;
    }&lt;br /&gt;
    void Page_Load()&lt;br /&gt;
    {&lt;br /&gt;
        if (!Page.IsPostBack)&lt;br /&gt;
        {&lt;br /&gt;
            List&amp;lt;string&amp;gt; tabs = new List&amp;lt;string&amp;gt;();&lt;br /&gt;
            tabs.Add(&amp;quot;A&amp;quot;);&lt;br /&gt;
            tabs.Add(&amp;quot;B&amp;quot;);&lt;br /&gt;
            tabs.Add(&amp;quot;C&amp;quot;);&lt;br /&gt;
            dlstTabStrip.DataSource = tabs;&lt;br /&gt;
            dlstTabStrip.DataBind();&lt;br /&gt;
            dlstTabStrip.SelectedIndex = 0;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    protected void dlstTabStrip_SelectedIndexChanged(object sender, EventArgs e)&lt;br /&gt;
    {&lt;br /&gt;
        if (TabClick != null)&lt;br /&gt;
            TabClick(this, EventArgs.Empty);&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;asp:DataList&lt;br /&gt;
    id=&amp;quot;dlstTabStrip&amp;quot;&lt;br /&gt;
    RepeatDirection=&amp;quot;Horizontal&amp;quot;&lt;br /&gt;
    OnSelectedIndexChanged=&amp;quot;dlstTabStrip_SelectedIndexChanged&amp;quot;&lt;br /&gt;
    CssClass=&amp;quot;tabs&amp;quot;&lt;br /&gt;
    ItemStyle-CssClass=&amp;quot;tab&amp;quot;&lt;br /&gt;
    SelectedItemStyle-CssClass=&amp;quot;selectedTab&amp;quot;&lt;br /&gt;
    Runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ItemTemplate&amp;gt;&lt;br /&gt;
    &amp;lt;asp:LinkButton&lt;br /&gt;
        id=&amp;quot;lnkTab&amp;quot;&lt;br /&gt;
        Text=&amp;quot;&amp;lt;%# Container.DataItem %&amp;gt;&amp;quot;&lt;br /&gt;
        CommandName=&amp;quot;Select&amp;quot;&lt;br /&gt;
        Runat=&amp;quot;server&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/ItemTemplate&amp;gt;&lt;br /&gt;
&amp;lt;/asp:DataList&amp;gt;&lt;br /&gt;
File: Default.aspx&lt;br /&gt;
&amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;%@ Register TagPrefix=&amp;quot;user&amp;quot; TagName=&amp;quot;TabStrip&amp;quot; Src=&amp;quot;~/Control.ascx&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.1//EN&amp;quot;&lt;br /&gt;
&amp;quot;http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
    protected void TabStrip1_TabClick(object sender, EventArgs e)&lt;br /&gt;
    {&lt;br /&gt;
        MultiView1.ActiveViewIndex = TabStrip1.SelectedIndex;&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;head id=&amp;quot;Head1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;style type=&amp;quot;text/css&amp;quot;&amp;gt;&lt;br /&gt;
        .tabs a&lt;br /&gt;
        {&lt;br /&gt;
            color:blue;&lt;br /&gt;
            text-decoration:none;&lt;br /&gt;
            font:14px Arial,Sans-Serif;&lt;br /&gt;
        }&lt;br /&gt;
        .tab&lt;br /&gt;
        {&lt;br /&gt;
            background-color:#eeeeee;&lt;br /&gt;
            padding:5px;&lt;br /&gt;
            border:Solid 1px black;&lt;br /&gt;
            border-bottom:none;&lt;br /&gt;
        }&lt;br /&gt;
        .selectedTab&lt;br /&gt;
        {&lt;br /&gt;
            background-color:white;&lt;br /&gt;
            padding:5px;&lt;br /&gt;
            border:Solid 1px black;&lt;br /&gt;
            border-bottom:none;&lt;br /&gt;
        }&lt;br /&gt;
        .views&lt;br /&gt;
        {&lt;br /&gt;
            background-color:white;&lt;br /&gt;
            width:400px;&lt;br /&gt;
            border:Solid 1px black;&lt;br /&gt;
            padding:10px;&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Show TabStrip&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;form id=&amp;quot;form1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div&amp;gt;&lt;br /&gt;
    &amp;lt;user:TabStrip&lt;br /&gt;
        ID=&amp;quot;TabStrip1&amp;quot;&lt;br /&gt;
        OnTabClick=&amp;quot;TabStrip1_TabClick&amp;quot;&lt;br /&gt;
        Runat=&amp;quot;Server&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;views&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;asp:MultiView&lt;br /&gt;
        id=&amp;quot;MultiView1&amp;quot;&lt;br /&gt;
        ActiveViewIndex=&amp;quot;0&amp;quot;&lt;br /&gt;
        Runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;asp:View ID=&amp;quot;Products&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;h1&amp;gt;Products&amp;lt;/h1&amp;gt;&lt;br /&gt;
            We sell a variety of useful products...&lt;br /&gt;
        &amp;lt;/asp:View&amp;gt;&lt;br /&gt;
        &amp;lt;asp:View ID=&amp;quot;Services&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;h1&amp;gt;Services&amp;lt;/h1&amp;gt;&lt;br /&gt;
            We offer a number of services...&lt;br /&gt;
        &amp;lt;/asp:View&amp;gt;&lt;br /&gt;
        &amp;lt;asp:View ID=&amp;quot;About&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;h1&amp;gt;About&amp;lt;/h1&amp;gt;&lt;br /&gt;
            We were the first company to offer products and services...&lt;br /&gt;
        &amp;lt;/asp:View&amp;gt;&lt;br /&gt;
    &amp;lt;/asp:MultiView&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Use action (Event) in custom control==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;%@ Page Language=&amp;quot;VB&amp;quot; %&amp;gt;&lt;br /&gt;
&amp;lt;%@ Register TagPrefix=&amp;quot;ACME&amp;quot; Namespace=&amp;quot;MyCustomControls&amp;quot; Assembly=&amp;quot;CustomControls&amp;quot;%&amp;gt;&lt;br /&gt;
&amp;lt;script runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;
   sub Submit(Sender as Object, e as EventArgs)&lt;br /&gt;
      &amp;quot;do nothing&lt;br /&gt;
   end sub&lt;br /&gt;
   &lt;br /&gt;
   sub ChangeIt(Sender as Object, e as EventArgs)&lt;br /&gt;
      Response.write(&amp;quot;Event handled!&amp;quot;)&lt;br /&gt;
   end sub&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;&lt;br /&gt;
   &amp;lt;form runat=server&amp;gt;&lt;br /&gt;
      The custom control produces the following output:&lt;br /&gt;
      &amp;lt;ACME:CustomControl id=&amp;quot;MyControl&amp;quot; runat=&amp;quot;server&amp;quot;&lt;br /&gt;
         Message=&amp;quot;Hello world!&amp;quot; &lt;br /&gt;
         OnTextChanged=&amp;quot;ChangeIt&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;asp:Button runat=&amp;quot;server&amp;quot;&lt;br /&gt;
         Text=&amp;quot;Submit&amp;quot;&lt;br /&gt;
         OnClick=&amp;quot;Submit&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File: CustomControl.cs&lt;br /&gt;
using System;&lt;br /&gt;
using System.Web;&lt;br /&gt;
using System.Web.UI;&lt;br /&gt;
using System.Collections.Specialized;&lt;br /&gt;
namespace MyCustomControls {&lt;br /&gt;
   public class CustomControl : Control, IPostBackDataHandler {&lt;br /&gt;
      public event EventHandler TextChanged;&lt;br /&gt;
      protected virtual void OnTextChanged(EventArgs e) {&lt;br /&gt;
         TextChanged(this, e);&lt;br /&gt;
      }&lt;br /&gt;
      &lt;br /&gt;
      public bool LoadPostData(String PostDataKey, NameValueCollection Values) {&lt;br /&gt;
         string strOldValue = this.Message;&lt;br /&gt;
         string strNewValue = Values[PostDataKey];&lt;br /&gt;
         if (strOldValue != strNewValue) {&lt;br /&gt;
            this.Message = strNewValue;&lt;br /&gt;
            return true;&lt;br /&gt;
         }&lt;br /&gt;
         return false;&lt;br /&gt;
      }&lt;br /&gt;
      &lt;br /&gt;
      public void RaisePostDataChangedEvent() {&lt;br /&gt;
         OnTextChanged(EventArgs.Empty);&lt;br /&gt;
      }&lt;br /&gt;
      &lt;br /&gt;
      public string Message {&lt;br /&gt;
         get {&lt;br /&gt;
            return ViewState[&amp;quot;Message&amp;quot;].ToString();&lt;br /&gt;
         }&lt;br /&gt;
         set {&lt;br /&gt;
            ViewState[&amp;quot;Message&amp;quot;] = value;&lt;br /&gt;
         }&lt;br /&gt;
      }&lt;br /&gt;
      &lt;br /&gt;
      protected override void Render(HtmlTextWriter Output) {&lt;br /&gt;
         Output.Write(&amp;quot;&amp;lt;input name=&amp;quot; + this.UniqueID + &amp;quot; type=text value=\&amp;quot;&amp;quot; + this.Message + &amp;quot;\&amp;quot;&amp;gt;&amp;quot;);&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
File: CustomControl.vb&lt;br /&gt;
Imports System&lt;br /&gt;
Imports System.Web&lt;br /&gt;
Imports System.Web.UI&lt;br /&gt;
Imports System.Collections.Specialized&lt;br /&gt;
Namespace MyCustomControls&lt;br /&gt;
   Public Class CustomControl : Inherits Control : Implements IPostBackDataHandler&lt;br /&gt;
      public Event TextChanged(obj as object, e as eventargs)&lt;br /&gt;
      protected sub OnTextChanged(e as EventArgs)&lt;br /&gt;
         RaiseEvent TextChanged(Me, e)&lt;br /&gt;
      end sub&lt;br /&gt;
      &lt;br /&gt;
      Public Function LoadPostData(PostDataKey As String, Values As NameValueCollection) As Boolean Implements IPostBackDataHandler.LoadPostData&lt;br /&gt;
         dim strOldValue as String = Me.Message&lt;br /&gt;
         dim strNewValue as String = Values(postDataKey)&lt;br /&gt;
         if not strOldValue = strNewValue&lt;br /&gt;
            Me.Message = strNewValue&lt;br /&gt;
            return true&lt;br /&gt;
         end if&lt;br /&gt;
         return false&lt;br /&gt;
      End Function&lt;br /&gt;
      &lt;br /&gt;
      Public Sub RaisePostDataChangedEvent() Implements IPostBackDataHandler.RaisePostDataChangedEvent&lt;br /&gt;
         OnTextChanged(EventArgs.Empty)&lt;br /&gt;
      end sub&lt;br /&gt;
      &lt;br /&gt;
      public property Message as string&lt;br /&gt;
         Get&lt;br /&gt;
            Message = ViewState(&amp;quot;Message&amp;quot;).ToString&lt;br /&gt;
         End Get&lt;br /&gt;
         Set&lt;br /&gt;
            ViewState(&amp;quot;Message&amp;quot;) = value&lt;br /&gt;
         End Set&lt;br /&gt;
      end property&lt;br /&gt;
      &lt;br /&gt;
      Protected Overrides Sub Render(Output as HtmlTextWriter)&lt;br /&gt;
         Output.Write(&amp;quot;&amp;lt;input name=&amp;quot; &amp;amp; Me.UniqueID &amp;amp; &amp;quot; type=text value=&amp;quot;&amp;quot;&amp;quot; &amp;amp; Me.Message &amp;amp; &amp;quot;&amp;quot;&amp;quot;&amp;gt;&amp;quot;)&lt;br /&gt;
      End Sub&lt;br /&gt;
   End Class&lt;br /&gt;
End Namespace&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>