Ask a Question related to ASP.NET Building Controls, Design and Development.
-
Sanjay Pais #1
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);
}
}
}
Sanjay Pais Guest
-
<% =expression%> not evaluated in custom control attributes
Let's say my ASPX page codebehind has a method S() which returns a string value (of let's say a constant "string"). If I do this (hope all these... -
Designer/attributes for custom DataSource Control?
Hi, I've developed my own datasource control. When I make my datasource control be the datasource of a formview control, I would like the... -
How to access an event of a custom control??? Thank you!
Could you please post your reply? Thank you I'm trying to resolve why my custom image button control with a custom eventargs class will not fire... -
Custom TextBox with custom attributes and properties question
I have an webform that has a datarepeater on it. In that repeater I'm binding some data and I have put a textbox control in there. On the... -
Access WebControl in custom control
I cannot access a server control that is nested in a template control...like so: <dtag:PageTemplate runat="server" id="myPageTemplate">... -
Brock Allen #2
Re: Custom Control does not allow access to Attributes
Arbitrary attributes (ones where there is no property) are implemented by
the custom control implementing the IAttributeAccessor interface.
-Brock
DevelopMentor
[url]http://staff.develop.com/ballen[/url]
> 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);
>
> }
>
> }
>
> }
>
Brock Allen Guest



Reply With Quote

