![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 789789789789 ![]()
![]() |
語言:C# 各位好 如果 GridView 某列有個控制項label1 如下程式碼 可以抓到該控制項 Label label = (Label)((GridViewRow)(((WebControl)e.CommandSource).NamingContainer)).FindControl("label1"); 我的問題是 1. 從 e.CommandSource 一路轉換 WebControl,GridViewRow 最後才抓到控制項 Label 請問有沒有比較簡潔的寫法可以抓到該列某控制項? 有看過在 DataGrid 這樣寫的 所以想問是不是有較簡潔的寫法 Label label =(Label)e.Item.FindControl("label1") 2. 在aspx下 我是這樣寫 <ItemTemplate> <asp:Label ID="Label1" runat="server" Text='<%# Bind("Sno") %>'></asp:Label> </ItemTemplate> 但我上面是寫 FindControl("label1") 我發現這樣還是抓的到那個label 也就是說FindControl()裡面的名稱不分大小寫 但C#不是應該要分大小寫的嗎?為什麼這裡可以不用分? 謝謝 |
1樓 |
問題二FindControl的大小寫.. 大小寫不同應該是會抓不到 為什麼你抓的到就...不知
本篇文章回覆於2014-07-25 11:29
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
2樓
最有價值解答
Allen ![]() ![]() |
1.
請試試(我沒親自試) var label = ((Control)e.CommandSource).FindControl("label1"); 2. >>但C#不是應該要分大小寫的嗎?為什麼這裡可以不用分? 這要看FindControl()這支method裡是如何寫的
本篇文章回覆於2014-07-25 17:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
3樓
作者回應
789789789789 ![]() |
var label = ((Control)e.CommandSource).FindControl("label1");
上面這行的宣告方式 會讓label.Text出錯 錯誤訊息如下 'System.Web.UI.Control' 不包含 'Text' 的定義,也找不到擴充方法 'Text' 來接受型別 'System.Web.UI.Control' 的第一個引數 (您是否遺漏 using 指示詞或組件參考?) 所以我把他轉成這樣就可以了 Label label = (Label)((Control)e.CommandSource).FindControl("label1"); 謝謝
本篇文章回覆於2014-07-28 14:51
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
4樓 |
感謝發問&回答的朋友
這個問題很讚!很有幫助 從各位討論的關鍵字裡面,我找到微軟msdn的範例 (藉以瞭解 GridViewCommandEventArgs.CommandSource 屬性) http://msdn.microsoft.com/zh-tw/library/system.web.ui.webcontrols.gridviewcommandeventargs.commandsource(v=vs.110).aspx 學到很多,謝謝大家。
本篇文章回覆於2014-07-29 10:04
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
5樓 |
這是我改寫的範例,寫法差不多
GridView1_RowCommand事件裡面。 if (e.CommandName == "Hello") { Button BTN =(Button)e.CommandSource; GridViewRow myRow = (GridViewRow)BTN.NamingContainer; Label LB = (Label)GridView1.Rows[myRow.DataItemIndex].FindControl("Label1"); //按下按鈕之後,這一列的列數(index) Response.Write(LB.Text); }
本篇文章回覆於2014-07-29 10:42
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
6樓 |
其實我自己以前有做過,我都忘記了 :-P
GridView在 RowCommand事件中,自訂的Button 如何取出某一列(RowIndex) 的索引值。NamingContainer的入門用法 http://www.dotblogs.com.tw/mis2000lab/archive/2011/09/08/gridview_selectedindex_dataitemindex_rowcommand_2011.aspx
本篇文章回覆於2014-07-29 12:47
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
7樓 |
今天我又發現一點小差異
補一篇文章分享(謝謝各位的討論,讓我學到很多) ButtonField 與 樣板裡面的Button,導致 e.CommandSource寫法不同 http://www.dotblogs.com.tw/mis2000lab/archive/2014/07/30/gridview_e-commandsource_rowcommand_error.aspx
本篇文章回覆於2014-07-30 11:35
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
8樓 |
將
var label = ((Control)e.CommandSource).FindControl("label1"); 改成 var label = ((Control)e.CommandSource).FindControl("label1") as Label; 也是可以的
本篇文章回覆於2014-07-30 13:02
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |