| |||
Datagrid Seleccion de una sola fila Como puedo hacer para que solo se pueda seleccionar una sola fila del datagrid al hacer click sobre una celda o a traves del selector del datagrid y que no permita seleccionar varias |
| |||
![]()
Código:
1. <<Coloca este codigo en el ItemCommand del Datagrid>> Private Sub DTGCSupOrdenRetASAP_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DTGCSupOrdenRetASAP.ItemCommand <<Maneja cada caso al hacer clic en un boton de cualquier registro del DataGrid>> Select Case e.CommandName Case "BtnProcesar" <<el “BtnProcesar”Viene del Dataagrid>> <<preguntas por un valor especifico de una celda>> If e.Item.Cells(6).Text = "NO" Then <<Declaras variables de tipo string>> Dim Celda1 As String Dim Celda2 As String '<<Obtienes los valores de cada celda en la fila seleccionada,pasas como parámetro el numero de la columna del DG>> Celda1 = e.Item.Cells(0).Text Celda2 = e.Item.Cells(4).Text Else '<<Envias mensaje en caso contrario>> End If Case "BtnCancelar" '<<En caso de que quieras hacer otra accion como cancelar>> Dim Celda1 As String Celda1 = e.Item.Cells(0).Text End Select 2. Otra manera de Hacerlo, aquí extraes el row del Dataset Select Case e.CommandName Case "Aceptar" Dim Var As String 'Devuelve el indice de pagina y fila que ha sido seleccionada 'Extraigo el valor del DataGrid VarPagIndice = DG.CurrentPageIndex * 10 + e.Item.ItemIndex 'Obtener la fila seleccionada DG.SelectedIndex = e.Item.ItemIndex Adpt.Fill(Ds1) Var= Ds1.Tables("table1").Rows(VarPagIndice).Item("nombredecampo") Creo el Command Dim cmd As New SqlCommand cmd.CommandType = CommandType.StoredProcedure cmd.CommandText = "Spc " cmd.Connection = Cn 'Paso los Parametros al SPC cmd.Parameters.Add("@Param") 'Ejecutar el procedure If Cn.State.Open Then Cn.Close() Cn.Open() Else Cn.Open() End If cmd.ExecuteNonQuery() 'Limpia la tabla del DS Ds.Tables("table1").Rows.Clear() Adpt.Fill(Ds1) DG.DataBind() End Select |
| |||
Pues ahora mismo no se me ocurre ninguna, y encima termina de desinstalar el VB2003 :(. Si podeis hacerme una captura de pantalla de las propiedades de un DataGrid supongo que podria deciros que propieda es la que buscais. |
| ||||
Como dice moNTeZIon, NO existe esa propiedad para la clase Datagrid (en todas versiones del .NET Framework, si no me equivoco), lo que se podría hacer es jugar con el evento MouseDown y la clase HitTestInfo. Saludos |
| |||
Mira el cuarto post y verás como si que existe esa propiedad. Aqui teneis otra captura, señalando el ontrol que utilizo y sus propiedades (ya se que es en 2005, pero estoy convencido de que lo he utilizado en 2003 igualmente)
Código:
http://www.bilder-hosting.de/uploads/bb001ca5b5.jpg |
| |||
Ahora he conseguido poder seleccionar una sola fila pero solo cuando doy click en la fila que quiero pero puedo seguir seleccionando varias filas con el teclado y eso debo bloquear tambien alguna solucion definitiva?? |
| ||||
Dado que no dispones de la propiedad para establecer ese comportamiento en el control, yo investigaría por el camino que te comenta xknown, cuatro posts más para arriba. En un evento MouseDown del datagrid podrías comprobar cuantas filas hay seleccionadas, y entonces ya lo tendrías, segun las que estén seleccionadas, actuas en consecuencia, desseleccionandolas, o como más te convenga. Suerte! P.S.: Por cierto, cómo seleccionas una fila del datagrid con el teclado?
__________________ ..:: moNTeZIon ::.. |