Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / WebForms / System / Web / UI / Design / WebControls / SqlDataSourceQueryEditorForm.cs / 1 / SqlDataSourceQueryEditorForm.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Web.UI.Design.WebControls { using System; using System.ComponentModel.Design.Data; using System.Data; using System.Data.Common; using System.Design; using System.Diagnostics; using System.Drawing; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.ComponentModel; using System.Globalization; using System.Web.UI.Design.Util; using System.Web.UI.Design.WebControls; using System.Web.UI.WebControls; using System.Windows.Forms; ////// Query editor for SqlDataSource queries. /// Enables a user to edit query commands and add/remove and infer parameters. /// internal class SqlDataSourceQueryEditorForm : DesignerForm { private System.Windows.Forms.Label _commandLabel; private System.Windows.Forms.TextBox _commandTextBox; private ParameterEditorUserControl _parameterEditorUserControl; private System.Windows.Forms.Button _okButton; private System.Windows.Forms.Button _cancelButton; private System.Windows.Forms.Button _inferParametersButton; private System.Windows.Forms.Button _queryBuilderButton; private QueryBuilderMode _queryBuilderMode; private IDataEnvironment _dataEnvironment; private SqlDataSourceCommandType _commandType; private DesignerDataConnection _dataConnection; private IList _originalParameters; private SqlDataSourceDesigner _sqlDataSourceDesigner; ////// Create a new instance of SqlDataSourceQueryEditorForm using a given /// connection string, command type (Select/Insert/etc.), command text, /// and a list of parameters. /// The connection string can be null (this is the case for AccessDataSource /// when the MDB file does not exist or cannot be mapped to a local file). /// public SqlDataSourceQueryEditorForm(IServiceProvider serviceProvider, SqlDataSourceDesigner sqlDataSourceDesigner, string providerName, string connectionString, DataSourceOperation operation, SqlDataSourceCommandType commandType, string command, IList originalParameters) : base(serviceProvider) { Debug.Assert(sqlDataSourceDesigner != null); _sqlDataSourceDesigner = sqlDataSourceDesigner; InitializeComponent(); InitializeUI(); if (String.IsNullOrEmpty(providerName)) { providerName = SqlDataSourceDesigner.DefaultProviderName; } _dataConnection = new DesignerDataConnection(String.Empty, providerName, connectionString); _commandType = commandType; _commandTextBox.Text = command; _originalParameters = originalParameters; string operationText = Enum.GetName(typeof(DataSourceOperation), operation).ToUpperInvariant(); _commandLabel.Text = SR.GetString(SR.SqlDataSourceQueryEditorForm_CommandLabel, operationText); ArrayList parameterList = new ArrayList(originalParameters.Count); sqlDataSourceDesigner.CopyList(originalParameters, parameterList); _parameterEditorUserControl.AddParameters((Parameter[])parameterList.ToArray(typeof(Parameter))); _commandTextBox.Select(0, 0); // Set the mode for the query builder switch (operation) { case DataSourceOperation.Delete: _queryBuilderMode = QueryBuilderMode.Delete; break; case DataSourceOperation.Insert: _queryBuilderMode = QueryBuilderMode.Insert; break; case DataSourceOperation.Select: _queryBuilderMode = QueryBuilderMode.Select; break; case DataSourceOperation.Update: _queryBuilderMode = QueryBuilderMode.Update; break; default: Debug.Fail("Invalid DataSourceOperation"); break; } } ////// The command text that is in the command textbox. /// public string Command { get { return _commandTextBox.Text; } } protected override string HelpTopic { get { return "net.Asp.SqlDataSource.QueryEditor"; } } #region Windows Form Designer generated code ////// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { _okButton = new System.Windows.Forms.Button(); _cancelButton = new System.Windows.Forms.Button(); _inferParametersButton = new System.Windows.Forms.Button(); _queryBuilderButton = new System.Windows.Forms.Button(); _commandLabel = new System.Windows.Forms.Label(); _commandTextBox = new System.Windows.Forms.TextBox(); _parameterEditorUserControl = new ParameterEditorUserControl(ServiceProvider, (SqlDataSource)_sqlDataSourceDesigner.Component); SuspendLayout(); // // okButton // _okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); _okButton.Location = new System.Drawing.Point(377, 379); _okButton.TabIndex = 150; _okButton.Click += new System.EventHandler(OnOkButtonClick); // // cancelButton // _cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); _cancelButton.Location = new System.Drawing.Point(457, 379); _cancelButton.TabIndex = 160; _cancelButton.Click += new System.EventHandler(OnCancelButtonClick); // // _commandLabel // _commandLabel.Location = new System.Drawing.Point(12, 12); _commandLabel.Size = new System.Drawing.Size(200, 16); _commandLabel.TabIndex = 10; // // _commandTextBox // _commandTextBox.AcceptsReturn = true; _commandTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); _commandTextBox.Location = new System.Drawing.Point(12, 30); _commandTextBox.Multiline = true; _commandTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; _commandTextBox.Size = new System.Drawing.Size(520, 78); _commandTextBox.TabIndex = 20; // // inferParametersButton // _inferParametersButton.AutoSize = true; _inferParametersButton.Location = new System.Drawing.Point(12, 112); _inferParametersButton.Size = new System.Drawing.Size(128, 23); _inferParametersButton.TabIndex = 30; _inferParametersButton.Click += new System.EventHandler(OnInferParametersButtonClick); // // queryBuilderButton // _queryBuilderButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); _queryBuilderButton.AutoSize = true; _queryBuilderButton.Location = new System.Drawing.Point(404, 112); _queryBuilderButton.Size = new System.Drawing.Size(128, 23); _queryBuilderButton.TabIndex = 40; _queryBuilderButton.Click += new System.EventHandler(OnQueryBuilderButtonClick); // // _parameterEditorUserControl // _parameterEditorUserControl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); _parameterEditorUserControl.Location = new System.Drawing.Point(12, 144); _parameterEditorUserControl.Size = new System.Drawing.Size(520, 224); _parameterEditorUserControl.TabIndex = 50; // // CommandEditorForm // AcceptButton = _okButton; CancelButton = _cancelButton; ClientSize = new System.Drawing.Size(544, 410); Controls.Add(_queryBuilderButton); Controls.Add(_inferParametersButton); Controls.Add(_commandTextBox); Controls.Add(_commandLabel); Controls.Add(_cancelButton); Controls.Add(_okButton); Controls.Add(_parameterEditorUserControl); MinimumSize = new System.Drawing.Size(488, 440); InitializeForm(); ResumeLayout(false); } #endregion ////// Called after InitializeComponent to perform additional actions that /// are not supported by the designer. /// private void InitializeUI() { _okButton.Text = SR.GetString(SR.OK); _cancelButton.Text = SR.GetString(SR.Cancel); _inferParametersButton.Text = SR.GetString(SR.SqlDataSourceQueryEditorForm_InferParametersButton); _queryBuilderButton.Text = SR.GetString(SR.SqlDataSourceQueryEditorForm_QueryBuilderButton); Text = SR.GetString(SR.SqlDataSourceQueryEditorForm_Caption); // Disable query builder button if the service is not available _dataEnvironment = (IDataEnvironment)ServiceProvider.GetService(typeof(IDataEnvironment)); _queryBuilderButton.Enabled = (_dataEnvironment != null); } ////// The Click event handler for the Cancel button. /// private void OnCancelButtonClick(System.Object sender, System.EventArgs e) { DialogResult = DialogResult.Cancel; Close(); } ////// The Click event handler for the Infer Parameters button. /// private void OnInferParametersButtonClick(System.Object sender, System.EventArgs e) { // Don't do anything if there is no command set if (_commandTextBox.Text.Trim().Length == 0) { UIServiceHelper.ShowError(ServiceProvider, SR.GetString(SR.SqlDataSourceQueryEditorForm_InferNeedsCommand)); return; } Parameter[] derivedParameters = _sqlDataSourceDesigner.InferParameterNames(_dataConnection, _commandTextBox.Text, _commandType); if (derivedParameters != null) { // Get a list of all the names currently used by parameters (including duplicates) Parameter[] currentParameters = _parameterEditorUserControl.GetParameters(); StringCollection currentNames = new StringCollection(); foreach (Parameter parameter in currentParameters) { currentNames.Add(parameter.Name); } // Go through the list of derived parameters and only pick out the ones that do not already exist bool supportsNamedParameters = true; try { DbProviderFactory factory = SqlDataSourceDesigner.GetDbProviderFactory(_dataConnection.ProviderName); supportsNamedParameters = SqlDataSourceDesigner.SupportsNamedParameters(factory); } catch { // In case there's an unsupported provider we just assume it supports named parameters (pretty optimistic) } if (supportsNamedParameters) { // Named parameters are supported, so add new uniquely named parameters ListderivedParametersToAdd = new List (); foreach (Parameter derivedParameter in derivedParameters) { if (!currentNames.Contains(derivedParameter.Name)) { derivedParametersToAdd.Add(derivedParameter); } else { currentNames.Remove(derivedParameter.Name); } } _parameterEditorUserControl.AddParameters(derivedParametersToAdd.ToArray()); } else { // Named parameters are not supported, so add new parameters based on index and direction List remainingDerivedParameters = new List (); foreach (Parameter p in derivedParameters) { remainingDerivedParameters.Add(p); } // Go through all the current parameters and remove matching one from the new derived parameters foreach (Parameter currentParameter in currentParameters) { Parameter foundParameter = null; foreach (Parameter remainingParameter in remainingDerivedParameters) { if (remainingParameter.Direction == currentParameter.Direction) { foundParameter = remainingParameter; break; } } if (foundParameter != null) { remainingDerivedParameters.Remove(foundParameter); } } // Then add all the remaining derived parameters to the list _parameterEditorUserControl.AddParameters(remainingDerivedParameters.ToArray()); } } } /// /// The Click event handler for the OK button. /// private void OnOkButtonClick(System.Object sender, System.EventArgs e) { _sqlDataSourceDesigner.CopyList(_parameterEditorUserControl.GetParameters(), _originalParameters); DialogResult = DialogResult.OK; Close(); } ////// Launch the query builder. /// private void OnQueryBuilderButtonClick(System.Object sender, System.EventArgs e) { if ((_dataConnection.ConnectionString == null) || (_dataConnection.ConnectionString.Trim().Length == 0)) { UIServiceHelper.ShowError(ServiceProvider, SR.GetString(SR.SqlDataSourceQueryEditorForm_QueryBuilderNeedsConnectionString)); return; } // Launch query builder Debug.Assert(_dataEnvironment != null); string newQuery = _dataEnvironment.BuildQuery(this, _dataConnection, _queryBuilderMode, _commandTextBox.Text); if ((newQuery != null) && (newQuery.Length > 0)) { _commandTextBox.Text = newQuery; } _commandTextBox.Focus(); _commandTextBox.Select(0, 0); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XmlSchemaInferenceException.cs
- SmtpClient.cs
- Application.cs
- TextEditorSpelling.cs
- ListMarkerSourceInfo.cs
- Rules.cs
- FormViewCommandEventArgs.cs
- DocumentSchemaValidator.cs
- CustomValidator.cs
- Application.cs
- IISMapPath.cs
- BCryptNative.cs
- HtmlInputHidden.cs
- ProviderIncompatibleException.cs
- AssociationSetMetadata.cs
- SymbolPair.cs
- DataKey.cs
- FilterElement.cs
- PrintPreviewDialog.cs
- PostBackTrigger.cs
- SqlBooleanizer.cs
- CompModSwitches.cs
- ObjectViewEntityCollectionData.cs
- DescendantBaseQuery.cs
- XmlSchemaSimpleTypeUnion.cs
- CompoundFileIOPermission.cs
- ZipIOCentralDirectoryBlock.cs
- SqlServer2KCompatibilityAnnotation.cs
- LazyTextWriterCreator.cs
- EntityContainer.cs
- DataGridTextBoxColumn.cs
- CatalogZoneAutoFormat.cs
- VisualStateManager.cs
- GlobalEventManager.cs
- ParallelEnumerableWrapper.cs
- ResourcePermissionBase.cs
- TypedDataSourceCodeGenerator.cs
- TypeConverterValueSerializer.cs
- WebPartManagerInternals.cs
- InlineUIContainer.cs
- SecurityState.cs
- ErrorWrapper.cs
- DataGridViewTextBoxColumn.cs
- PassportAuthentication.cs
- SQLGuidStorage.cs
- CodeIterationStatement.cs
- DetailsViewUpdatedEventArgs.cs
- DoubleLinkListEnumerator.cs
- HtmlContainerControl.cs
- DataServiceQuery.cs
- TableCell.cs
- ScrollChrome.cs
- NativeCppClassAttribute.cs
- XmlAttribute.cs
- Atom10FormatterFactory.cs
- TreeIterator.cs
- FolderBrowserDialogDesigner.cs
- HttpConfigurationSystem.cs
- FontUnitConverter.cs
- StringAnimationUsingKeyFrames.cs
- SortedList.cs
- ContactManager.cs
- DesignObjectWrapper.cs
- HttpCookiesSection.cs
- DataGridViewTextBoxCell.cs
- Baml2006KeyRecord.cs
- FilterQueryOptionExpression.cs
- ContextMenuAutomationPeer.cs
- GenericEnumerator.cs
- TableRowCollection.cs
- IDReferencePropertyAttribute.cs
- DefaultBindingPropertyAttribute.cs
- ImageFormatConverter.cs
- TransactionContextValidator.cs
- DesignerOptionService.cs
- IdentitySection.cs
- IntellisenseTextBox.cs
- EndpointAddressMessageFilter.cs
- ExtensionSimplifierMarkupObject.cs
- Menu.cs
- ListControlConvertEventArgs.cs
- oledbmetadatacollectionnames.cs
- InfiniteIntConverter.cs
- TextCharacters.cs
- SerializationSectionGroup.cs
- RubberbandSelector.cs
- RefreshInfo.cs
- VariantWrapper.cs
- HashSetDebugView.cs
- UnsafeMethods.cs
- FontWeights.cs
- VerbConverter.cs
- CodeNamespaceImport.cs
- ToolTipService.cs
- CurrentChangingEventManager.cs
- _IPv6Address.cs
- DictionaryEntry.cs
- PermissionSetTriple.cs
- SelectionChangedEventArgs.cs
- BCLDebug.cs