Skip to content

Commit 19356b2

Browse files
committed
Updated Create DataTable Command
1 parent da5d10c commit 19356b2

File tree

4 files changed

+82
-23
lines changed

4 files changed

+82
-23
lines changed

taskt/Core/Automation/Commands/CreateDataTableCommand.cs

+45-19
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
using System.Windows.Forms;
66
using taskt.UI.Forms;
77
using taskt.UI.CustomControls;
8+
using System.Drawing;
9+
using System.Linq;
810

911
namespace taskt.Core.Automation.Commands
1012
{
@@ -16,64 +18,88 @@ namespace taskt.Core.Automation.Commands
1618
public class CreateDataTableCommand : ScriptCommand
1719
{
1820
[XmlAttribute]
19-
[Attributes.PropertyAttributes.PropertyDescription("Please create a DataTable name")]
21+
[Attributes.PropertyAttributes.PropertyDescription("Please Indicate DataTable Name")]
2022
[Attributes.PropertyAttributes.InputSpecification("Indicate a unique reference name for later use")]
2123
[Attributes.PropertyAttributes.SampleUsage("vMyDatatable")]
2224
[Attributes.PropertyAttributes.Remarks("")]
2325
public string v_DataTableName { get; set; }
2426

25-
[XmlAttribute]
26-
[Attributes.PropertyAttributes.PropertyDescription("Please indicate the names of your columns")]
27-
[Attributes.PropertyAttributes.PropertyUIHelper(Attributes.PropertyAttributes.PropertyUIHelper.UIAdditionalHelperType.ShowVariableHelper)]
28-
[Attributes.PropertyAttributes.InputSpecification("Enter the actual names of your columns.")]
29-
[Attributes.PropertyAttributes.SampleUsage("name1,name2,name3,name4")]
27+
[XmlElement]
28+
[Attributes.PropertyAttributes.PropertyDescription("Define Column Names")]
29+
[Attributes.PropertyAttributes.InputSpecification("Enter the Column Names required for each column of data")]
30+
[Attributes.PropertyAttributes.SampleUsage("")]
3031
[Attributes.PropertyAttributes.Remarks("")]
31-
public string v_DataTableColumnNames { get; set; }
32+
[Attributes.PropertyAttributes.PropertyUIHelper(Attributes.PropertyAttributes.PropertyUIHelper.UIAdditionalHelperType.ShowVariableHelper)]
33+
public DataTable v_ColumnNameDataTable { get; set; }
34+
3235

3336
public CreateDataTableCommand()
3437
{
3538
this.CommandName = "CreateDataTableCommand";
3639
this.SelectionName = "Create DataTable";
3740
this.CommandEnabled = true;
3841
this.CustomRendering = true;
42+
43+
//initialize data table
44+
this.v_ColumnNameDataTable = new System.Data.DataTable
45+
{
46+
TableName = "ColumnNamesDataTable" + DateTime.Now.ToString("MMddyy.hhmmss")
47+
};
48+
49+
this.v_ColumnNameDataTable.Columns.Add("Column Name");
50+
51+
3952
}
4053

4154
public override void RunCommand(object sender)
4255
{
4356
var engine = (Core.Automation.Engine.AutomationEngineInstance)sender;
44-
var vDataTableColumnNames = v_DataTableColumnNames.ConvertToUserVariable(sender);
57+
var dataTableName = v_DataTableName.ConvertToUserVariable(sender);
4558

46-
var splittext = vDataTableColumnNames.Split(',');
4759
DataTable Dt = new DataTable();
4860

49-
foreach(var item in splittext)
61+
foreach(DataRow rwColumnName in v_ColumnNameDataTable.Rows)
5062
{
51-
Dt.Columns.Add(item);
63+
Dt.Columns.Add(rwColumnName.Field<string>("Column Name"));
5264
}
5365

54-
Script.ScriptVariable newDataTable = new Script.ScriptVariable
66+
67+
68+
69+
//add or override existing variable
70+
if (engine.VariableList.Any(f => f.VariableName == dataTableName))
5571
{
56-
VariableName = v_DataTableName,
57-
VariableValue = Dt
58-
};
72+
var selectedVariable = engine.VariableList.Where(f => f.VariableName == dataTableName).FirstOrDefault();
73+
selectedVariable.VariableValue = Dt;
74+
}
75+
else
76+
{
77+
Script.ScriptVariable newDataTable = new Script.ScriptVariable
78+
{
79+
VariableName = dataTableName,
80+
VariableValue = Dt
81+
};
5982

60-
engine.VariableList.Add(newDataTable);
83+
engine.VariableList.Add(newDataTable);
84+
}
85+
86+
87+
6188
}
6289
public override List<Control> Render(frmCommandEditor editor)
6390
{
6491
base.Render(editor);
6592

6693
//create standard group controls
6794
RenderedControls.AddRange(CommandControls.CreateDefaultInputGroupFor("v_DataTableName", this, editor));
68-
RenderedControls.AddRange(CommandControls.CreateDefaultInputGroupFor("v_DataTableColumnNames", this, editor));
69-
95+
RenderedControls.AddRange(CommandControls.CreateDataGridViewGroupFor("v_ColumnNameDataTable", this, editor));
7096
return RenderedControls;
7197

7298
}
7399

74100
public override string GetDisplayValue()
75101
{
76-
return base.GetDisplayValue()+ "[Create DataTable with name: "+ v_DataTableName +"]";
102+
return base.GetDisplayValue() + $" [Name: '{v_DataTableName}' with {v_ColumnNameDataTable.Rows.Count} Columns]";
77103
}
78104
}
79105
}

