Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / Data / System / Data / RelatedView.cs / 1 / RelatedView.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
// [....]
//-----------------------------------------------------------------------------
namespace System.Data {
using System;
using System.Diagnostics;
internal sealed class RelatedView : DataView, IFilter {
private readonly DataKey key;
private object[] values;
public RelatedView(DataColumn[] columns, object[] values) : base(columns[0].Table, false) {
if (values == null) {
throw ExceptionBuilder.ArgumentNull("values");
}
this.key = new DataKey(columns, true);
this.values = values;
Debug.Assert (this.Table == key.Table, "Key.Table Must be equal to Current Table");
base.ResetRowViewCache();
}
public bool Invoke(DataRow row, DataRowVersion version) {
object[] keyValues = row.GetKeyValues(key, version);
#if false
for (int i = 0; i < keyValues.Length; i++) {
Debug.WriteLine("keyvalues[" + (i).ToString() + "] = " + Convert.ToString(keyValues[i]));
}
for (int i = 0; i < values.Length; i++) {
Debug.WriteLine("values[" + (i).ToString() + "] = " + Convert.ToString(values[i]));
}
#endif
bool allow = true;
if (keyValues.Length != values.Length) {
allow = false;
}
else {
for (int i = 0; i < keyValues.Length; i++) {
if (!keyValues[i].Equals(values[i])) {
allow = false;
break;
}
}
}
IFilter baseFilter = base.GetFilter();
if (baseFilter != null)
allow &= baseFilter.Invoke(row, version);
return allow;
}
internal override IFilter GetFilter() {
return this;
}
// move to OnModeChanged
public override DataRowView AddNew() {
DataRowView addNewRowView = base.AddNew();
addNewRowView.Row.SetKeyValues(key, values);
return addNewRowView;
}
internal override void SetIndex(string newSort, DataViewRowState newRowStates, IFilter newRowFilter) {
SetIndex2(newSort, newRowStates, newRowFilter, false);
Reset();
}
public override bool Equals( DataView dv) {
if (dv is RelatedView == false)
return false;
if (!base.Equals(dv))
return false;
return (CompareArray(this.key.ColumnsReference, ((RelatedView)dv).key.ColumnsReference) ||CompareArray(this.values, ((RelatedView)dv).values));
}
private bool CompareArray(object[] value1, object[] value2) {
if (value1.Length != value2.Length)
return false;
for(int i = 0; i < value1.Length; i++) {
if (value1[i] != value2[i])
return false;
}
return true;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
// [....]
//-----------------------------------------------------------------------------
namespace System.Data {
using System;
using System.Diagnostics;
internal sealed class RelatedView : DataView, IFilter {
private readonly DataKey key;
private object[] values;
public RelatedView(DataColumn[] columns, object[] values) : base(columns[0].Table, false) {
if (values == null) {
throw ExceptionBuilder.ArgumentNull("values");
}
this.key = new DataKey(columns, true);
this.values = values;
Debug.Assert (this.Table == key.Table, "Key.Table Must be equal to Current Table");
base.ResetRowViewCache();
}
public bool Invoke(DataRow row, DataRowVersion version) {
object[] keyValues = row.GetKeyValues(key, version);
#if false
for (int i = 0; i < keyValues.Length; i++) {
Debug.WriteLine("keyvalues[" + (i).ToString() + "] = " + Convert.ToString(keyValues[i]));
}
for (int i = 0; i < values.Length; i++) {
Debug.WriteLine("values[" + (i).ToString() + "] = " + Convert.ToString(values[i]));
}
#endif
bool allow = true;
if (keyValues.Length != values.Length) {
allow = false;
}
else {
for (int i = 0; i < keyValues.Length; i++) {
if (!keyValues[i].Equals(values[i])) {
allow = false;
break;
}
}
}
IFilter baseFilter = base.GetFilter();
if (baseFilter != null)
allow &= baseFilter.Invoke(row, version);
return allow;
}
internal override IFilter GetFilter() {
return this;
}
// move to OnModeChanged
public override DataRowView AddNew() {
DataRowView addNewRowView = base.AddNew();
addNewRowView.Row.SetKeyValues(key, values);
return addNewRowView;
}
internal override void SetIndex(string newSort, DataViewRowState newRowStates, IFilter newRowFilter) {
SetIndex2(newSort, newRowStates, newRowFilter, false);
Reset();
}
public override bool Equals( DataView dv) {
if (dv is RelatedView == false)
return false;
if (!base.Equals(dv))
return false;
return (CompareArray(this.key.ColumnsReference, ((RelatedView)dv).key.ColumnsReference) ||CompareArray(this.values, ((RelatedView)dv).values));
}
private bool CompareArray(object[] value1, object[] value2) {
if (value1.Length != value2.Length)
return false;
for(int i = 0; i < value1.Length; i++) {
if (value1[i] != value2[i])
return false;
}
return true;
}
}
}
// 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
- BamlLocalizer.cs
- EntityDataSourceContextDisposingEventArgs.cs
- SourceSwitch.cs
- WebControl.cs
- ComEventsInfo.cs
- WeakReference.cs
- DomainConstraint.cs
- MimeBasePart.cs
- FrameworkContextData.cs
- __Filters.cs
- PersonalizationProviderCollection.cs
- ColorPalette.cs
- ServicePointManagerElement.cs
- Pens.cs
- Table.cs
- AssemblyResolver.cs
- OutputScope.cs
- ChtmlTextWriter.cs
- SortQuery.cs
- ArgumentsParser.cs
- ExtenderProvidedPropertyAttribute.cs
- InvalidateEvent.cs
- CheckBoxField.cs
- RenderTargetBitmap.cs
- ButtonPopupAdapter.cs
- HtmlInputRadioButton.cs
- OperationParameterInfoCollection.cs
- DataGridViewRowErrorTextNeededEventArgs.cs
- TextElementEditingBehaviorAttribute.cs
- MenuStrip.cs
- SafeThreadHandle.cs
- ToolStripButton.cs
- UnknownBitmapEncoder.cs
- ProxyHelper.cs
- AdjustableArrowCap.cs
- SymbolResolver.cs
- BuildProviderAppliesToAttribute.cs
- WindowsProgressbar.cs
- DesignerDataStoredProcedure.cs
- SQLInt64Storage.cs
- ContentElement.cs
- WebPartEventArgs.cs
- SafeEventLogWriteHandle.cs
- TemplatedAdorner.cs
- UpdateManifestForBrowserApplication.cs
- MissingManifestResourceException.cs
- Vector3DConverter.cs
- ObjectSet.cs
- SymbolEqualComparer.cs
- WebPartConnectionsConnectVerb.cs
- FixedElement.cs
- EventSinkActivityDesigner.cs
- RSACryptoServiceProvider.cs
- EntityConnectionStringBuilderItem.cs
- LocalServiceSecuritySettingsElement.cs
- UTF8Encoding.cs
- TaskHelper.cs
- MethodSignatureGenerator.cs
- DesignerOptionService.cs
- AddInBase.cs
- Paragraph.cs
- StandardCommands.cs
- Label.cs
- EvidenceTypeDescriptor.cs
- ContextBase.cs
- DataGridLinkButton.cs
- DiscoveryProxy.cs
- TableLayoutSettings.cs
- ToolBarTray.cs
- GenericRootAutomationPeer.cs
- safesecurityhelperavalon.cs
- PolyBezierSegment.cs
- SystemWebCachingSectionGroup.cs
- GeneralTransform2DTo3DTo2D.cs
- TemplatedMailWebEventProvider.cs
- SingleObjectCollection.cs
- AnnouncementEventArgs.cs
- ObjectViewEntityCollectionData.cs
- Mutex.cs
- MenuItemStyleCollection.cs
- EntityParameter.cs
- ContentPathSegment.cs
- GroupPartitionExpr.cs
- IndexedEnumerable.cs
- MappingModelBuildProvider.cs
- BitConverter.cs
- invalidudtexception.cs
- LicenseContext.cs
- XpsFilter.cs
- ContentPlaceHolder.cs
- Roles.cs
- TypedRowGenerator.cs
- DataGridViewRowCancelEventArgs.cs
- InternalSafeNativeMethods.cs
- HMAC.cs
- MemberCollection.cs
- Int32Converter.cs
- VisualStyleRenderer.cs
- StaticExtensionConverter.cs
- ExeConfigurationFileMap.cs