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
- WebPartZone.cs
- NumberFormatInfo.cs
- MiniCustomAttributeInfo.cs
- TemplatedWizardStep.cs
- HybridDictionary.cs
- AspCompat.cs
- X509WindowsSecurityToken.cs
- Object.cs
- PreloadedPackages.cs
- SqlError.cs
- SessionEndedEventArgs.cs
- FrameworkElement.cs
- Int64AnimationBase.cs
- SqlDataReader.cs
- SolidColorBrush.cs
- InfoCardRSAPKCS1KeyExchangeFormatter.cs
- ValueConversionAttribute.cs
- TabletDeviceInfo.cs
- TrackingExtract.cs
- _SecureChannel.cs
- MatrixTransform.cs
- CodeDirectiveCollection.cs
- DataBoundControlParameterTarget.cs
- __Filters.cs
- ServicePointManager.cs
- CodeMethodMap.cs
- ImmutableAssemblyCacheEntry.cs
- WindowsButton.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- PrintDialogException.cs
- _ConnectStream.cs
- SyndicationDeserializer.cs
- EventRecord.cs
- HeaderedContentControl.cs
- FixedDocumentPaginator.cs
- FormsAuthentication.cs
- WsdlWriter.cs
- PackageDigitalSignature.cs
- PersonalizationStateInfo.cs
- Odbc32.cs
- ServiceNotStartedException.cs
- HeaderedItemsControl.cs
- ResourceDictionary.cs
- ClientCredentialsSecurityTokenManager.cs
- JsonObjectDataContract.cs
- BypassElementCollection.cs
- CmsInterop.cs
- DisposableCollectionWrapper.cs
- SwitchLevelAttribute.cs
- ObjectReferenceStack.cs
- TemplatedWizardStep.cs
- DataViewListener.cs
- DirectoryLocalQuery.cs
- MimeFormatter.cs
- VisualCollection.cs
- AlphabetConverter.cs
- MarkerProperties.cs
- FormsAuthenticationUser.cs
- InvalidWMPVersionException.cs
- ProcessManager.cs
- Single.cs
- Vector3DValueSerializer.cs
- DataObjectSettingDataEventArgs.cs
- HtmlEncodedRawTextWriter.cs
- MenuAutomationPeer.cs
- ProtocolsConfigurationEntry.cs
- NameService.cs
- DispatcherExceptionFilterEventArgs.cs
- OdbcParameterCollection.cs
- ButtonBase.cs
- TypeDependencyAttribute.cs
- ClientTargetSection.cs
- CompilationRelaxations.cs
- ListViewSelectEventArgs.cs
- ToolStripDropDownDesigner.cs
- TimelineClockCollection.cs
- HttpServerUtilityWrapper.cs
- SystemIPGlobalStatistics.cs
- MemberInfoSerializationHolder.cs
- BookmarkEventArgs.cs
- CaseStatement.cs
- CodeParameterDeclarationExpressionCollection.cs
- ControlParameter.cs
- FlowDocumentPage.cs
- Rfc2898DeriveBytes.cs
- ClassHandlersStore.cs
- Wizard.cs
- DesignerEventService.cs
- XmlMtomWriter.cs
- AutomationTextAttribute.cs
- DesigntimeLicenseContextSerializer.cs
- OutOfMemoryException.cs
- AudioStateChangedEventArgs.cs
- FormsAuthenticationUser.cs
- SafeRightsManagementHandle.cs
- ArglessEventHandlerProxy.cs
- OperationContractGenerationContext.cs
- TypeConverterAttribute.cs
- DesignerUtility.cs
- RichTextBoxAutomationPeer.cs