Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / xsp / System / Web / UI / WebControls / DataKey.cs / 1 / DataKey.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI.WebControls {
using System;
using System.Collections;
using System.Collections.Specialized;
using System.Security.Permissions;
///
///
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public class DataKey : IStateManager {
private IOrderedDictionary _keyTable;
private bool _isTracking;
private string[] _keyNames;
public DataKey(IOrderedDictionary keyTable) {
_keyTable = keyTable;
}
public DataKey(IOrderedDictionary keyTable, string[] keyNames) : this(keyTable) {
_keyNames = keyNames;
}
///
/// Inheritable overridable implementation of IsTrackingViewState
///
protected virtual bool IsTrackingViewState {
get {
return _isTracking;
}
}
public virtual object this[int index] {
get {
return _keyTable[index];
}
}
public virtual object this[string name] {
get {
return _keyTable[name];
}
}
public virtual object Value {
get {
if (_keyTable.Count > 0) {
return _keyTable[0];
}
return null;
}
}
public virtual IOrderedDictionary Values {
get {
if (_keyTable is OrderedDictionary) {
return ((OrderedDictionary)_keyTable).AsReadOnly();
}
// don't return the actual table because we don't want the user to mess with it.
if (_keyTable is ICloneable) {
return (IOrderedDictionary)((ICloneable)_keyTable).Clone();
}
OrderedDictionary table = new OrderedDictionary();
foreach (DictionaryEntry entry in _keyTable) {
table.Add(entry.Key, entry.Value);
}
return table.AsReadOnly();
}
}
///
/// Inheritable overridable implementation of LoadViewState
///
protected virtual void LoadViewState(object state) {
if (state != null) {
if (_keyNames != null) {
object [] myState = (object [])state;
// if we have key names, then we only stored values.
if (myState[0] != null) {
for (int i = 0; i < myState.Length && i < _keyNames.Length; i++) {
_keyTable.Add(_keyNames[i], myState[i]);
}
}
}
else {
if (state != null) {
ArrayList stateArrayList = state as ArrayList;
if (stateArrayList == null) {
throw new HttpException(SR.GetString(SR.ViewState_InvalidViewState));
}
OrderedDictionaryStateHelper.LoadViewState(_keyTable, stateArrayList);
}
}
}
}
///
/// Inheritable overridable implementation of SaveViewState
///
protected virtual object SaveViewState() {
int count = _keyTable.Count;
if (count > 0) {
object myState;
if (_keyNames != null) {
// if we have key names, then we only have to store values.
myState = new object[count];
for (int i = 0; i < count; i++) {
((object[])myState)[i] = _keyTable[i];
}
}
else {
myState = OrderedDictionaryStateHelper.SaveViewState(_keyTable);
}
return myState;
}
return null;
}
///
/// Inheritable overridable implementation of TrackViewState
///
protected virtual void TrackViewState() {
_isTracking = true;
}
#region IStateManager implementation
///
bool IStateManager.IsTrackingViewState {
get {
return IsTrackingViewState;
}
}
///
void IStateManager.LoadViewState(object state) {
LoadViewState(state);
}
///
object IStateManager.SaveViewState() {
return SaveViewState();
}
///
void IStateManager.TrackViewState() {
TrackViewState();
}
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI.WebControls {
using System;
using System.Collections;
using System.Collections.Specialized;
using System.Security.Permissions;
///
///
[AspNetHostingPermission(SecurityAction.LinkDemand, Level=AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand, Level=AspNetHostingPermissionLevel.Minimal)]
public class DataKey : IStateManager {
private IOrderedDictionary _keyTable;
private bool _isTracking;
private string[] _keyNames;
public DataKey(IOrderedDictionary keyTable) {
_keyTable = keyTable;
}
public DataKey(IOrderedDictionary keyTable, string[] keyNames) : this(keyTable) {
_keyNames = keyNames;
}
///
/// Inheritable overridable implementation of IsTrackingViewState
///
protected virtual bool IsTrackingViewState {
get {
return _isTracking;
}
}
public virtual object this[int index] {
get {
return _keyTable[index];
}
}
public virtual object this[string name] {
get {
return _keyTable[name];
}
}
public virtual object Value {
get {
if (_keyTable.Count > 0) {
return _keyTable[0];
}
return null;
}
}
public virtual IOrderedDictionary Values {
get {
if (_keyTable is OrderedDictionary) {
return ((OrderedDictionary)_keyTable).AsReadOnly();
}
// don't return the actual table because we don't want the user to mess with it.
if (_keyTable is ICloneable) {
return (IOrderedDictionary)((ICloneable)_keyTable).Clone();
}
OrderedDictionary table = new OrderedDictionary();
foreach (DictionaryEntry entry in _keyTable) {
table.Add(entry.Key, entry.Value);
}
return table.AsReadOnly();
}
}
///
/// Inheritable overridable implementation of LoadViewState
///
protected virtual void LoadViewState(object state) {
if (state != null) {
if (_keyNames != null) {
object [] myState = (object [])state;
// if we have key names, then we only stored values.
if (myState[0] != null) {
for (int i = 0; i < myState.Length && i < _keyNames.Length; i++) {
_keyTable.Add(_keyNames[i], myState[i]);
}
}
}
else {
if (state != null) {
ArrayList stateArrayList = state as ArrayList;
if (stateArrayList == null) {
throw new HttpException(SR.GetString(SR.ViewState_InvalidViewState));
}
OrderedDictionaryStateHelper.LoadViewState(_keyTable, stateArrayList);
}
}
}
}
///
/// Inheritable overridable implementation of SaveViewState
///
protected virtual object SaveViewState() {
int count = _keyTable.Count;
if (count > 0) {
object myState;
if (_keyNames != null) {
// if we have key names, then we only have to store values.
myState = new object[count];
for (int i = 0; i < count; i++) {
((object[])myState)[i] = _keyTable[i];
}
}
else {
myState = OrderedDictionaryStateHelper.SaveViewState(_keyTable);
}
return myState;
}
return null;
}
///
/// Inheritable overridable implementation of TrackViewState
///
protected virtual void TrackViewState() {
_isTracking = true;
}
#region IStateManager implementation
///
bool IStateManager.IsTrackingViewState {
get {
return IsTrackingViewState;
}
}
///
void IStateManager.LoadViewState(object state) {
LoadViewState(state);
}
///
object IStateManager.SaveViewState() {
return SaveViewState();
}
///
void IStateManager.TrackViewState() {
TrackViewState();
}
#endregion
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- MemberDescriptor.cs
- SequentialActivityDesigner.cs
- RuntimeIdentifierPropertyAttribute.cs
- PagesChangedEventArgs.cs
- SmiContextFactory.cs
- StsCommunicationException.cs
- HighlightVisual.cs
- ReturnType.cs
- SafeCertificateContext.cs
- VirtualizedCellInfoCollection.cs
- DataSet.cs
- CompiledRegexRunnerFactory.cs
- SqlInternalConnectionSmi.cs
- IndexedString.cs
- GridViewDeletedEventArgs.cs
- DropSource.cs
- HttpModulesInstallComponent.cs
- EntityDataSourceSelectedEventArgs.cs
- ImportCatalogPart.cs
- XmlSchemaElement.cs
- SafeFileMappingHandle.cs
- StartFileNameEditor.cs
- ShutDownListener.cs
- GridViewRowPresenter.cs
- VisualStyleInformation.cs
- KeyboardDevice.cs
- EntityClientCacheEntry.cs
- WebPartManager.cs
- EdmFunction.cs
- RootAction.cs
- QueryContinueDragEvent.cs
- ExpandableObjectConverter.cs
- PartitionerQueryOperator.cs
- AdRotator.cs
- ConfigurationSectionGroupCollection.cs
- DispatcherHookEventArgs.cs
- SqlDeflator.cs
- ThreadSafeList.cs
- DockPanel.cs
- FixedFindEngine.cs
- Trace.cs
- RoleManagerEventArgs.cs
- Int64.cs
- CopyNamespacesAction.cs
- CodeCastExpression.cs
- BorderGapMaskConverter.cs
- CompilerWrapper.cs
- SafeNativeMethods.cs
- SystemUnicastIPAddressInformation.cs
- DoWhile.cs
- CompleteWizardStep.cs
- DynamicMethod.cs
- _LoggingObject.cs
- QilParameter.cs
- ByteAnimationBase.cs
- HierarchicalDataSourceControl.cs
- OLEDB_Enum.cs
- oledbconnectionstring.cs
- FirewallWrapper.cs
- KoreanLunisolarCalendar.cs
- TextElement.cs
- BulletedListEventArgs.cs
- XmlHierarchicalDataSourceView.cs
- HashAlgorithm.cs
- ASCIIEncoding.cs
- BasicHttpMessageSecurity.cs
- StringFreezingAttribute.cs
- BindingContext.cs
- ExclusiveCanonicalizationTransform.cs
- SHA384.cs
- XmlWriter.cs
- MenuRendererClassic.cs
- DocumentViewerConstants.cs
- ExceptionCollection.cs
- ParameterToken.cs
- MetadataCache.cs
- DrawingCollection.cs
- Rect3DValueSerializer.cs
- SubMenuStyleCollectionEditor.cs
- URLString.cs
- DataGridViewDataErrorEventArgs.cs
- ObjectAnimationUsingKeyFrames.cs
- DataStreamFromComStream.cs
- BatchWriter.cs
- HttpBufferlessInputStream.cs
- EncodingStreamWrapper.cs
- TileBrush.cs
- DataTableExtensions.cs
- CellConstant.cs
- WindowsPen.cs
- LocatorBase.cs
- BooleanProjectedSlot.cs
- InvalidCastException.cs
- XmlSchemaInfo.cs
- WebMethodAttribute.cs
- ToolStripCustomTypeDescriptor.cs
- UserControl.cs
- EmbeddedMailObject.cs
- DataSetSchema.cs
- ExceptionNotification.cs