288
namespace SQLAzureConnect
{
using SQLAzureConnect.Schema.SQLDatabaseAccess;
using SQLAzureConnect.Schema.SQLParameter;
public partial class SQLDataServiceControl : UserControl
{
public SQLDatabaseAccessRootSqlDataService sqlDatabaseAccessService = null; private FormSQLAzureConnect parentForm = null;
private TabPage currentSelectedPage = null;
public string SelectedText {
get { return this.richTextBoxCommandText.SelectedText.Trim(); }
}
public event EventNotificationHandler eventSelectedTextChanged;
public event EventBubblePreviewKeyDownHandler eventBubblePreviewKeyDown; public SQLDataServiceControl()
{
InitializeComponent();
}
public SQLDataServiceControl(ref SQLDatabaseAccessRootSqlDataService sqlDatabaseAccessRoot,
FormSQLAzureConnect parentForm)
{
InitializeComponent();
this.bindingSourceService.DataSource =
sqlDatabaseAccessService = sqlDatabaseAccessRoot;
parentForm = parentForm;
UpdateUI();
this.richTextBoxCommandText.PreviewKeyDown +=
new PreviewKeyDownEventHandler(richTextBoxCommandText PreviewKeyDown); }
public void DoDataExchange()
{
sqlDatabaseAccessService.Subject = this.txtSubject.Text.Trim();
sqlDatabaseAccessService.Description = this.txtDescription.Text.Trim(); sqlDatabaseAccessService.Command.Text =
this.richTextBoxCommandText.Text.Trim();
if (this.radioButtonQuery.Checked)
{
sqlDatabaseAccessService.Command.Type =
SQLDatabaseAccessRootSqlDataServiceCommandType.Query;
}
else if (this.radioButtonStoredProcedure.Checked)
{
sqlDatabaseAccessService.Command.Type =
Trang 2289
SQLDatabaseAccessRootSqlDataServiceCommandType.Storedprocedure;
}
foreach (TabPage page in this.tabParameter.TabPages)
{
(page.Controls[0] as ParameterControl).DoDataExchange();
}
}
private void UpdateUI()
{
if (null != sqlDatabaseAccessService)
{
this.txtSubject.Text = sqlDatabaseAccessService.Subject;
this.txtDescription.Text = sqlDatabaseAccessService.Description;
switch ( sqlDatabaseAccessService.Command.Type)
{
case SQLDatabaseAccessRootSqlDataServiceCommandType.Storedprocedure:
this.radioButtonStoredProcedure.Select();
break;
case SQLDatabaseAccessRootSqlDataServiceCommandType.Query:
default:
this.radioButtonQuery.Select();
break;
}
this.richTextBoxCommandText.Clear();
this.richTextBoxCommandText.AppendText(
sqlDatabaseAccessService.Command.Text
);
if (null != sqlDatabaseAccessService.Command &&
null != sqlDatabaseAccessService.Command.SQLParameterRoot)
{
for (int i = 0; i <
sqlDatabaseAccessService.Command.SQLParameterRoot.Length; ++i )
{
AddPage(ref sqlDatabaseAccessService.Command.SQLParameterRoot[i]); }
}
if (this.tabParameter.TabPages.Count > 0)
{
tabParameter.SelectedTab = this.tabParameter.TabPages[0];
}
}
}
private void tabParameter SelectedIndexChanged(object sender, EventArgs e)
{
currentSelectedPage = this.tabParameter.SelectedTab;
Trang 3290
}
private void btnAddParameter Click(object sender, EventArgs e)
{
if (null != parentForm)
{
parentForm.DisplayMessage(string.Empty, false);
}
this.txtParameter.Focus();
if (string.Empty == this.txtParameter.Text)
{
if (null != parentForm)
{
parentForm.DisplayMessage("Please enter parameter name!", true); }
return;
}
SQLParameterRoot sqlParameterRoot = new SQLParameterRoot();
sqlParameterRoot.Parameter = new SQLParameterRootParameter();
sqlParameterRoot.Parameter.Name = this.txtParameter.Text.Trim();
sqlParameterRoot.Parameter.Type = "INT";
sqlParameterRoot.Parameter.Size = "4";
TabPage page = AddPage(ref sqlParameterRoot);
if (null != page)
{
this.tabParameter.SelectedTab = page;
}
int parameterCount = 0;
sqlDatabaseAccessService.Command.SQLParameterRoot =
new SQLParameterRoot[parameterCount + 1];
if (null != sqlDatabaseAccessService.Command.SQLParameterRoot)
{
parameterCount = sqlDatabaseAccessService.Command.SQLParameterRoot.Length; List<SQLParameterRoot> currentParameterList =
new List<SQLParameterRoot>(
sqlDatabaseAccessService.Command.SQLParameterRoot
);
currentParameterList.CopyTo(
sqlDatabaseAccessService.Command.SQLParameterRoot
);
}
else
{
parameterCount = 1;
}
Trang 4291
sqlDatabaseAccessService.Command.SQLParameterRoot[parameterCount - 1] =
sqlParameterRoot;
}
private TabPage AddPage(ref SQLParameterRoot sqlParameterRoot)
{
TabPage page = null;
if (null != sqlParameterRoot && null != sqlParameterRoot.Parameter)
{
if (String.IsNullOrEmpty(sqlParameterRoot.Parameter.Name))
{
if (null != parentForm)
{
parentForm.DisplayMessage(
"Please enter parameter name to add", true
);
return null;
}
}
if (FormSQLAzureConnect.IsPageExisted(sqlParameterRoot.Parameter.Name,
this.tabParameter))
{
if (null != parentForm)
{
parentForm.DisplayMessage(
string.Format("The name <{0}> of parameter already exists",
sqlParameterRoot.Parameter.Name), true);
}
return null;
}
page = new TabPage(sqlParameterRoot.Parameter.Name);
ParameterControl parameterControl =
new ParameterControl(ref sqlParameterRoot, parentForm);
page.Controls.Add(parameterControl);
parameterControl.Dock = DockStyle.Fill;
this.tabParameter.TabPages.Add(page);
}
return page;
}
private void btnDelete Click(object sender, EventArgs e)
{
if (null != parentForm)
{
parentForm.DisplayMessage(string.Empty, false);
}
this.txtParameter.Focus();
Trang 5292
if (string.Empty == this.txtParameter.Text)
{
if (null != parentForm)
{
parentForm.DisplayMessage(
"Please enter parameter name for deleting", true
);
}
return;
}
TabPage page = null;
foreach (TabPage p in tabParameter.TabPages)
{
if (p.Text == txtParameter.Text.Trim())
{
page = p;
break;
}
}
if (null != page)
{
int parameterCount =
sqlDatabaseAccessService.Command.SQLParameterRoot.Length;
if (null != sqlDatabaseAccessService.Command.SQLParameterRoot && parameterCount > 0)
{
List<SQLParameterRoot> parameterList = new List<SQLParameterRoot>(); foreach (SQLParameterRoot param in
sqlDatabaseAccessService.Command.SQLParameterRoot)
{
if (String.Compare(param.Parameter.Name, page.Text, true) != 0) {
parameterList.Add(param);
}
}
sqlDatabaseAccessService.Command.SQLParameterRoot =
new SQLParameterRoot[parameterList.Count];
if (parameterList.Count > 0)
{
parameterList.CopyTo(
sqlDatabaseAccessService.Command.SQLParameterRoot
);
}
this.tabParameter.TabPages.Remove(page);
}
}