Solved

Problem in HtmlTextWriterAttribute.Value

Posted on 2009-05-13
7
303 Views
Last Modified: 2013-11-08
Hi

I have created a class inherited from TextBox class

In that class I have override the Render function

see code

Now I am using this control dll in some other project

When I set the property MTBText I am not able to see the value on the webpage

Am I missing something
protected override void Render(HtmlTextWriter output)
        {
            output.RenderBeginTag(HtmlTextWriterTag.Input);
            output.AddAttribute(HtmlTextWriterAttribute.Type, "text");
            output.AddAttribute(HtmlTextWriterAttribute.Name, this.ClientID);
            output.AddAttribute(HtmlTextWriterAttribute.Value, MTBText);            
            output.RenderEndTag();
}

Open in new window

0
Comment
Question by:KaranGupta
  • 4
  • 3
7 Comments
 
LVL 12

Expert Comment

by:GuitarRich
ID: 24373121
can you post your MTBText property definition?
0
 

Author Comment

by:KaranGupta
ID: 24373131
here we go
 protected override void Render(HtmlTextWriter output)
        {
            output.RenderBeginTag(HtmlTextWriterTag.Input);
            output.AddAttribute(HtmlTextWriterAttribute.Type, "text");
            output.AddAttribute(HtmlTextWriterAttribute.Id, MTBID);
            output.AddAttribute(HtmlTextWriterAttribute.Value, MTBText);
            output.RenderEndTag();
           // base.Render(output);           
           
 
        }
 
 
        /// <summary>
        /// Text
        /// </summary>
        public string MTBText
        {
            get;
            set;
        }

Open in new window

0
 
LVL 12

Expert Comment

by:GuitarRich
ID: 24373154
in the MTBText property are you using the viewstate? kind of like this:
		[Bindable(true)]
		[Category("Appearance")]
		[DefaultValue("")]
		[Localizable(true)]
		public string Text
		{
			get
			{
				String s = (String)ViewState["Text"];
				return ((s == null) ? "[" + this.ID + "]" : s);
			}
 
			set
			{
				ViewState["Text"] = value;
			}
		}

Open in new window

0
Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

 

Author Comment

by:KaranGupta
ID: 24373181
This definition of Text was given earlier when I created the project

But I have commented the definition
0
 
LVL 12

Expert Comment

by:GuitarRich
ID: 24373218
yes - but does your MTBText property work in the same way so that the value is stored in the viewstate properly and can be rendered? If you put a break point in your rendering code does the MTBText property have a value?
0
 

Author Comment

by:KaranGupta
ID: 24373278
Hi

I am attaching the whole code

Please look into it

And this is how I am calling this control

<FTB:MultiPurposeTextControl MTBErrorMessageControlType="VALIDATIONSUMMARY" MTBText="karan" MTBID="test" runat="server"></FTB:MultiPurposeTextControl>
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
 
namespace MultiPurposeTextBox
{
    [DefaultProperty("Text")]
    [ToolboxData("<{0}:ServerControl1 runat=server></{0}:ServerControl1>")]
    public class MultiPurposeTextControl : WebControl
    {
        
        protected override void Render(HtmlTextWriter output)
        {
            output.RenderBeginTag(HtmlTextWriterTag.Input);
            output.AddAttribute(HtmlTextWriterAttribute.Type, "text");
            output.AddAttribute(HtmlTextWriterAttribute.Id, MTBID);
            output.AddAttribute(HtmlTextWriterAttribute.Value, MTBText);
            output.RenderEndTag();
           // base.Render(output);           
           
 
        }
 
 
        [Bindable(true)]
        [Category("Appearance")]
        [DefaultValue("")]
        [Localizable(true)]
        public string MTBText
        {
            get
            {
                String s = (String)ViewState["Text"];
                return ((s == null) ? "[" + this.ID + "]" : s);
            }
 
            set
            {
                ViewState["Text"] = value;
            }
        }
      
        /// <summary>
        /// ID
        /// </summary>
        public string MTBID
        {
            get;
            set;
        }
 
