MaxRows と MinRows は、RowsCollection が MaxRows 制約および MinRows 制約に違反する場合にユーザーが行を追加または削除できないようにします。これらのプロパティは、データソースに保存できるデータの内容には関与しません。ユーザーが一定のレベルを超えて行を追加または削除できるかどうかを制御するだけです。
Private Sub SetupGrid() ' Make sure that the user can add and delete rows from the grid. ' Me.ultraGrid1.DisplayLayout.Override.AllowAddNew = AllowAddNew.TemplateOnBottom Me.ultraGrid1.DisplayLayout.Override.AllowDelete = DefaultableBoolean.True ' Make sure that the row selectors are displayed so that it is easy to delete rows. ' Me.ultraGrid1.DisplayLayout.Override.RowSelectors = DefaultableBoolean.True ' Set the "EmergencyContacts" band to require that each row collection have between 1 and 3 rows. ' Me.ultraGrid1.DisplayLayout.Bands("EmergencyContacts").MinRows = 1 Me.ultraGrid1.DisplayLayout.Bands("EmergencyContacts").MaxRows = 3 End Sub Private Sub ultraGrid1_Error(sender As Object, e As Infragistics.Win.UltraWinGrid.ErrorEventArgs) Handles Me.ultraGrid1.Error ' If the source of the error is 'RowDelete' and the Exception property is Nothing then the reason ' that this event fired was due to an attempt to violate the MinRows constraint. The Exception ' property will be Nothing in this situation because no exception was thrown to cause this error, ' but the grid's internal logic detected the error. If the Exception property was not Nothing then ' that would indicate that data source threw an exception when the row was being deleted. ' If e.DataErrorInfo.Source = DataErrorSource.RowDelete And e.DataErrorInfo.Exception Is Nothing Then MessageBox.Show("Each employee must have at least one emergency contact.", "Cannot Delete All Rows", MessageBoxButtons.OK, MessageBoxIcon.Information) End If End Sub
private void SetupGrid() { // Make sure that the user can add and delete rows from the grid. // this.ultraGrid1.DisplayLayout.Override.AllowAddNew = AllowAddNew.TemplateOnBottom; this.ultraGrid1.DisplayLayout.Override.AllowDelete = DefaultableBoolean.True; // Make sure that the row selectors are displayed so that it is easy to delete rows. // this.ultraGrid1.DisplayLayout.Override.RowSelectors = DefaultableBoolean.True; // Set the "EmergencyContacts" band to require that each row collection have between 1 and 3 rows. // this.ultraGrid1.DisplayLayout.Bands["EmergencyContacts"].MinRows = 1; this.ultraGrid1.DisplayLayout.Bands["EmergencyContacts"].MaxRows = 3; } private void ultraGrid1_Error(object sender, Infragistics.Win.UltraWinGrid.ErrorEventArgs e) { // If the source of the error is 'RowDelete' and the Exception property is null then the reason // that this event fired was due to an attempt to violate the MinRows constraint. The Exception // property will be null in this situation because no exception was thrown to cause this error, // but the grid's internal logic detected the error. If the Exception property was not null then // that would indicate that data source threw an exception when the row was being deleted. // if( e.DataErrorInfo.Source == DataErrorSource.RowDelete && e.DataErrorInfo.Exception == null ) { MessageBox.Show( "Each employee must have at least one emergency contact.", "Cannot Delete All Rows", MessageBoxButtons.OK, MessageBoxIcon.Information ); } }