how to reach linkbutton programmatically?

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
 
T

Teemu Keiski

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.
 
B

Ben

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'
 
B

Ben

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,767
Messages
2,569,572
Members
45,045
Latest member
DRCM

Latest Threads

Top