Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Data / System / Data / RelatedView.cs / 1305376 / 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
- EventSourceCreationData.cs
- ResourceBinder.cs
- ConstraintEnumerator.cs
- AutomationPropertyChangedEventArgs.cs
- DragDeltaEventArgs.cs
- LocalIdKeyIdentifierClause.cs
- ListenerSessionConnection.cs
- COM2ExtendedBrowsingHandler.cs
- FontSourceCollection.cs
- SeverityFilter.cs
- AdornedElementPlaceholder.cs
- DiscoveryClientElement.cs
- WizardPanel.cs
- ExpressionList.cs
- _IPv4Address.cs
- UserNameServiceElement.cs
- ResourceManager.cs
- ProfileManager.cs
- IPipelineRuntime.cs
- UriSection.cs
- metadatamappinghashervisitor.cs
- PackUriHelper.cs
- DetailsViewInsertedEventArgs.cs
- TerminatorSinks.cs
- HwndSource.cs
- ServiceBehaviorAttribute.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- MetaModel.cs
- CollectionAdapters.cs
- BaseComponentEditor.cs
- XmlBufferReader.cs
- ErrorInfoXmlDocument.cs
- OLEDB_Util.cs
- QuaternionAnimationUsingKeyFrames.cs
- PageThemeCodeDomTreeGenerator.cs
- _CookieModule.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- DynamicDataRoute.cs
- LineMetrics.cs
- SuppressIldasmAttribute.cs
- MemberHolder.cs
- DataGridAutoGeneratingColumnEventArgs.cs
- unitconverter.cs
- ButtonBaseAdapter.cs
- NameSpaceEvent.cs
- ComAwareEventInfo.cs
- DoubleKeyFrameCollection.cs
- IxmlLineInfo.cs
- OleDbStruct.cs
- TraceContext.cs
- DataColumnPropertyDescriptor.cs
- XmlSchemaExporter.cs
- HasRunnableWorkflowEvent.cs
- MasterPageParser.cs
- TextModifier.cs
- ExpressionBuilder.cs
- BitmapDownload.cs
- RequestCachePolicy.cs
- TlsnegoTokenProvider.cs
- JavaScriptObjectDeserializer.cs
- StrongNameIdentityPermission.cs
- CheckBox.cs
- Stack.cs
- StringFreezingAttribute.cs
- IsolatedStorageFilePermission.cs
- ToolStripDropDownItemDesigner.cs
- TrackBar.cs
- SocketAddress.cs
- BufferModeSettings.cs
- RecognizerInfo.cs
- SoapAttributeAttribute.cs
- ReflectionPermission.cs
- Crc32.cs
- SmtpDigestAuthenticationModule.cs
- WSSecurityXXX2005.cs
- DropShadowBitmapEffect.cs
- Transform.cs
- SimpleMailWebEventProvider.cs
- ChangeNode.cs
- PropertyGeneratedEventArgs.cs
- IDQuery.cs
- InvokeCompletedEventArgs.cs
- Helper.cs
- TextContainerHelper.cs
- InkCanvasInnerCanvas.cs
- TemplateControl.cs
- DPTypeDescriptorContext.cs
- WebPartConnectionsEventArgs.cs
- RelatedEnd.cs
- WindowsListViewGroupHelper.cs
- DesignerToolStripControlHost.cs
- HiddenFieldPageStatePersister.cs
- DnsPermission.cs
- EncryptedKey.cs
- ImportCatalogPart.cs
- PackageDigitalSignatureManager.cs
- SoapAttributeAttribute.cs
- MissingManifestResourceException.cs
- PropertyConverter.cs
- CodeArrayCreateExpression.cs