Index: Core/Common/src/Core.Common.Controls/DataGrid/DataGridViewControl.cs
===================================================================
diff -u -r0efc76f9c5ce1c3c26e501bbd2e884e2fcfa64ed -r5c08229e46f7bdab0ad1d754956f152c90ab3169
--- Core/Common/src/Core.Common.Controls/DataGrid/DataGridViewControl.cs (.../DataGridViewControl.cs) (revision 0efc76f9c5ce1c3c26e501bbd2e884e2fcfa64ed)
+++ Core/Common/src/Core.Common.Controls/DataGrid/DataGridViewControl.cs (.../DataGridViewControl.cs) (revision 5c08229e46f7bdab0ad1d754956f152c90ab3169)
@@ -39,11 +39,6 @@
SubscribeEvents();
}
- private void SubscribeEvents()
- {
- dataGridView.CurrentCellDirtyStateChanged += DataGridViewCurrentCellDirtyStateChanged;
- }
-
///
/// Adds a new to the with the given data.
///
@@ -80,18 +75,42 @@
});
}
+ ///
+ /// Adds a new to the with the given data.
+ ///
+ /// The of the column.
+ /// The of the column.
+ /// is also used to create the .
+ /// The format is "column_.
+ public void AddComboBoxColumn(string dataPropertyName, string headerText)
+ {
+ dataGridView.Columns.Add(new DataGridViewComboBoxColumn
+ {
+ DataPropertyName = dataPropertyName,
+ HeaderText = headerText,
+ Name = string.Format("column_{0}", dataPropertyName),
+ ValueMember = "This",
+ DisplayMember = "DisplayName"
+ });
+ }
+
+ private void SubscribeEvents()
+ {
+ dataGridView.CurrentCellDirtyStateChanged += DataGridViewCurrentCellDirtyStateChanged;
+ }
+
#region Event handling
private void DataGridViewCurrentCellDirtyStateChanged(object sender, EventArgs e)
{
// Ensure checkbox values are directly committed
DataGridViewColumn currentColumn = dataGridView.Columns[dataGridView.CurrentCell.ColumnIndex];
- if (currentColumn is DataGridViewCheckBoxColumn)
+ if (currentColumn is DataGridViewCheckBoxColumn || currentColumn is DataGridViewComboBoxColumn)
{
dataGridView.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
}
#endregion
}
-}
+}
\ No newline at end of file
Index: Core/Common/test/Core.Common.Controls.Test/DataGrid/DataGridViewControlTest.cs
===================================================================
diff -u -r0efc76f9c5ce1c3c26e501bbd2e884e2fcfa64ed -r5c08229e46f7bdab0ad1d754956f152c90ab3169
--- Core/Common/test/Core.Common.Controls.Test/DataGrid/DataGridViewControlTest.cs (.../DataGridViewControlTest.cs) (revision 0efc76f9c5ce1c3c26e501bbd2e884e2fcfa64ed)
+++ Core/Common/test/Core.Common.Controls.Test/DataGrid/DataGridViewControlTest.cs (.../DataGridViewControlTest.cs) (revision 5c08229e46f7bdab0ad1d754956f152c90ab3169)
@@ -100,8 +100,7 @@
// Assert
Assert.AreEqual(1, dataGridView.ColumnCount);
- var columnData = dataGridView.Columns[0];
- Assert.IsTrue(columnData.GetType() == typeof(DataGridViewTextBoxColumn));
+ DataGridViewTextBoxColumn columnData = (DataGridViewTextBoxColumn) dataGridView.Columns[0];
Assert.AreEqual(propertyName, columnData.DataPropertyName);
Assert.AreEqual(string.Format("column_{0}", propertyName), columnData.Name);
Assert.AreEqual(headerText, columnData.HeaderText);
@@ -133,17 +132,49 @@
// Assert
Assert.AreEqual(1, dataGridView.ColumnCount);
- var columnData = dataGridView.Columns[0];
- Assert.IsTrue(columnData.GetType() == typeof(DataGridViewCheckBoxColumn));
+ DataGridViewCheckBoxColumn columnData = (DataGridViewCheckBoxColumn) dataGridView.Columns[0];
Assert.AreEqual(propertyName, columnData.DataPropertyName);
Assert.AreEqual(string.Format("column_{0}", propertyName), columnData.Name);
Assert.AreEqual(headerText, columnData.HeaderText);
}
}
[Test]
- public void DataGridViewControl_EditValueDirtyStateChangedEventFired_ValueCommittedCellInEditMode()
+ public void AddComboBoxColumn_Always_AddsColumnToDataGridView()
{
+ using (var form = new Form())
+ {
+ var propertyName = "PropertyName";
+ var headerText = "HeaderText";
+
+ var control = new DataGridViewControl();
+ form.Controls.Add(control);
+ form.Show();
+
+ var dataGridView = (DataGridView) new ControlTester("dataGridView").TheObject;
+
+ // Precondition
+ Assert.AreEqual(0, dataGridView.ColumnCount);
+
+ // Call
+ control.AddComboBoxColumn(propertyName, headerText);
+
+ // Assert
+ Assert.AreEqual(1, dataGridView.ColumnCount);
+
+ DataGridViewComboBoxColumn columnData = (DataGridViewComboBoxColumn) dataGridView.Columns[0];
+
+ Assert.AreEqual(propertyName, columnData.DataPropertyName);
+ Assert.AreEqual(string.Format("column_{0}", propertyName), columnData.Name);
+ Assert.AreEqual(headerText, columnData.HeaderText);
+ Assert.AreEqual("This", columnData.ValueMember);
+ Assert.AreEqual("DisplayName", columnData.DisplayMember);
+ }
+ }
+
+ [Test]
+ public void DataGridViewControlCheckBoxColumn_EditValueDirtyStateChangedEventFired_ValueCommittedCellInEditMode()
+ {
// Setup
using (var form = new Form())
{
@@ -171,6 +202,7 @@
// Assert
Assert.IsTrue(dataGridViewCell.IsInEditMode);
+ Assert.IsTrue((bool)dataGridViewCell.FormattedValue);
}
}
}