作者TeemingVoid (TeemingVoid)
看板C_Sharp
標題Re: [問題] GridView按鈕按下後無法產生RowCommand
時間Fri Jan 20 00:30:19 2012
※ 引述《epola (Epola)》之銘言:
: 請問各位高手,
: 最近我新學GridView遇到一個問題,
: 當在GridView中加入Button時 (commandname沒輸入)
: 由設計頁面去點選Button時,並不會主動生成
: void xxxGridView_RowCommand(Object sender, GridViewCommandEventArgs e){略}
: 因為我需要取得目前取得的button屬於哪一個row
: 卻都會產生
: void xxxGridView_SelectedIndexChanged(Object sender, EventArgs e)
不論是在 GridView 裏頭的哪一個按鈕,也不論是在 GridView 的哪一個部分,只要
是在 GridView 上頭點兩下,產生的預設事件程序就是 SelectedIndexChanged 事件。
: 而若是自行加上
: <asp:GirdView ID="GirdView1" runat="server" OnRowCommand="xxxGridView_RowCommand">
: </asp:GirdView>
: 還是會出現錯誤訊息。
: 不知道是否有哪個步驟出現錯誤 ?
建議您這麼做試試看:
1. 先點一下設計畫面的 GridView
2. 再點一下右下角的「屬性」視窗的「事件」按鈕(圖面像一道閃電)。
(按下功能鍵 F4 可顯示「屬性」視窗)
3. 在事件表中,點兩下 RowCommand 的輸入方塊,這樣就可產生出事件處理程序。
另外,你的按鈕的 CommandName 最好還是設一下比較好,因為,切換頁次、
排序、編輯、更新、取消等等這些 GridView 的 LinkButton 也都會觸發
RowCommand 事件,可透過 CommandName 分辨是否是你的按鈕 Clicked。
最後,如何找到「哪一個Row」的程式寫法如下,一併提供給您參考,希望會有幫助: :)
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "btnXXX")
{
// iRow 即是該列的編號
int iRow = Convert.ToInt32(e.CommandArgument);
// string sData = GridView1.Rows[iRow].Cells[1].Text
// ...
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.41.100.238
→ TeemingVoid:PO出後才發現兩人同時回文,唉,我打字太慢了... :p 01/20 00:34
→ TeemingVoid:DeepSix的內容比較簡明扼要! ^^ 01/20 00:36
→ TeemingVoid:因為還差 7 篇文章才能在某一版推文, 01/20 00:39
→ TeemingVoid:內容也有多補充一點,所以,我就厚臉皮不刪文 ;) 01/20 00:40
推 brian90191:推這一篇,我本來要回跟你一模一樣的東西 ~"~ 01/20 00:47
→ brian90191:要觸發gridview的自訂按鈕最好還是設定一下CommandName 01/20 00:48
→ brian90191:也可以參考一下MSDN的這篇文章 01/20 00:50
推 kevin888:簡單明了 01/20 10:33
→ epola:謝謝各位的說明,原來是我忘了增加事件 ! 01/23 23:57
→ glennchen:QQQQQQQQQQQQQQQQ 01/24 00:34