Code to Retrieve and Display Profile Properties
Use the following code to retrieve and display profile properties. The code should be used within a Commerce Server project. For more information about creating a Commerce Server project, see Creating a Commerce Project.
<%@ Page language="c#" %>
<%@ Import Namespace="Microsoft.CommerceServer.Runtime" %>
<%@ Import Namespace="Microsoft.CommerceServer.Runtime.Profiles" %>
<html>
<script language="C#" >
// Web-form scoped variables.
ProfileContext profileContext = CommerceContext.Current.ProfileSystem;
// Default page action.
void Page_Load(Object sender, EventArgs e)
{
if (!IsPostBack)
{
LogonnameValidator.ErrorMessage = "* User does not exist *";
}
}
// Event handle for the click event on the "Ok" button.
public void Ok_Click(Object sender, EventArgs args)
{
DisplayProperties(LogonnameText.Text);
}
// This method retrieves the user profile for the specified logon
// name, and displays the value for every property on this profile.
void DisplayProperties(string logonName)
{
Profile userProfile;
// Retrieve an existing profile from the
userProfile = profileContext.GetProfile("logon_name", logonName, "UserObject");
if (userProfile == null)
{
LogonnameValidator.IsValid = false;
ProfilePropertyGroups.DataSource = null;
ProfilePropertyGroups.DataBind();
}
else
{
ProfilePropertyGroups.DataSource = userProfile.PropertyGroups;
ProfilePropertyGroups.DataBind();
BindProperties();
}
}
// This method binds the properties collection on all the top-level property
// groups to individual nested repeater controls.
void BindProperties()
{
int i;
ProfilePropertyGroup ppg;
ProfilePropertyGroupCollection ppgc;
ppgc = ProfilePropertyGroups.DataSource as ProfilePropertyGroupCollection;
for (i = 0 ; i < ppgc.Count ; i++)
{
Repeater propertiesControl;
// Retrieve the ith property group.
ppg = ppgc[i];
// Bind the properties collection on this property group to the
// nested "ProfileProperties" repeater.
propertiesControl = ProfilePropertyGroups.Items[i].FindControl("ProfileProperties") as Repeater;
propertiesControl.DataSource = ppg.Properties;
propertiesControl.DataBind();
}
}
</script>
<body>
<body>
<form ID="displayprofile" method="post" >
<asp:Label id="TitleLabel" Text="Display a profile" /><br>
<br>
<asp:Table id="profileData" BorderWidth="2">
<asp:TableRow>
<asp:TableCell>
<asp:Label id="LogonNameLabel" Text="Name:" />
</asp:TableCell>
<asp:TableCell>
<asp:TextBox id="LogonnameText" ></asp:TextBox>
<asp:RequiredFieldValidator id="LogonnameValidator" ControlToValidate="LogonnameText" Display="dynamic"></asp:RequiredFieldValidator>
</asp:TableCell>
</asp:TableRow>
<asp:TableRow>
<asp:TableCell>
<asp:Button id="Ok" Text="Ok" OnClick="Ok_Click" Width="80" />
</asp:TableCell>
</asp:TableRow>
</asp:Table>
<asp:Repeater ID="ProfilePropertyGroups" Runat="server">
<HeaderTemplate>
<hr/>
</HeaderTemplate>
<ItemTemplate>
<p>
<%# DataBinder.Eval(Container.DataItem, "Name") %> :
<br/>
<asp:Repeater ID="ProfileProperties" Runat="server">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "Name") %> : <%# DataBinder.Eval(Container.DataItem, "Value") %>
<br/>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
<FooterTemplate>
<hr/>
</FooterTemplate>
</asp:Repeater>
</form>
</body>
</html>
See Also
ProfilePropertyGroup Class (BCL)
ProfilePropertyGroupCollection Class (BCL)
Copyright © 2005 Microsoft Corporation.
All rights reserved.