taskt/Core/ExtensionMethods.cs

+9-1
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,15 @@ public static string ConvertToUserVariable(this String str, object sender)
174174
}
175175
else if (str.Contains(potentialVariable))
176176
{
177-
str = str.Replace(potentialVariable, (string)varCheck.GetDisplayValue());
177+
try
178+
{
179+
str = str.Replace(potentialVariable, (string)varCheck.GetDisplayValue());
180+
}
181+
catch (Exception)
182+
{
183+
184+
}
185+
178186
}
179187
}
180188

taskt/Core/Script.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -238,9 +238,9 @@ public string GetDisplayValue(string requiredProperty = "")
238238
}
239239
else if(VariableValue is DataTable)
240240
{
241-
DataTable dataTable = (DataTable)VariableValue;
241+
DataTable dataTable = (DataTable)VariableValue;
242242
var dataRow = dataTable.Rows[CurrentPosition];
243-
return Newtonsoft.Json.JsonConvert.SerializeObject(dataRow.ItemArray);
243+
return Newtonsoft.Json.JsonConvert.SerializeObject(dataRow.ItemArray);
244244
}
245245
else
246246
{

taskt/UI/CustomControls/CommandControls.cs

+26-1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,20 @@ public static List<Control> CreateDefaultDropdownGroupFor(string parameterName,
4848
return controlList;
4949

5050
}
51+
52+
public static List<Control> CreateDataGridViewGroupFor(string parameterName, Core.Automation.Commands.ScriptCommand parent, Forms.frmCommandEditor editor)
53+
{
54+
var controlList = new List<Control>();
55+
var label = CreateDefaultLabelFor(parameterName, parent);
56+
var gridview = CreateDataGridView(parent, parameterName);
57+
var helpers = CreateUIHelpersFor(parameterName, parent, new Control[] { gridview }, editor);
58+
59+
controlList.Add(label);
60+
controlList.AddRange(helpers);
61+
controlList.Add(gridview);
62+
63+
return controlList;
64+
}
5165
public static Control CreateDefaultLabelFor(string parameterName, Core.Automation.Commands.ScriptCommand parent)
5266
{
5367
var variableProperties = parent.GetType().GetProperties().Where(f => f.Name == parameterName).FirstOrDefault();
@@ -240,7 +254,18 @@ public static List<Control> CreateUIHelpersFor(string parameterName, Core.Automa
240254

241255
}
242256

243-
257+
258+
public static DataGridView CreateDataGridView(object sourceCommand, string dataSourceName)
259+
{
260+
var gridView = new DataGridView();
261+
gridView.AllowUserToAddRows = true;
262+
gridView.AllowUserToDeleteRows = true;
263+
gridView.Size = new Size(400, 250);
264+
gridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
265+
gridView.DataBindings.Add("DataSource", sourceCommand, dataSourceName, false, DataSourceUpdateMode.OnPropertyChanged);
266+
gridView.AllowUserToResizeRows = false;
267+
return gridView;
268+
}
244269
private static void ShowCodeBuilder(object sender, EventArgs e, UI.Forms.frmCommandEditor editor)
245270
{
246271
//get textbox text

0 commit comments

Comments
 (0)