2010-04-08 65 views
26

Quiero habilitar solo dos columnas en DataGridview para poder editar. No se les debe permitir editar a los demás. Además, no estoy vinculando directamente a la fuente de datos; Voy a hacer algo como esta manera¿Cómo se permite editar solo una columna en particular en datagridview en la aplicación de Windows?

DataTable dt = new DataTable(); 
dt.Columns.Add("Email"); 
dt.Columns.Add("email1"); 
for (int i = 0; i < 5; i++) 
{ 
    DataRow dr = dt.NewRow(); 
    dr["Email"] = i.ToString(); 
    dr["email1"] = i.ToString() + "sdf"; 
    dt.Rows.Add(dr); 
} 
BindingSource bs = new BindingSource(); 
bs.DataSource = dt; 
dataGridView1.DataSource = bs; 

Así que la propiedad debería establecer, que permitirá sólo una columna decir correo electrónico (en el anterior ejemplo) para ser editable.

+0

¿Qué plataforma? WinForms? – SLaks

Respuesta

35

Establezca la propiedad ReadOnly de las otras columnas en true.

(Es probable que tenga que recorrer la colección Columns y utiliza una instrucción if)

19
foreach (DataGridViewColumn dc in dataGridViewX1.Columns) 
{ 
     if (dc.Index.Equals(0) || dc.Index.Equals(1)) 
     { 
      dc.ReadOnly = false; 
     } 
     else 
     { 
      dc.ReadOnly = true; 
     } 
} 
18
dataGridView1.ReadOnly = false; 
dataGridView1.Columns[1].ReadOnly = true; 
dataGridView1.Columns[2].ReadOnly = true; 

aquí la primera columna (índice 0) será editable.

Cuestiones relacionadas