最近在用GridView的時候用到FindControl()在TemplateField中發現總是Find不到,在網上搜索了一下,發現很多朋友跟我遇到的問題一樣,而且網上很多人的解決方法不是很好,我自己總結了一下:
對於在RowDataBound中Find,可以用if (e.Row.RowType == DataControlRowType.DataRow)來限制Find的範圍,因爲Find默認是在HeaderTemplate中找,如果不限定範圍,在HeaderTemplate中找不到,自然就返回null,然後就出錯了,DataControlRowType枚舉中的DataRow確定是數據行.
另一個是在RowCommand中,我發現遇到這個問題的朋友貌似比上一個要多,在RowCommand中,如果使用GridView默認的模式,e.CommandArgument自動棒定爲該行的Index,這時候只要指定gridview1.Rows[Convert.ToInt32(e.CommandArgument)].FindControl("xxx")就可以了,但是如果轉化爲Template,e.CommandArgument並不會自動綁定任何值,需要手動綁定,可以在<ItemTemplate></ItemTemplate>手動寫CommandArgument="<%# ((GridViewRow) Container).RowIndex %>",把這個行的 Index綁定綁定到該e.CommandArgument就可以了.很多初學者在這裏不明白爲什麼要這麼做,其實我也是初學者,簡單的說一下,就是行是根據數據循環的,每一行都有同樣的控件,如果不指定行的Index,簡單的寫gridview1.findcontrol("xxx"),IDE並不知道要找哪個控件所以要指定行號.
針對初學者,談談關於GridView中的FindControl問題
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Linux基本操作命令
wbzjacky
2019-02-24 13:12:38
真實的模擬***綜合實驗
wbzjacky
2019-02-24 13:12:37
三層交換機的HSRP、vlan、端口聚合
wbzjacky
2019-02-24 13:12:37
HSRP和二層交換機的端口聚合、vlan
wbzjacky
2019-02-24 13:12:37
如果同事暗中傷害你,應該怎麼辦?
這個饅頭有餡
2019-02-24 13:59:08
職場中,抱怨越多的員工,越被領導瞧不起!
這個饅頭有餡
2019-02-24 13:59:08
老程序員被裁,應屆生卻能月薪 1.3 萬?這你能忍?
前端高達
2019-02-24 13:48:04
遇到到處蹭吃卻從不請客吃飯的主怎麼辦?
樑軍年
2019-02-24 13:26:35
高標準機房綜合配線安裝
wbzjacky
2019-02-24 13:12:38
IPsec ***實驗
wbzjacky
2019-02-24 13:12:37
CISCO路由AAA的Easy ***
wbzjacky
2019-02-24 13:12:37
CISCO訪問控制列表 企業網絡管理的必殺技
wbzjacky
2019-02-24 13:12:37