DataKeyNames permite agregarle un array de campos llaves que se usarán para seleccionar un registro dentro del datatable. Al menos yo lo utilizo para hacer un select con esa llave o conjunto de llaves. Solía usar siempre solo un item para el array. Pero cuando me tocó usar más de uno, no supe hacerlo. Pero ya lo hice, jajaja :p Es sencillo, es com sigue:
Por ejemplo, cuando sólo era uno, por código yo lo llenaba así:
Me.grvResultado.DataKeyNames = New String() {Me.pNombrePrimaryKey}
Pero cuando me tocó llenar con más de uno, fue asi:
Me.grvResultado.DataKeyNames = New String() {Me.strNombrePrimaryKey, Me.strKeySecundaria}
(Sin embargo, si lo querés hacer por diseño, podes seleecionar tu gridview, ir a sus propiedades y en donde dice: "DataKeyNames", agregar los campos llaves separados por coma.)
En el evento de tu gridview RowDataBound, hay que llenar el CommandArgument
If e.Row.RowType = DataControlRowType.DataRow ThenDim lnkSeleccionar As LinkButton = CType(e.Row.Cells(0).Controls(0), LinkButton)
lnkSeleccionar.CommandArgument = Me.grvResultado.DataKeys(e.Row.RowIndex).Values(0) & "," & Me.grvResultado.DataKeys(e.Row.RowIndex).Values(1)
End If
El Values(0) es el primer campo llave, el Values(1) es segundo, y así sucesivamente. Fijate que están separados por coma.
Luego en el evento de tu gridview RowCommand, desglosas tu array de llaves.
Dim valores() As String = e.CommandArgument.ToString().Split(",")Dim valor1 As String = valores(0)Dim valor2 As String = valores(1)
Y mi Select sería así:
dt.Select(Me.strNombrePrimaryKey & "=" & valor1 & " AND " & Me.strKeySecundaria & "=" & valor2)
Happy Codding =)
No comments:
Post a Comment