Bagaimana Kaedah FindControl Berfungsi Apabila Mencari Kawalan Di Dalam GridView TemplateField (Khususnya, ItemTemplate)?
Dalam konteks ASP. NET, kaedah FindControl membenarkan pembangun mencari kawalan khusus dalam hierarki kawalan. Apabila digunakan dengan ItemTemplate GridView TemplateField, ia membolehkan akses kepada kawalan yang ditakrifkan dalam templat.
Kemas Kini Soalan dengan Kod:
Kod yang disediakan mempamerkan GridView dengan berbilang bersarang TemplateFields:
<asp:GridView ID="grvYourOpportunities"...> <Columns> <asp:TemplateField HeaderText="H"> <ItemTemplate> <asp:HyperLink runat="server" ID="hlPlus" ImageUrl="~/plus.gif"></asp:HyperLink> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView>
Masalah:
Kod ini bertujuan untuk mengakses dan memanipulasi kawalan HyperLink ("hlPlus") yang ditakrifkan dalam ItemTemplate of the "H" TemplateField . Walau bagaimanapun, menggunakan kaedah FindControl tidak membuahkan hasil yang diharapkan.
Jawapan:
Untuk berjaya mengakses kawalan dalam ItemTemplate TemplateField, anda boleh menggunakan kaedah FindControlRecursive, yang secara rekursif mencari hierarki kawalan untuk ID kawalan yang ditentukan. Berikut ialah contoh:
protected void grvYourOpt_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { HyperLink hlPlus = e.Row.FindControlRecursive("hlPlus") as HyperLink; if (hlPlus != null) { // Your code to manipulate the HyperLink control here... } } }
Kaedah FindControlRecursive memastikan carian yang teliti walaupun dalam hierarki templat bersarang, mengesan kawalan yang diingini dengan berkesan.
Atas ialah kandungan terperinci Bagaimana Menggunakan FindControl dengan Berkesan untuk Mengakses Kawalan Dalam ItemTemplate GridView?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!