摘要:[C#][ASP.Net]找回TextBox所屬的GridView
文章標題有點不好下,主要的意思是說在GridView中的樣板有放置一個或多個TextBox,當觸發TextBox的TextChanged事件時,有時候我們需要一些和GridView相關的訊息(例如RowIndex甚或整個GridView),此時該如何取得我們需要的訊息呢?
簡單兩行即可搞定:
1
protected void TextBox_TextChanged(object sender, EventArgs e)
2
{
3
GridViewRow gvr = (GridViewRow)(((TextBox)sender).Parent).Parent;
4
GridView gv = (GridView)(gvr.Parent).Parent;
5
}

2

3

4

5

第3行取得了GridViewRow就可以取得RowIndex,譬如gvr.RowIndex;第四行可以讓你取得TextBox所"駐"的整個GridView。
套一句常說的話:有了GridView,天下還不都是你的了嗎?
7/21/2009 更新:
感謝眾網友提供的意見,首先把之前文章沒講清楚的環境補充完整。(順便讓大家練習一下通靈...)
情境:當畫面上有多於2個GridView control,而多個TextBox共享一個TextChanged事件的時候。
目的:判別被觸發的TextBox是由哪個GridView所擁有,進而使用不同的邏輯流程。
網友kim提供了使用NamingContainer屬性的方式如下


如果只要GridView的話

此法更簡單也省卻多層尋找parent的麻煩。
PS:不只TextBox,所有包在GridView裡面的物件都可以這樣找。