Estoy tratando de insertar nuevos registros en la tabla de origen desde la vista de cuadrícula de la interfaz C # … Pero cuando recupero los registros con el código de clic de botón que se muestra a continuación … Estoy obteniendo registros en la vista de cuadrícula pero no hay opción para insertar nuevos registros (Captura de pantalla adjunta) .. donde como puedo actualizar los registros de la vista de cuadrícula.
¿Hay alguna opción o propiedad para habilitar la opción de inserción en la vista de cuadrícula?
Buttonclickcode:
private void RetrieveRules_button_Click(object sender, EventArgs e) { this.dataGridView.DataSource = null; this.dataGridView.Rows.Clear(); SqlCommand cmd1 = con.CreateCommand(); cmd1.CommandType = CommandType.Text; cmd1.CommandText = @" Select TOP 1 * FROM " + schemaName + "[ERSBusinessLogic] ORDER BY ERSBusinessLogic_ID DESC"; con.Open(); cmd1.ExecuteNonQuery(); DataTable dt = new DataTable(); SqlDataAdapter DA = new SqlDataAdapter(cmd1); DA.Fill(dt); dataGridView.DataSource = dt; con.Close(); }
Gracias
Para permitir que el usuario agregue, elimine o edite filas con DataGridView
:
AllowUserToAddRows
como verdadera o en Tareas de DataGridView , marque Habilitar la adición AllowUserToDeleteRows
en verdadero o en Tareas de DataGridView , marque Habilitar eliminación ReadOnly
en false o en tareas de DataGridView , marque Habilitar edición Para permitir que el usuario guarde los cambios usando un SqlDataAdapter:
SqlDataAdapter
usando una instrucción select y una cadena de conexión. InsertCommand
, DeleteCommand
y UpdateCommand
para su adaptador de datos. Crea comandos válidos usando un SqlCommandBuilder
. DataTable
utilizando el adaptador de datos. DataSource
de DataGridView
SqlDataAdapter.Update
pasando la tabla de datos al método. Código
DataTable table; SqlDataAdapter adapter; private void Form1_Load(object sender, EventArgs e) { //Create adapter var connection = @"your connection string"; var command = "SELECT * FROM Table1"; adapter = new SqlDataAdapter(command, connection); //Create Insert, Update and Delete commands var builder = new SqlCommandBuilder(adapter); //Load data table = new DataTable(); adapter.Fill(table); //Bind the grid to data this.dataGridView1.DataSource = table; //Enable add, delete and edit this.dataGridView1.AllowUserToAddRows = true; this.dataGridView1.AllowUserToDeleteRows = true; this.dataGridView1.ReadOnly = false; } private void saveButton_Click(object sender, EventArgs e) { //Save Data adapter.Update(table); }
Nota
ExecuteNonQuery
. Solo necesita una cadena de conexión y un texto de comando. Entonces puedes crear un adaptador de datos. Entonces ni siquiera necesita administrar la apertura y el cierre de la conexión, el adaptador de datos lo administra. SELECT TOP 1 *
, si agrega datos y los guarda, no podrá ver las actualizaciones la próxima vez que cargue los datos porque solo carga un solo registro. El código utiliza ExecuteNonQuery
, no devuelve ninguna de las filas afectadas ni los resultados que devuelve su consulta.
Use ExecuteReader
lugar.
var reader = cmd1.ExecuteReader(); DataTable dt = new DataTable(); dtLoad(reader);
¿Hay alguna opción o propiedad para habilitar la opción de inserción en gridview
dataGridView1.ReadOnly = false; dataGridView1.EditMode = DataGridViewEditMode.EditOnF2; //if you want to edit on F2.