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
- Helpers.cs
- XmlSchemaSequence.cs
- RunInstallerAttribute.cs
- Parser.cs
- ForeignKeyConstraint.cs
- DataGridViewIntLinkedList.cs
- BmpBitmapEncoder.cs
- ObjectContext.cs
- UDPClient.cs
- DataGridRowDetailsEventArgs.cs
- ListViewGroupItemCollection.cs
- EmptyControlCollection.cs
- RelationshipEndCollection.cs
- ResizeGrip.cs
- AspNetHostingPermission.cs
- BindingExpression.cs
- ContainerControl.cs
- Span.cs
- OuterGlowBitmapEffect.cs
- Range.cs
- AmbientLight.cs
- XmlWellformedWriter.cs
- BamlMapTable.cs
- ButtonRenderer.cs
- StringStorage.cs
- KeyedCollection.cs
- SpellerStatusTable.cs
- DoubleAnimationUsingKeyFrames.cs
- SHA384Managed.cs
- HostingEnvironmentSection.cs
- XmlDataCollection.cs
- PassportPrincipal.cs
- EntityEntry.cs
- ValueTypePropertyReference.cs
- SafeNativeMemoryHandle.cs
- StartUpEventArgs.cs
- ConcurrentQueue.cs
- KnownAssembliesSet.cs
- TypeDescriptionProviderAttribute.cs
- SecurityPolicySection.cs
- TreeView.cs
- PropertyValueChangedEvent.cs
- DataGridViewCellParsingEventArgs.cs
- IntellisenseTextBox.designer.cs
- IgnoreFileBuildProvider.cs
- TraceContextRecord.cs
- DesignerAttribute.cs
- PackagePartCollection.cs
- CryptoConfig.cs
- SafeNativeMethodsMilCoreApi.cs
- IMembershipProvider.cs
- WebServiceData.cs
- StandardBindingCollectionElement.cs
- MultiBindingExpression.cs
- ExtensionFile.cs
- ProtocolsSection.cs
- AssertFilter.cs
- ListViewSelectEventArgs.cs
- Exceptions.cs
- NativeObjectSecurity.cs
- Point3DAnimation.cs
- EntityDataSourceValidationException.cs
- HandleRef.cs
- DataBinding.cs
- EventMappingSettings.cs
- Attributes.cs
- EventProviderBase.cs
- __Filters.cs
- StreamReader.cs
- ArrayConverter.cs
- XsltFunctions.cs
- MessageSecurityException.cs
- DataBindingList.cs
- DiscoveryMessageSequence11.cs
- MailMessage.cs
- XDRSchema.cs
- RelationshipType.cs
- AppDomainFactory.cs
- EntityDataSourceWrapper.cs
- Relationship.cs
- IriParsingElement.cs
- SecurityTokenInclusionMode.cs
- TdsParser.cs
- BindUriHelper.cs
- StyleCollection.cs
- TableHeaderCell.cs
- DataGridViewMethods.cs
- XPathScanner.cs
- VerticalAlignConverter.cs
- Set.cs
- MergeFilterQuery.cs
- DbConnectionPoolGroupProviderInfo.cs
- RuleSet.cs
- ConstraintEnumerator.cs
- TypeElement.cs
- DbCommandTree.cs
- ResourceDisplayNameAttribute.cs
- SignerInfo.cs
- InstanceCompleteException.cs
- GroupByExpressionRewriter.cs