Foros del Web » Programación para mayores de 30 ;) » .NET »

¿Cómo seleccionar Index en DataGridViewComboBoxCell?

Estas en el tema de ¿Cómo seleccionar Index en DataGridViewComboBoxCell? en el foro de .NET en Foros del Web. Busqué y busqué por Internet, encontré muchas personas con el mismo problema que yo, pero ninguna con la solución La pregunta es simple... ¿Cómo obtener ...
  #1 (permalink)  
Antiguo 10/03/2007, 14:42
Avatar de SeriketZu  
Fecha de Ingreso: septiembre-2006
Ubicación: Mendoza, Argentina
Mensajes: 78
Antigüedad: 17 años, 8 meses
Puntos: 0
Pregunta ¿Cómo seleccionar Index en DataGridViewComboBoxCell?

Busqué y busqué por Internet, encontré muchas personas con el mismo problema que yo, pero ninguna con la solución

La pregunta es simple... ¿Cómo obtener y establecer el SelectedIndex de un DataGridViewComboBoxCell ?

Tengo por ejemplo el siguiente código:
Código:
			DataTable dt = new DataTable();
			DataColumn dc1 = new DataColumn("Id", Type.GetType("System.Byte"));
			DataColumn dc2 = new DataColumn("Nombre", Type.GetType("System.String"));
			dt.Columns.Add(dc1);
			dt.Columns.Add(dc2);
			DataRow dr1 = dt.NewRow();
			DataRow dr2 = dt.NewRow();
			DataRow dr3 = dt.NewRow();
			dr1["Id"] = 0;
			dr2["Id"] = 1;
			dr3["Id"] = 2;
			dr1["Nombre"] = "Libre";
			dr2["Nombre"] = "Regular";
			dr3["Nombre"] = "Aprobada";
			dt.Rows.Add(dr3);
			dt.Rows.Add(dr2);
			dt.Rows.Add(dr1);
			DataGridViewComboBoxColumn co = new DataGridViewComboBoxColumn();
			co.HeaderText = "Estado";
			co.Name = "Estado";
			co.Width = 78;
			co.DataSource = dt;
			co.DisplayMember = "Nombre";
			co.ValueMember = "Id";
			co.FlatStyle = FlatStyle.Flat;
			dataGridView1.Columns.Add(co);
			dataGridView1.Columns[6].ReadOnly = false;
Hasta ahí todo bien, al dataGridView1 que tengo con 5 columnas y 52 filas se le agrega una sexta columna con combobox en cada celda, las cuales tienen 3 opciones para elegir.
Ahora el problema está en que quiero establecer el item seleccionado en cada combobox (por ejemplo, para algunos el 0, para otros el 1 y para otros 2).
Intento hacerlo con el siguiente código pero no pasa absolutamente nada:
Código:
		private void setComboBoxCellsValues()
		{
			DataGridViewComboBoxCell dd;
			foreach (DataGridViewRow ro in dataGridView1.Rows)
			{
				dd = (DataGridViewComboBoxCell)ro.Cells["Estado"];
				if (ro.Cells["CódigoEstado"].Value != null)
				{
					dd.Value = (Byte)ro.Cells["CódigoEstado"].Value;
					//ro.Cells["Estado"].Value = 2;
					//dd.Value = dd.Items[2];
				}
			}
		}
¿Alguien me podría decir cómo puedo hacer para seleccionar el index de cada comboboxcell?
Espero que puedan ayudarme, saludos.
  #2 (permalink)  
Antiguo 30/07/2009, 08:24
 
Fecha de Ingreso: julio-2009
Mensajes: 1
Antigüedad: 14 años, 9 meses
Puntos: 0
Sonrisa Respuesta: ¿Cómo seleccionar Index en DataGridViewComboBoxCell?

Hola podrias hacer lo que hice yo:
Usa este codigo como referencia, para asignar el metodo a cada combobox de la columna y cuando seleccionen el item asigna los valores que necesites del combo en una columna auxiliar , espero te sirva
Yo necesito obtener la columna Mail del Datasource que tengo dentro cada combobox de la columna Usuario.

Private Sub dtgComentarios_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlSho wingEventArgs) Handles dtgComentarios.EditingControlShowing
If dtgComentarios.CurrentCell.ColumnIndex = dtgComentarios.Columns("Usuario").Index Then
' Check box column
Dim comboBox As ComboBox = e.Control
AddHandler comboBox.SelectedIndexChanged, New EventHandler(AddressOf comboBoxUsuario_SelectedIndexChanged) 'creo el evento selectedindexchanged
End If
End Sub

Sub comboBoxUsuario_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
'= CType(sender, ComboBox).SelectedIndex
'MessageBox.Show("Selected Index = " + selectedIndex.ToString)
Dim cmb As ComboBox = CType(sender, ComboBox)
Dim selectedIndex As Integer = cmb.SelectedIndex
If selectedIndex >= 0 Then
Me.dtgComentarios.CurrentRow.Cells("Mail").Value = CType(cmb.DataSource, DataTable).Rows(cmb.SelectedIndex).Item("Email")
End If
End Sub

Última edición por Moukir; 30/07/2009 a las 08:34
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:12.