Pass parameter from user-defined controls to host page : Basics « Custom Controls « ASP.NET Tutorial






File: Control.ascx

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Control.ascx.cs" Inherits="Control" %>
<div>
    Products:
    <asp:LinkButton ID="lnkBooks" runat="server" CommandArgument="MenuHost.aspx?product=Books" OnCommand="lnk_Command" >Books
  </asp:LinkButton><br />
    <asp:LinkButton ID="lnkToys" runat="server" CommandArgument="MenuHost.aspx?product=Toys" OnCommand="lnk_Command">Toys
  </asp:LinkButton><br />
    <asp:LinkButton ID="lnkSports" runat="server" CommandArgument="MenuHost.aspx?product=Sports" OnCommand="lnk_Command">Sports
  </asp:LinkButton><br />
    <asp:LinkButton ID="lnkFurniture" runat="server" CommandArgument="MenuHost.aspx?product=Furniture" OnCommand="lnk_Command">Furniture
  </asp:LinkButton>
</div>

File: Control.ascx.cs

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class LinkMenu : System.Web.UI.UserControl
{
    public event LinkClickedEventHandler LinkClicked;

    protected void lnk_Command(object sender, CommandEventArgs e)
    {
        if (LinkClicked != null)
        {
            LinkClickedEventArgs args = new LinkClickedEventArgs((string)e.CommandArgument);
            LinkClicked(this, args);

            if (!args.Cancel)
            {
                Response.Redirect(args.Url);
            }
        }
    }
}

File: MenuHost.aspx


<%@ Page Language="C#" AutoEventWireup="true"
    CodeFile="MenuHost.aspx.cs" Inherits="MenuHost"%>
<%@ Register TagPrefix="Java2s" TagName="LinkMenu" Src="Control.ascx" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server">
    <title>Menu Host</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <table>
            <tr>
                <td style="width: 100px">
                    <Java2s:LinkMenu id="Menu1" runat="server" OnLinkClicked="LinkClicked" />
                </td>
                <td>
                    &nbsp;&nbsp;<asp:Label id="lblSelection" runat="server" EnableViewState="false"/><br />
                    &nbsp;&nbsp;<asp:Label id="lblClick" runat="server" EnableViewState="false"/>
                </td>
            </tr>
        </table>
        <br />
        &nbsp;
    </div>
    </form>
</body>
</html>


File: MenuHost.aspx.cs

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public class LinkClickedEventArgs : EventArgs
{
    private string url;
    public string Url
    {
        get { return url; }
        set { url = value; }
    }

    private bool cancel = false;
    public bool Cancel
    {
        get { return cancel; }
        set { cancel = value; }
    }

    public LinkClickedEventArgs(string url)
    {
        Url = url;
    }
}
public delegate void LinkClickedEventHandler(object sender,  LinkClickedEventArgs e);



public partial class MenuHost : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            if (Request.Params["product"] != null)
            {
                lblSelection.Text = "You chose: ";
                lblSelection.Text += Request.Params["product"];
            }
        }
    }

    protected void LinkClicked(object sender, LinkClickedEventArgs e)
    {
        if (e.Url == "MenuHost.aspx?product=Furniture")
        {
            lblClick.Text = "This link is not allowed.";
            e.Cancel = true;
        }
    }

}








14.2.Basics
14.2.1.User control with property
14.2.2.ASP controls in user control
14.2.3.A Web user control file template
14.2.4.Adding controls to the Web user control
14.2.5.Creating control events in a user control (C#)
14.2.6.Creating control events in a user control (VB)
14.2.7.Exposing user control properties (C#)
14.2.8.Exposing user control properties (VB)
14.2.9.Populating user control properties from the host Web page (C#)
14.2.10.Populating user control properties from the host Web page (VB)
14.2.11.Component level variable
14.2.12.Action from user-defined control
14.2.13.Pass parameter from user-defined controls to host page
14.2.14.Calculator component based on page component (VB.net)
14.2.15.Day minder page component
14.2.16.Use custom control in Assembly
14.2.17.Building a simple User control that randomly displays one image
14.2.18.Registering User Controls in the Web Configuration File
14.2.19.Building Fully Rendered Controls