Nagendra Bhat
Nagendra Bhat

Reputation: 43

Get Column value 'TemplateField' of Each row in Button Click event

I have created a gridview using TemplateField. And Added Add Button And this redirects to other page and i want to get the one column value of row.

Here is the code -

<Columns>
<asp:TemplateField HeaderText="Accession ID">
    <ItemTemplate>
        <asp:Label Text='<%# Eval("AccessionID") %>' runat="server"></asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
      <asp:TextBox ID="txtFirstName" Text="Hello" runat="server" />
    </EditItemTemplate>
    <FooterTemplate>
       <asp:TextBox ID="txtFirstNameFooter" runat="server" />
    </FooterTemplate>
</asp:TemplateField>

......

<asp:TemplateField HeaderText="Add Container">
   <ItemTemplate>
      <asp:Button ID="btnAddContainer" runat="server" CommandName="" Text="Add Container" CommandArgument='<%# Eval("AccessionID") %>' OnClick="ContainerforAccession" class="btn btn-primary btn-md" />
   </ItemTemplate>
</asp:TemplateField>

CS Code -

protected void ContainerforAccession(object sender, EventArgs e)
{
   Button btn = (Button)sender;
   GridViewRow row = (GridViewRow)btn.NamingContainer;
}

I have this code with me. I want to get first column value (AccessionID) in my case in every button click of the Grid.

I have tried across multiple solutions. But unfortunately, we have the answers for 'asp:BoundField' Implementation. I am looking for 'asp:TemplateField'

Please let me know if i need to convert to asp:BoundField. If so, How can the above design can be changed - Binding Text='<%# Eval("AccessionID") %> to Textbox.

Thanks in advance. Looking for a solution.

Upvotes: 0

Views: 731

Answers (2)

Nagendra Bhat
Nagendra Bhat

Reputation: 43

Changed All the Template fields to Bound-Fields and in cs code -

int AccessionID = Int32.Parse((sender as Button).CommandArgument);

Solved my issue !

Upvotes: 0

VDWWD
VDWWD

Reputation: 35514

Change the OnClick of the button to OnCommand. Then you have access to the CommandEventArgs.

<asp:Button ID="btnAddContainer" OnCommand="ContainerforAccession" 

protected void ContainerforAccession(object sender, CommandEventArgs e)
{
    string AccessionID = e.CommandArgument.ToString();
}

Upvotes: 1

Related Questions