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
- ScaleTransform.cs
- ValueUtilsSmi.cs
- BooleanFunctions.cs
- NegatedCellConstant.cs
- DataSourceControl.cs
- Lock.cs
- HttpProfileBase.cs
- NameScope.cs
- GetPolicyDetailsRequest.cs
- TextBox.cs
- ConnectionPoolManager.cs
- log.cs
- MessageQueuePermissionEntry.cs
- Int16Converter.cs
- ResourceDescriptionAttribute.cs
- SID.cs
- AttachedAnnotationChangedEventArgs.cs
- ListViewUpdatedEventArgs.cs
- XmlSchemaComplexContentRestriction.cs
- WebBrowser.cs
- MsdtcWrapper.cs
- RichTextBoxContextMenu.cs
- TextRangeSerialization.cs
- ProcessModelSection.cs
- ProfileSection.cs
- DefaultValueAttribute.cs
- Tool.cs
- BitHelper.cs
- IOException.cs
- StringDictionaryWithComparer.cs
- ServiceHandle.cs
- SerializationObjectManager.cs
- Context.cs
- PenThreadWorker.cs
- CommonRemoteMemoryBlock.cs
- DocumentXmlWriter.cs
- ListBox.cs
- Propagator.JoinPropagator.cs
- EmptyEnumerator.cs
- Directory.cs
- TdsEnums.cs
- MessageSmuggler.cs
- SpeechDetectedEventArgs.cs
- DbSourceParameterCollection.cs
- ClientApiGenerator.cs
- SoapFault.cs
- WebServiceMethodData.cs
- XmlQualifiedNameTest.cs
- ToolStripProgressBar.cs
- SetterTriggerConditionValueConverter.cs
- BuildProviderCollection.cs
- WebControlToolBoxItem.cs
- DataService.cs
- NullableIntSumAggregationOperator.cs
- TargetParameterCountException.cs
- FileNotFoundException.cs
- CodeDelegateInvokeExpression.cs
- InputReport.cs
- LocatorPart.cs
- ReadOnlyDictionary.cs
- WindowsSpinner.cs
- InkPresenterAutomationPeer.cs
- RectAnimationUsingKeyFrames.cs
- AudioFormatConverter.cs
- DockingAttribute.cs
- MessageLoggingFilterTraceRecord.cs
- EntityProxyTypeInfo.cs
- MarginsConverter.cs
- NetPeerTcpBindingCollectionElement.cs
- PageContentCollection.cs
- WindowsScroll.cs
- ProtectedUri.cs
- EndpointAddressProcessor.cs
- NetworkCredential.cs
- TransportChannelFactory.cs
- EntityDataSourceView.cs
- PropertyValueEditor.cs
- DesignDataSource.cs
- PageAsyncTask.cs
- TreeNodeStyle.cs
- InternalsVisibleToAttribute.cs
- AttributeInfo.cs
- EntityWithChangeTrackerStrategy.cs
- WinFormsUtils.cs
- _Win32.cs
- Tuple.cs
- SystemResourceHost.cs
- ListMarkerLine.cs
- XmlSerializationWriter.cs
- _CommandStream.cs
- BitmapEffectDrawing.cs
- TitleStyle.cs
- InvalidOleVariantTypeException.cs
- TemplatedMailWebEventProvider.cs
- Rect3DValueSerializer.cs
- TextBoxLine.cs
- DataShape.cs
- UrlSyndicationContent.cs
- Int16Animation.cs
- RegexStringValidatorAttribute.cs