Hi Elmo,
ButtonField automatically puts the index to CommandArgument property of the
button. Now, because you changed it to TemplateField you are responsible for
binding the value manually yourself:
<asp:GridView runat="server" ID="MyGrid" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Button runat="server" ID="btn"
CommandName="MyCustomCommand"
CommandArgument='<%# Container.DataItemIndex
%>' Text="Click Me" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
And the vb.net code behind:
Protected Sub MyGrid_RowCommand(ByVal sender As Object, _
ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs ) _
Handles MyGrid.RowCommand
If e.CommandName = "MyCustomCommand" Then
Dim index As Integer = Convert.ToInt32(e.CommandArgument)
Dim row As GridViewRow = MyGrid.Rows(index)
End If
End Sub
Hope it helps
--
Milosz
"Elmo Watson" wrote:
I've converted a buttonfield to a TemplateField with a button in it
Previously, in the Rowcommand, to identify the row when the ButtonField was
clicked, I had this code:
Dim index As Integer = Convert.ToInt32(e.CommandArgument)
Dim row As GridViewRow = MyGrid.Rows(index)
However, with the new TemplateField (with a button in the TemplateField), in
the RowCommand, it does not understand 'e.CommandArgument'
I get the error that the "input string was not in the correct format"
What am i missing here?