//------------------------------------------------------------------------------ // // Copyright (c) Microsoft Corporation. All rights reserved. // //------------------------------------------------------------------------------ namespace System.Web.UI.WebControls { using System; using System.ComponentModel; using System.Data; /// /// Represents a Parameter that gets its value from the user's profile data. /// [ DefaultProperty("PropertyName"), ] public class ProfileParameter : Parameter { /// /// Creates an instance of the ProfileParameter class. /// public ProfileParameter() { } /// /// Creates an instance of the ProfileParameter class with the specified parameter name and profile property. /// public ProfileParameter(string name, string propertyName) : base(name) { PropertyName = propertyName; } /// /// Creates an instance of the ProfileParameter class with the specified parameter name, type, and profile property. /// public ProfileParameter(string name, TypeCode type, string propertyName) : base(name, type) { PropertyName = propertyName; } /// /// Creates an instance of the ProfileParameter class with the specified parameter name, database type, and /// profile property. /// public ProfileParameter(string name, DbType dbType, string propertyName) : base(name, dbType) { PropertyName = propertyName; } /// /// Used to clone a parameter. /// protected ProfileParameter(ProfileParameter original) : base(original) { PropertyName = original.PropertyName; } /// /// The name of the Profile property to get the value from. /// [ DefaultValue(""), WebCategory("Parameter"), WebSysDescription(SR.ProfileParameter_PropertyName), ] public string PropertyName { get { object o = ViewState["PropertyName"]; if (o == null) return String.Empty; return (string)o; } set { if (PropertyName != value) { ViewState["PropertyName"] = value; OnParameterChanged(); } } } /// /// Creates a new ProfileParameter that is a copy of this ProfileParameter. /// protected override Parameter Clone() { return new ProfileParameter(this); } /// /// Returns the updated value of the parameter. /// protected internal override object Evaluate(HttpContext context, Control control) { if (context == null || context.Profile == null) { return null; } return DataBinder.Eval(context.Profile, PropertyName); } } }