elberon5.com

Setting MaxLength for TextBoxes generated by a DetailsView

Posted by elberon5 Fri, 09 Feb 2007 17:14:00 GMT

Step 1: Create your own BoundField - you'd want to put this in a file in your App_Code folder.

namespace myNameSpace
{
    public class myBoundField : System.Web.UI.WebControls.BoundField
    {
        public int MaxLength
        {
            get
            {
                int i = 0;
                if (this.ViewState["MaxLength"] != null)
                    i = Int32.Parse(this.ViewState["MaxLength"].ToString());
                return i;
            }
            set { this.ViewState["MaxLength"] = value; }
        }

        protected override void OnDataBindField(object sender, EventArgs e)
        {
            base.OnDataBindField(sender, e);
            Control c = (Control)sender;

            if (c is TextBox)
            {
                TextBox txt = (TextBox)c;

                if (this.MaxLength > 0)
                    txt.MaxLength = this.MaxLength;
            }
        }
    }
}

Step 2: Make it so all your aspx pages can access this new user control. In web.config add:

  <system.web>
     <pages> 
	<controls>
	   <add tagPrefix="myTagPrefix" namespace="myNameSpace" assembly="App_Code" />
	</controls>
     </pages>
  </system.web>

Step : Use the custom bound field inside your detailsview on your aspx page.

  <myTagPrefix:myBoundField MaxLength="255" DataField="" 
HeaderText="" SortExpression="" />

(leave url/email »)