[ASP.NET] FindControl 找尋控制項

摘要:[ASP.NET] FindControl 找尋控制項

在網頁中要找到.net控制項有很多種方法,
所謂的.net控制項,簡單一點就是屬於.net的一些元件,
比方說 傳統的HTML為 測試 ,<input type="textbox" id="test">測試</input>
.net的控制項就為 ,<asp:textbox id = "test" runat ="server" text="測試"></textbox>
為了要找到這些控制項,我們可以用jQuery,如: $('#test')等方法,
但.net也提供了一個函式就是findcontrol(id),
舉個範例來說:
dim box as textbox
box = me.findcontrol("test") '在此就可以將test的那個控制項導向我們宣告textbox型態的box變數,
response.write(box.text) '就可以列印出"測試",

我想這是很多初學者都會的範例,但很多人應該都會遇到一個問題,
就是當控制項在容器裡面,這樣的findcontrol就會找不到想要找的id,
例如:
<asp:Repeater id="myRepeaterPlain" runat="server">
  <ItemTemplate>
     <asp:textbox id = "test" runat ="server" text="測試"></textbox>
  </ItemTemplate>
</asp:Repeater>
這時直接 box = me.findcontrol("test"),是抓不到的,
其實很簡單,只要repeater.item(0).findcontrol("test")就可以了,如果是C#要改成item[0],
repeater.item(0).findcontrol("test")的意思是找在這個repeater中第一個id叫做test的item,
真的很好用,但是記得如果要在Repeater中使用<%# Eval() %>或<%# Bind() %>這類的bind函數,
記得text=''要用單引號,別使用test=""