how to reach linkbutton programmatically?

  • Thread starter Thread starter Ben
  • Start date Start date
B

Ben

Hi,

i try to reach in code-behind a linkbutton embedded into an ItemTemplate
element of a gridview.
But i'm stuck ....

<Columns>
<asp:TemplateField><ItemTemplate>
<asp:LinkButton ID="lb1" runat="server" OnClientClick="return
confirm(Sure?');"
CommandName="Delete" Text="go" >
</asp:LinkButton>
</ItemTemplate></asp:TemplateField>
....

my code:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
Dim tm As TemplateField
Dim it As ITemplate
Dim lk As LinkButton
tm = GridView1.Columns.Item(0)
it = tm.ItemTemplate
lk=???

Thanks for help
Ben
 
Hi,

see my blog post for background information

Understanding the naming container hierarchy of ASP.NET databound controls
http://aspadvice.com/blogs/joteke/a...-hierarchy-of-ASP.NET-databound-controls.aspx

Answer is that you need to loop through GridView's Rows, use FindControl
against the row to locate the LinkButton. that is if you need to access them
after they are (the grid is) being bound.

However if you need to do something like attach event handler to the
LinkButton, you can (and you should) do it in RowCreated event of GridView
which is raised for every row, when they are created (instantiated). And if
you need to set something based o the data to which GridView is bound, you'd
use RowDataBound event which also is raised for every row but only when
GridView's DataBind is called.
 
Thanks for replying

This is my attempt:

Dim lk As LinkButton
Dim gr As GridViewRow
For Each gr In GridView1.Columns
lk = CType(gr.FindControl("lb1"), LinkButton)
lk.Visible = False
Next

But i get: Unable to cast object of type
'System.Web.UI.WebControls.TemplateField' to type
'System.Web.UI.WebControls.GridViewRow'
 
i found it:

For Each gr In GridView1.Rows







Teemu Keiski said:
Hi,

see my blog post for background information

Understanding the naming container hierarchy of ASP.NET databound controls
http://aspadvice.com/blogs/joteke/a...-hierarchy-of-ASP.NET-databound-controls.aspx

Answer is that you need to loop through GridView's Rows, use FindControl
against the row to locate the LinkButton. that is if you need to access
them after they are (the grid is) being bound.

However if you need to do something like attach event handler to the
LinkButton, you can (and you should) do it in RowCreated event of GridView
which is raised for every row, when they are created (instantiated). And
if you need to set something based o the data to which GridView is bound,
you'd use RowDataBound event which also is raised for every row but only
when GridView's DataBind is called.

--
Teemu Keiski
AspInsider, ASP.NET MVP
http://blogs.aspadvice.com/joteke
http://teemukeiski.net
 
Back
Top