470,641 Members | 1,815 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 470,641 developers. It's quick & easy.

Custom Control does not allow access to Attributes

I built a custom control for all the basic web.ui.controls like textbox,
label, checkbox etc etc. I added my custom attribute called ApplySecurity to
the html in the page.

However, when I cycle through the controls on the page using this code, I
cant seem to be able to access the Attribute collection. However, if I were
to add the tag to a regular TextBox, the Attribute is available.

My recursive function looks like this:
************************************************** *****
private SortedList PageFieldDetector(Control ctlPage, ref SortedList
r_slPageControlList)

{

string strPageID = ctlPage.ClientID;

string strObjectID = "";

string strObjectType = "";

string strTempObjectType = "";

string strApplySecurity = "";

int intLastPeriodIndexPosition = 0;

foreach (Control ctrl in ctlPage.Controls)

{

strObjectID = ctrl.ClientID.ToString();

//check if securable

try

{

strApplySecurity =
((WebControl)(ctrl)).Attributes["applysecurity"].ToString();

}

catch

{

strApplySecurity = "False";

}

if (strApplySecurity == "True")

{

strTempObjectType = ctrl.GetType().ToString();

intLastPeriodIndexPosition = strTempObjectType.LastIndexOf(".") + 1;

strObjectType = strTempObjectType.Substring(intLastPeriodIndexPosi tion,
strTempObjectType.Length - intLastPeriodIndexPosition);

r_slPageControlList.Add(strObjectID, strObjectType);

}

else

{

if (ctrl.Controls.Count > 0)

{

PageFieldDetector(ctrl, ref r_slPageControlList);

}

}

}

return r_slPageControlList;

}

************************************************** *****
A regular html control like this has the attribute collection:
<asp:Label ID="lblHeader" applysecurity="False" runat="server" Text="Page
Header No security is to be applied to this object"></asp:Label>

However, My custom textbox does not diaplay any attributes at all

<aepc:aeptextbox id="AEPTextBox1" runat="server"
applysecurity="True"></aepc:aeptextbox>

This is my code for the custom textbox:

using System;

using System.Collections.Generic;

using System.Text;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.ComponentModel;

using System.Drawing;

using System.Diagnostics;

using System.Design;

[assembly: TagPrefix("AEPortal", "AEPC")]

namespace AEPortal

{

[ToolboxData("<{0}:AEPTextBox runat=server
applysecurity=False></{0}:AEPTextBox>")]

[ToolboxBitmap(typeof(TextBox))]

[DesignerAttribute("System.Web.UI.WebControls.TextB ox")]

public class AEPTextBox : System.Web.UI.WebControls.TextBox

{

[Bindable(true),

Description("Accruent Enterprise Portal Custom TextBox"),

Category("Misc"),

DefaultValue("False")]

private bool blnApplySecurity = false;

public bool ApplySecurity

{

get

{

return blnApplySecurity;

}

set

{

blnApplySecurity = value;

}

}

protected override void Render(HtmlTextWriter w)

{

w.AddAttribute("applysecurity", blnApplySecurity.ToString());

base.Render(w);

}

}

}
Nov 19 '05 #1
1 1527
Arbitrary attributes (ones where there is no property) are implemented by
the custom control implementing the IAttributeAccessor interface.

-Brock
DevelopMentor
http://staff.develop.com/ballen
I built a custom control for all the basic web.ui.controls like
textbox, label, checkbox etc etc. I added my custom attribute called
ApplySecurity to the html in the page.

However, when I cycle through the controls on the page using this
code, I cant seem to be able to access the Attribute collection.
However, if I were to add the tag to a regular TextBox, the Attribute
is available.

My recursive function looks like this:
************************************************** *****
private SortedList PageFieldDetector(Control ctlPage, ref SortedList
r_slPageControlList)
{

string strPageID = ctlPage.ClientID;

string strObjectID = "";

string strObjectType = "";

string strTempObjectType = "";

string strApplySecurity = "";

int intLastPeriodIndexPosition = 0;

foreach (Control ctrl in ctlPage.Controls)

{

strObjectID = ctrl.ClientID.ToString();

//check if securable

try

{

strApplySecurity =
((WebControl)(ctrl)).Attributes["applysecurity"].ToString();

}

catch

{

strApplySecurity = "False";

}

if (strApplySecurity == "True")

{

strTempObjectType = ctrl.GetType().ToString();

intLastPeriodIndexPosition = strTempObjectType.LastIndexOf(".") + 1;

strObjectType =
strTempObjectType.Substring(intLastPeriodIndexPosi tion,
strTempObjectType.Length - intLastPeriodIndexPosition);

r_slPageControlList.Add(strObjectID, strObjectType);

}

else

{

if (ctrl.Controls.Count > 0)

{

PageFieldDetector(ctrl, ref r_slPageControlList);

}

}

}

return r_slPageControlList;

}

************************************************** *****
A regular html control like this has the attribute collection:
<asp:Label ID="lblHeader" applysecurity="False" runat="server"
Text="Page
Header No security is to be applied to this object"></asp:Label>
However, My custom textbox does not diaplay any attributes at all

<aepc:aeptextbox id="AEPTextBox1" runat="server"
applysecurity="True"></aepc:aeptextbox>

This is my code for the custom textbox:

using System;

using System.Collections.Generic;

using System.Text;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.ComponentModel;

using System.Drawing;

using System.Diagnostics;

using System.Design;

[assembly: TagPrefix("AEPortal", "AEPC")]

namespace AEPortal

{

[ToolboxData("<{0}:AEPTextBox runat=server
applysecurity=False></{0}:AEPTextBox>")]

[ToolboxBitmap(typeof(TextBox))]

[DesignerAttribute("System.Web.UI.WebControls.TextB ox")]

public class AEPTextBox : System.Web.UI.WebControls.TextBox

{

[Bindable(true),

Description("Accruent Enterprise Portal Custom TextBox"),

Category("Misc"),

DefaultValue("False")]

private bool blnApplySecurity = false;

public bool ApplySecurity

{

get

{

return blnApplySecurity;

}

set

{

blnApplySecurity = value;

}

}

protected override void Render(HtmlTextWriter w)

{

w.AddAttribute("applysecurity", blnApplySecurity.ToString());

base.Render(w);

}

}

}


Nov 19 '05 #2

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

1 post views Thread by Robert Neville | last post: by
3 posts views Thread by Edward Diener | last post: by
19 posts views Thread by Jamey Shuemaker | last post: by
2 posts views Thread by J R M | last post: by
2 posts views Thread by prabhupr | last post: by
1 post views Thread by Korara | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.