[ Team LiB ] Recipe 7.14 UsingaDataViewtoControlEdits,Deletions,orAdditionsinWindowsForms Problem You need to selectively prevent users from editing, deleting, or adding data inaWindowsForms application. Solution Bind aDataViewtoWindowsForms controls. The sample code contains four event handlers: Form.Load Sets up the sample by filling a DataTable with the Orders table from the Northwind sample database. ADataView is created from the table and bound to the data grid on the form. Allow Delete Button.Click Sets whether the DataView allows records to be deleted based on the value ina check box. Allow Edit Button.Click Sets whether the DataView allows records to be edited based on the value ina check box. Allow Insert Button.Click Sets whether the DataView allows records to be inserted based on the value ina check box. The C# code is shown in Example 7-30 . Example 7-30. File: ControlDataEditWithDataViewForm.cs // Namespaces, variables, and constants using System; using System.Configuration; using System.Data; using System.Data.SqlClient; private DataView dv; // . . . private void ControlDataEditWithDataViewForm_Load(object sender, System.EventArgs e) { // Fill the Order table. SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Orders", ConfigurationSettings.AppSettings["Sql_ConnectString"]); DataTable dtOrders = new DataTable("Orders"); da.FillSchema(dtOrders, SchemaType.Source); da.Fill(dtOrders); // Create a view and bind it to the grid. dv = new DataView(dtOrders); dataGrid.DataSource = dv; } private void allowDeleteCheckBox_CheckedChanged(object sender, System.EventArgs e) { dv.AllowDelete = allowDeleteCheckBox.Checked; } private void allowEditCheckBox_CheckedChanged(object sender, System.EventArgs e) { dv.AllowEdit = allowEditCheckBox.Checked; } private void allowInsertCheckBox_CheckedChanged(object sender, System.EventArgs e) { dv.AllowNew = allowInsertCheckBox.Checked; } Discussion The DataGrid control does not have properties that control the adding, editing, or deleting the data in the control. Binding a DataGrid toa DataTable binds to the default view of the underlying DataTable. The DataView class represents a view of the DataTable that can be data bound on both WindowsForms and Web Forms. The DataView can be customized for editing, filtering, searching, and sorting. The DataView class can be used to add, edit, or delete records in the underlying DataTable. The properties described in Table 7-14 control the data modification permitted ina DataView. Table 7-14. DataView properties Property Description AllowDelete Gets or sets a Boolean value indicating whether deletes are allowed AllowEdit Gets or sets a Boolean value indicating whether edits are allowed AllowNew Gets or sets a Boolean value indicating whether new rows can be added If AllowNew is true, the record is not added until the EndEdit( ) method is called either explicitly or implicitly. The CancelEdit( ) method of the DataRowView can be called to discard the row before it is added. If AllowEdit is true, the changes to the row are not committed until the EndEdit( ) method is called either explicitly or implicitly. Only one row can be edited at a time. The CancelEdit( ) method of the DataRowView can be called to discard the row before it is added. If the AddNew( ) or BeginEdit( ) method of the DataRowView is called, EndEdit( ) is called implicitly on the pending row; this applies the changes to the row in the underlying DataTable. In data controls that allow editing multiple records, EndEdit( ) is called implicitly when the current row is changed. [ Team LiB ] . from editing, deleting, or adding data in a Windows Forms application. Solution Bind a DataView to Windows Forms controls. The sample code contains four. the adding, editing, or deleting the data in the control. Binding a DataGrid to a DataTable binds to the default view of the underlying DataTable. The DataView