Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / xsp / System / DynamicData / DynamicData / MetaChildrenColumn.cs / 1305376 / MetaChildrenColumn.cs
using System.Security.Permissions;
using System.Collections.Generic;
using System.Diagnostics;
using System.Web.DynamicData.ModelProviders;
using System.Collections;
using System.Web.Routing;
namespace System.Web.DynamicData {
///
/// A special column representing 1-many relationships
///
public class MetaChildrenColumn : MetaColumn, IMetaChildrenColumn {
public MetaChildrenColumn(MetaTable table, ColumnProvider entityMember)
: base(table, entityMember) {
}
///
/// Perform initialization logic for this column
///
internal protected override void Initialize() {
base.Initialize();
AssociationProvider a = this.Provider.Association;
ChildTable = Model.GetTable(a.ToTable.Name, Table.DataContextType);
if (a.ToColumn != null) {
ColumnInOtherTable = ChildTable.GetColumn(a.ToColumn.Name);
}
}
///
/// Returns whether this entity set column is in a Many To Many relationship
///
public bool IsManyToMany {
get {
return Provider.Association != null &&
Provider.Association.Direction == AssociationDirection.ManyToMany;
}
}
///
/// The child table (e.g. Products in Categories<-Products)
///
public MetaTable ChildTable { get; private set; }
///
/// A pointer to the MetaColumn in the other table
///
public MetaColumn ColumnInOtherTable { get; private set; }
///
/// Override disabling sorting
///
internal override string SortExpressionInternal {
get {
// children columns are not sortable
return String.Empty;
}
}
/*protected*/ internal override bool ScaffoldNoCache {
get {
// always display 1-many associations
return true;
}
}
///
/// Shortcut for getting the path to the list action for all entities in the child table that have the given row as a parent.
///
///
///
public string GetChildrenListPath(object row) {
return GetChildrenPath(PageAction.List, row);
}
public string GetChildrenPath(string action, object row) {
// If there is no row, we can't get a path
if (row == null)
return String.Empty;
return ChildTable.GetActionPath(action, GetRouteValues(row));
}
public string GetChildrenPath(string action, object row, string path) {
// If there is no row, we can't get a path
if (row == null)
return String.Empty;
if (String.IsNullOrEmpty(path)) {
return GetChildrenPath(action, row);
}
// Build a query string param with our primary key
RouteValueDictionary routeValues = GetRouteValues(row);
// Add it to the path
return QueryStringHandler.AddFiltersToPath(path, routeValues);
}
private RouteValueDictionary GetRouteValues(object row) {
var routeValues = new RouteValueDictionary();
IList
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XmlSchemaRedefine.cs
- ProfileBuildProvider.cs
- ConfigurationManagerHelperFactory.cs
- FilteredDataSetHelper.cs
- ReferencedCollectionType.cs
- sqlnorm.cs
- NativeCompoundFileAPIs.cs
- StartUpEventArgs.cs
- DrawTreeNodeEventArgs.cs
- TextRangeEdit.cs
- ValidationError.cs
- ExclusiveCanonicalizationTransform.cs
- WebConfigurationManager.cs
- DataGridRowDetailsEventArgs.cs
- HttpTransportSecurityElement.cs
- ProfileGroupSettings.cs
- EncryptedData.cs
- DataGridViewCellCancelEventArgs.cs
- Variant.cs
- CodeSubDirectory.cs
- Simplifier.cs
- HttpException.cs
- MemberDescriptor.cs
- CalculatedColumn.cs
- HttpCapabilitiesBase.cs
- AdPostCacheSubstitution.cs
- Int32RectValueSerializer.cs
- NotifyIcon.cs
- KeyConverter.cs
- ThicknessAnimationBase.cs
- DataDocumentXPathNavigator.cs
- SqlDataAdapter.cs
- ItemAutomationPeer.cs
- UriTemplateLiteralQueryValue.cs
- StrongNameUtility.cs
- MarginCollapsingState.cs
- SplitContainer.cs
- SmtpSection.cs
- SoapReflectionImporter.cs
- DelayedRegex.cs
- DiscoveryVersion.cs
- ArglessEventHandlerProxy.cs
- Point3DKeyFrameCollection.cs
- StreamedFramingRequestChannel.cs
- InkCanvasAutomationPeer.cs
- SqlXmlStorage.cs
- GridViewDeleteEventArgs.cs
- FormViewPageEventArgs.cs
- CreatingCookieEventArgs.cs
- StringBuilder.cs
- Transform3DGroup.cs
- QilPatternVisitor.cs
- Hashtable.cs
- Suspend.cs
- BuilderPropertyEntry.cs
- CookieProtection.cs
- EntityContainerRelationshipSetEnd.cs
- MaskedTextProvider.cs
- ResourceWriter.cs
- EditorPartCollection.cs
- VisualStyleRenderer.cs
- BufferedStream.cs
- QilInvoke.cs
- SpAudioStreamWrapper.cs
- DataViewManager.cs
- FormViewRow.cs
- EarlyBoundInfo.cs
- COAUTHINFO.cs
- SizeLimitedCache.cs
- ShapeTypeface.cs
- PolicyVersionConverter.cs
- XmlQueryOutput.cs
- HttpPostProtocolImporter.cs
- PrimitiveCodeDomSerializer.cs
- Bitmap.cs
- KeyProperty.cs
- Range.cs
- InvalidCastException.cs
- WebConfigurationHost.cs
- Int32CAMarshaler.cs
- BitmapScalingModeValidation.cs
- ResourceExpressionBuilder.cs
- HintTextConverter.cs
- IntSecurity.cs
- ButtonChrome.cs
- SchemaObjectWriter.cs
- DrawItemEvent.cs
- SplitterEvent.cs
- XmlQueryRuntime.cs
- PersonalizationProvider.cs
- ObjectDataProvider.cs
- MinMaxParagraphWidth.cs
- TimelineClockCollection.cs
- SchemaName.cs
- XmlAnyAttributeAttribute.cs
- MultiByteCodec.cs
- DbProviderSpecificTypePropertyAttribute.cs
- WSFederationHttpSecurity.cs
- TreeIterators.cs
- RSAPKCS1KeyExchangeFormatter.cs