        /// <summary>
        ///   Property to specify whether you want to 
        ///   give error message to a label or want to
        ///   integrate it with validation summary
        /// </summary>       
        public MTBErrorMessageControl MTBErrorMessageControlType
        {
            get;
            set;
        }
 
 
        /// <summary>
        ///   Property to specify what sort of validation
        ///   you want 
        /// </summary> 
        public MTBValidation MTBValidationType
        {
            get;
            set;
        }
 
        /// <summary>
        /// Enums for different Types of validation
        /// </summary>
        public enum MTBValidation
        {
            INTEGER,
            ALPHABET
        }
 
        /// <summary>
        /// Enums for different Types of controls
        /// on which you want to show error message
        /// </summary>
        public enum MTBErrorMessageControl
        {
            LABEL,
            VALIDATIONSUMMARY
        }
 
    }
}

Open in new window

0
 
LVL 12

Accepted Solution

by:
GuitarRich earned 500 total points
ID: 24373382
ok - this is what I have got - is this closer. I realised the mistake with the MTBText, you need to add the attributes before the RenderBeginTag call - sorry got it the wrong way wrond earlier.
		/// <summary>
		/// Enums for different Types of controls
		/// on which you want to show error message
		/// </summary>
		public enum MTBErrorMessageControl
		{
			LABEL,
			VALIDATIONSUMMARY
		}
 
 
		[Bindable(true)]
		[Category("Appearance")]
		[DefaultValue("")]
		[Localizable(true)]
		public string MTBText
		{
			get
			{
				String s = (String)ViewState["MTBText"];
				return ((s == null) ? "[" + this.ID + "]" : s);
			}
 
			set
			{
				ViewState["MTBText"] = value;
			}
		}
 
		/// <summary>
		///   Property to specify whether you want to 
		///   give error message to a label or want to
		///   integrate it with validation summary
		/// </summary>       
		public MTBErrorMessageControl MTBErrorMessageControlType
		{
			get
			{
				if (ViewState["MTBErrorMessageControlType"] == null)
				{
					return MTBErrorMessageControl.LABEL;
				}
				else
				{
					MTBErrorMessageControl s = (MTBErrorMessageControl)ViewState["MTBErrorMessageControlType"];
					return s;
				}
			}
 
			set
			{
				ViewState["MTBErrorMessageControlType"] = value;
			}
		}
 
 
		protected override void Render(HtmlTextWriter writer)
		{
			//base.Render(writer);
			writer.RenderBeginTag(HtmlTextWriterTag.Span);
 
			writer.AddAttribute(HtmlTextWriterAttribute.Type, "text");
			writer.AddAttribute(HtmlTextWriterAttribute.Name, this.ClientID);
			writer.AddAttribute(HtmlTextWriterAttribute.Value, this.Text);
			writer.RenderBeginTag(HtmlTextWriterTag.Input);
 
			writer.RenderEndTag();
 
			if (this.MTBText != string.Empty && this.MTBErrorMessageControlType == MTBErrorMessageControl.LABEL)
			{
				writer.AddAttribute(HtmlTextWriterAttribute.For, this.ClientID);
				writer.RenderBeginTag(HtmlTextWriterTag.Label);
 
				writer.Write(this.MTBText);
				writer.RenderEndTag();
			}
 
			writer.RenderEndTag(); // span
		}

Open in new window

0

Featured Post

Webinar: Aligning, Automating, Winning

Join Dan Russo, Senior Manager of Operations Intelligence, for an in-depth discussion on how Dealertrack, leading provider of integrated digital solutions for the automotive industry, transformed their DevOps processes to increase collaboration and move with greater velocity.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Problem Hi all,    While many today have fast Internet connection, there are many still who do not, or are connecting through devices with a slower connect, so light web pages and fast load times are still popular.    If your ASP.NET page …
Entity Framework is a powerful tool to help you interact with the DataBase but still doesn't help much when we have a Stored Procedure that returns more than one resultset. The solution takes some of out-of-the-box thinking; read on!
This video shows how to quickly and easily add an email signature for all users on Exchange 2016. The resulting signature is applied on a server level by Exchange Online. The email signature template has been downloaded from: www.mail-signatures…
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

839 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question