SimpleFieldTemplateFactory.cs source code in C# .NET

Source code for the .NET framework in C#



/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / DynamicData / DynamicData / SimpleFieldTemplateFactory.cs / 1305376 / SimpleFieldTemplateFactory.cs

                            namespace System.Web.DynamicData { 
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text; 
    using System.Web.UI.WebControls;
    using System.Web.Hosting; 
    // This FieldTemplateFactory is used for the simple cases where the user doesn't have
    // a FieldTemplate directory but wants to get basic validation logic. In a sense 
    // it is a smarter version of a BoundField
    internal class SimpleFieldTemplateFactory : FieldTemplateFactory {
        private static bool? _directoryExists;
        public SimpleFieldTemplateFactory()
            : this(HostingEnvironment.VirtualPathProvider) { 

        internal SimpleFieldTemplateFactory(VirtualPathProvider vpp) 
            : base(vpp) {
            VirtualPathProvider = vpp;
        internal VirtualPathProvider VirtualPathProvider {
        protected virtual bool DirectoryExists {
            get {
                if (!_directoryExists.HasValue) {
                    // This is expensive so cache it. 
                    _directoryExists = VirtualPathProvider.DirectoryExists(TemplateFolderVirtualPath);
                return _directoryExists.Value; 

        public override IFieldTemplate CreateFieldTemplate(MetaColumn column, DataBoundControlMode mode, string uiHint) {
            // Call Preprocess mode so that we do set the right mode base on the the column's attributes
            mode = PreprocessMode(column, mode); 
            bool readOnly = (mode == DataBoundControlMode.ReadOnly);
            // If the folder doesn't exist use the fallback 
            if (!DirectoryExists) { 
                return CreateFieldTemplate(readOnly, column);

            // Always see check if the base found anything first then fall back to the simple field template
            IFieldTemplate fieldTemplate = base.CreateFieldTemplate(column, mode, uiHint);
            // If there was no field template found and the user specified a uiHint then use the default behavior
            if (!String.IsNullOrEmpty(uiHint)) { 
                return fieldTemplate; 
            return fieldTemplate ?? CreateFieldTemplate(readOnly, column);

        private IFieldTemplate CreateFieldTemplate(bool readOnly, MetaColumn column) { 
            // By default we'll support checkbox fields for boolean and a textbox for
            // everything else 
            if (column.ColumnType == typeof(bool)) { 
                return SimpleFieldTemplateUserControl.CreateBooleanTemplate(readOnly);
            return SimpleFieldTemplateUserControl.CreateTextTemplate(column, readOnly);

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK