podrias mostrar el codigo para añadoir registros? es dificil saber en que te estas equivocando sin el codigo.
respecto de lo segundo. creo que añadir un nuevo form para editar los datos, es innecesario, ya que puedes en el mismo grid, poner controles que te permitan la edicion.
fijate en este codigo, crea un datagridview, con checkbox, textbox, y combobox. despues haciendo referencia al elemento seleccionado (en el datagrisview, tienes toda la informacion para actualizar la base de datos.
Código:
#region Despliega centros
dttAgrupamientos = qbData.dttObtieneAgrupamientos(); // obtiene los datos desde la BD
if (dttAgrupamientos.Rows.Count > 0)
{
dgvAgrupamientos.DataSource = dttAgrupamientos;
}
else
{
dgvAgrupamientos.DataSource = null;
dgvAgrupamientos.DataBindings.Clear();
return true;
}
BindingSource bsAsociacion = new BindingSource();
bsAsociacion.DataSource = dttAgrupamientos;
dgvAgrupamientos.AutoGenerateColumns = false;
dgvAgrupamientos.DataSource = bsAsociacion;
dgvAgrupamientos.Columns.Add(SGS_Utiles.dgvtbAgregaCheckBox("Sel.", "Seleccionada"));
dgvAgrupamientos.Columns.Add(SGS_Utiles.dgvtbAgregaTexBox("codigo_empresa", "dgv_CodigoEmpresa", ""));
dgvAgrupamientos.Columns.Add(SGS_Utiles.dgvtbAgregaTexBox("codigo_centro", "dgv_CodigoCentro", ""));
dgvAgrupamientos.Columns.Add(SGS_Utiles.dgvtbAgregaTexBox("nombre_centro", "dgv_NombreCentro", "Centro"));
dgvAgrupamientos.Columns.Add(SGS_Utiles.dgvtbAgregaTexBox("codigo_zona_intesal", "dgv_CodigoZonaIntesal", ""));
dgvAgrupamientos.Columns.Add(SGS_Utiles.CreateComboBoxWithEnums(dttZonasIntesal, "CodIni", "CodEqu", "Zona Intesal", "codigo_zona_Intesal"));
dgvAgrupamientos.Columns.Add(SGS_Utiles.dgvtbAgregaTexBox("codigo_zona_sgs", "dgv_CodigoZonaSGS", ""));
dgvAgrupamientos.Columns.Add(SGS_Utiles.CreateComboBoxWithEnums(dttZonasSGS, "LocCod", "LocDes", "Zona SGS", "codigo_zona_sgs"));
dgvAgrupamientos.Columns.Add(SGS_Utiles.dgvtbAgregaTexBox("codigo_region", "dgv_CodigoRegion", ""));
dgvAgrupamientos.Columns.Add(SGS_Utiles.CreateComboBoxWithEnums(dttRegiones, "DptCod", "DptDes", "Region", "codigo_region"));
dgvAgrupamientos.Columns[0].Visible = true;
dgvAgrupamientos.Columns[1].Visible = false;
dgvAgrupamientos.Columns[2].Visible = false;
dgvAgrupamientos.Columns[3].Visible = true;
dgvAgrupamientos.Columns[4].Visible = false;
dgvAgrupamientos.Columns[5].Visible = true;
dgvAgrupamientos.Columns[6].Visible = false;
dgvAgrupamientos.Columns[7].Visible = true;
dgvAgrupamientos.Columns[8].Visible = false;
dgvAgrupamientos.Columns[9].Visible = true;
dgvAgrupamientos.Columns[0].Width = 50;
dgvAgrupamientos.Columns[3].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
dgvAgrupamientos.Columns[5].Width = 150;
dgvAgrupamientos.Columns[7].Width = 150;
dgvAgrupamientos.Columns[9].Width = 150;
dgvAgrupamientos.AllowUserToAddRows = false;
dgvAgrupamientos.ReadOnly = false;
dgvAgrupamientos.Columns[0].ReadOnly = false;
dgvAgrupamientos.Columns[3].ReadOnly = true;
dgvAgrupamientos.Columns[5].ReadOnly = true;
dgvAgrupamientos.Columns[7].ReadOnly = true;
dgvAgrupamientos.Columns[9].ReadOnly = true;
dgvAgrupamientos.AllowUserToDeleteRows = false;
dgvAgrupamientos.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
return true;
#endregion
aca estan las funciones para agregar elementos a tu datagridview
Código:
public static DataGridViewTextBoxColumn dgvtbAgregaTexBox(string sDataPropertyName, string sName, string sHeader)
{
DataGridViewTextBoxColumn Tbx = new DataGridViewTextBoxColumn();
Tbx.DataPropertyName = sDataPropertyName;
Tbx.Name = sName;
Tbx.HeaderText = sHeader;
return Tbx;
}
public static DataGridViewComboBoxColumn CreateComboBoxWithEnums(DataTable dttDatosCombo, string sValueMember, string sDisplayMember, string sHeaderText, string sDataPropertyName)
{
DataGridViewComboBoxColumn Combo = new DataGridViewComboBoxColumn();
Combo.DataSource = dttDatosCombo;
Combo.ValueMember = sValueMember;
Combo.DisplayMember = sDisplayMember;
Combo.HeaderText = sHeaderText;
Combo.DataPropertyName = sDataPropertyName;
return Combo;
}
public static DataGridViewCheckBoxColumn dgvtbAgregaCheckBox(string sHeader, string sName)
{
DataGridViewCheckBoxColumn Chx = new DataGridViewCheckBoxColumn();
Chx.HeaderText = sHeader;
Chx.Name = sName;
return Chx;
}
fijate que para cada columna de tu datagridview, puedes especificar si estara o no visible, si podra ser o no editable, etc.
despues todo lo que tienes que hacer, es recorrer tu datagridview, y revisar si el checkbox esta ""encendido"" y realizar las acciones de eliminacion, o de edicion, o simplemente crear un nuevo elemento con el metodo add sobre el datatable asociado al datagridview (ojo en el datatable no en datagridview).
saludos
plch