ObjectListField.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / MIT / System / Web / UI / MobileControls / ObjectListField.cs / 1305376 / ObjectListField.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

using System; 
using System.Collections; 
using System.ComponentModel;
using System.Diagnostics; 
using System.Globalization;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; 
using System.Web.UI.HtmlControls;
using System.Security.Permissions; 
 
namespace System.Web.UI.MobileControls
{ 
    /*
     * Object List Field class.
     *
     * Copyright (c) 2000 Microsoft Corporation 
     */
 
    ///  
    [
        PersistName("Field") 
    ]
    [AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
    [Obsolete("The System.Web.Mobile.dll assembly has been deprecated and should no longer be used. For information about how to develop ASP.NET mobile applications, see http://go.microsoft.com/fwlink/?LinkId=157231.")]
    public sealed class ObjectListField : IStateManager 
    {
        private StateBag _stateBag = new StateBag(); 
        private bool _marked; 
        private PropertyDescriptor _dataFieldDescriptor;
        private ObjectList _owner; 
        private bool _selfReference = false;

        /// 
        [ 
            DefaultValue("")
        ] 
        public String Name 
        {
            get 
            {
                String s = (String)ViewState["Name"];
                return (s == null) ? String.Empty : s;
            } 
            set
            { 
                ViewState["Name"] = value; 
            }
        } 

        /// 
        [
            DefaultValue("") 
        ]
        public String DataField 
        { 
            get
            { 
                String s = (String)ViewState["DataField"];
                return (s == null) ? String.Empty : s;
            }
            set 
            {
                ViewState["DataField"] = value; 
                NotifyOwnerChange(); 
            }
        } 

        /// 
        [
            DefaultValue("") 
        ]
        public String DataFormatString 
        { 
            get
            { 
                String s = (String)ViewState["DataFormatString"];
                return (s == null) ? String.Empty : s;
            }
            set 
            {
                ViewState["DataFormatString"] = value; 
                NotifyOwnerChange(); 
            }
        } 

        /// 
        [
            DefaultValue("") 
        ]
        public String Title 
        { 
            get
            { 
                String s = (String)ViewState["Title"];
                return (s == null) ? String.Empty : s;
            }
            set 
            {
                ViewState["Title"] = value; 
            } 
        }
 
        /// 
        [
            DefaultValue(true)
        ] 
        public bool Visible
        { 
            get 
            {
                Object b = ViewState["Visible"]; 
                return (b == null) ? true : (bool)b;
            }
            set
            { 
                ViewState["Visible"] = value;
            } 
        } 

        internal bool SelfReference 
        {
            get
            {
                return _selfReference; 
            }
            set 
            { 
                _selfReference = value;
            } 
        }

        internal String UniqueID
        { 
            get
            { 
                Object o = ViewState["Name"]; 
                if (o != null)
                { 
                    return (String)o;
                }
                return (String)ViewState["DataField"];
            } 
        }
 
        private void NotifyOwnerChange() 
        {
            // Only called if databinding behavior of the field changes. 
            if (_owner != null)
            {
                _owner.OnFieldChanged(false);   // fieldAddedOrRemoved = false;
            } 
        }
 
        private StateBag ViewState 
        {
            get 
            {
                return _stateBag;
            }
        } 

        internal void SetOwner(ObjectList owner) { 
            _owner = owner; 
        }
 
        /// 
        public void DataBindItem(int fieldIndex, ObjectListItem item)
        {
            Object dataItem = item.DataItem; 
            if (dataItem == null)
            { 
                return; 
            }
 
            if (!SelfReference)
            {
                String dataField = DataField;
                if (dataField.Length == 0) 
                {
                    return; 
                } 

                _dataFieldDescriptor = TypeDescriptor.GetProperties(dataItem).Find(dataField, true); 
                if (_dataFieldDescriptor == null && !_owner.MobilePage.DesignMode)
                {
                    throw new Exception(
                        SR.GetString(SR.ObjectListField_DataFieldNotFound, dataField)); 
                }
            } 
 
            Object data;
            if (_dataFieldDescriptor != null) 
            {
                data = _dataFieldDescriptor.GetValue(dataItem);
            }
            // Use fake databound text if the datasource is not accessible at designtime. 
            else if (_owner.MobilePage.DesignMode)
            { 
                data = SR.GetString(SR.ObjectListField_DataBoundText); 
            }
            else 
            {
                Debug.Assert(SelfReference, "Shouldn't get this far if !SelfReference");
                data = dataItem;
            } 

            String dataText; 
            if ((data != null) && (data != System.DBNull.Value)) 
            {
                String dataFormatString = DataFormatString; 
                if (dataFormatString.Length > 0)
                {
                    dataText = String.Format(CultureInfo.InvariantCulture, dataFormatString, data);
                } 
                else
                { 
                    dataText = data.ToString(); 
                }
            } 
            else
            {
                dataText = String.Empty;
            } 
            item[fieldIndex] = dataText;
        } 
 
        /////////////////////////////////////////////////////////////////////////
        //  STATE MANAGEMENT 
        /////////////////////////////////////////////////////////////////////////

        /// 
        ///  
        bool IStateManager.IsTrackingViewState
        { 
            get 
            {
                return _marked; 
            }
        }

        ///  
        /// 
        void IStateManager.TrackViewState() 
        { 
            _marked = true;
            ((IStateManager)ViewState).TrackViewState(); 
        }

        /// 
        ///  
        void IStateManager.LoadViewState(Object state)
        { 
            if (state != null) 
            {
                ((IStateManager)ViewState).LoadViewState(state); 
            }
        }

        ///  
        /// 
        Object IStateManager.SaveViewState() 
        { 
            return ((IStateManager)ViewState).SaveViewState();
        } 

        internal void SetDirty()
        {
            // VSWHIDBEY 236464. The bag needs to be set dirty not individual items. 
            _stateBag.SetDirty(true);
/* 
            foreach (StateItem item in _stateBag.Values) 
            {
                item.IsDirty = true; 
            }
*/
        }
 
        internal void ClearViewState()
        { 
            ViewState.Clear(); 
        }
    } 

}


// File provided for Reference Use Only by Microsoft Corporation (c) 2007.


                        

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