Si tienes un GridView y quieres realizar una acción personalizada, basta con agregar una columna ButtonField, y pasar el iddel registro que seleccionaron.
El GridView:
- <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="ObjectDataSource1" AllowPaging="True" AllowSorting="True" CellPadding="0" PageSize="30" GridLines="None" Width="100%" DataKeyNames="id">
- <Columns>
- <asp:BoundField DataField="id" HeaderText="ID" InsertVisible="False" SortExpression="id" />
- <asp:BoundField DataField="status" HeaderText="Status" SortExpression="status" />
- <asp:ButtonField CommandName="ConmutarStatus" HeaderText="Conmutar status" Text="Conmutar" ButtonType="Link" />
- </Columns>
- </asp:GridView>
Nota la propiedad DataKeyNames. La establecí en id porque ese es el nombre de mi columna llave en la tabla.
Cada vez que se hace clic en la columna ButtonField, se dispara el evento RowCommand y es ahí donde debemos realizar la acción.
- Protected Sub GridView1_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GridView1.RowCommand
- If e.CommandName = "ConmutarStatus" Then
- Dim indice As Integer = Convert.ToInt32(e.CommandArgument)
- Dim id As Integer = GridView1.DataKeys(indice).Value
- 'Ahora en id tenemos el id de nuestra tabla.
- 'Podemos realizar cualquier acción con este valor.
- End If
- End Sub