台灣最大程式設計社群網站
線上人數
1998
 
會員總數:245248
討論主題:189105
歡迎您免費加入會員
討論區列表 >> ASP.NET >> GridView 下,讓button隱藏
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
GridView 下,讓button隱藏
價值 : 50 QP  點閱數:292 回應數:9

樓主

kai
門外漢
0 10
271 13
發送站內信


我想判斷



if(true){

Master.FindControl("ContentPlaceHolder1").FindControl("GridView1").FindControl("ReviewBut").Visible = false;

}




以上是兩種不同寫法,但都出現 "System.NullReferenceException: '並未將物件參考設定為物件的執行個體'"

再請請大神幫幫忙, 謝謝 !!



搜尋相關Tags的文章: [ C# ] , [ GridView ] ,
本篇文章發表於2019-06-28 15:36
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

小魚
檢舉此回應
if(true)是在做什麼 XD

很明顯就是找不到控制項,
先去看哪個控制項找不到,
然後去問古先生.
本篇文章回覆於2019-06-28 17:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
最有價值解答

topcat
捐贈 VP 給 topcat 檢舉此回應
FindControl,必須是由物件的Naming Container來進行FindControl

在GridView中,每個Row中的Button
這些Button的Namming Container是GridViewRow,而不是GridView

您的問題出在這裡

^_^
本篇文章回覆於2019-07-01 16:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

kai
檢舉此回應
二樓版主您好

所以是要在

修改前:
Button ReviewBut = (Button)GridView1.FindControl("ReviewBut");
修改後:
Button ReviewBut = (Button)GridView1.Row[x].FindControl("ReviewBut");

加入Row[x] 這樣嗎?

謝謝!!
本篇文章回覆於2019-07-03 08:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
如果您是要隱藏特定某一筆的按鈕
如您所描述的這樣子

如果您是想隱藏所有每一筆
您可以在
GirdView的RowDataBound事件中
透過
e.Row.RowType == DataControlRowType.DataRow
然後
e.Row.FindControl,去取得按鈕

^_^
本篇文章回覆於2019-07-03 09:37
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

kai
檢舉此回應
我後來改成




出現

System.InvalidCastException: '無法將型別 'System.Web.UI.WebControls.GridView' 的物件轉換為型別 'System.Web.UI.WebControls.GridViewRow'。'
本篇文章回覆於2019-07-03 09:41
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

kai
檢舉此回應
對的 我是想要印出每一筆時 判斷是否隱藏BUTTON
本篇文章回覆於2019-07-03 09:43
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
不錯的參考

topcat
捐贈 VP 給 topcat 檢舉此回應
GridViewRow gvr = (GridViewRow)ContentPlaceHolder1.FindControl("GridView1");


ContentPlaceHolder的用途
他是頁面搭配MasterPage的使用

在ContentPlaceHolder中的內容,理論上應該不算『物件中的物件』
直接用
this.GridView1就可以取得
甚至this可以省略
變成GirdView1就可以取得

----
GridView1是GridView的物件
GridViewRow是GridView物件中的GridViewRow

這兩者本來就不一樣,當然無法轉型態

---
另外,
發現您的狀況,似乎是『跳著學』
沒有經過循序漸進的方式學習
所以很多的『基本功』都沒有概念

就如果拿到一本降龍十八掌的武功秘輯
沒有仔細看前面說明運勁方式、呼吸方法、運氣訣竅
急著照著圖示,跟著比劃
當然就無法施展掌法的精妙之處、達不到預期的效果

如果您真想學好,
建議您找一本書,
按著書中的章節循序的把書中的範例練習過、理解過
這樣才不會有處處碰壁的感覺

加油

^_^

本篇文章回覆於2019-07-03 10:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

kai
檢舉此回應
多謝版主提醒

因為我從資料庫先撈資料到新建立的DataTable

再把DataTable和Gridview 做Gridview.DataBind()

所以我判斷button是否隱藏應該是寫在 Gridview.DataBind() 之後才能夠執行

謝謝~~ 已解決問題
本篇文章回覆於2019-07-03 11:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

topcat
捐贈 VP 給 topcat 檢舉此回應
我判斷button是否隱藏應該是寫在 Gridview.DataBind() 之後才能夠執行


小喵建議,寫在GridView的RowDataBound事件中
這個事件就是『每一筆』資料綁定完成『後』

寫在這事件中
e.Row就代表觸發事件的該Row

^_^
本篇文章回覆於2019-07-03 17:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.