asp.net gridview的Rowcommand命令中獲取行索引的方法總結(jié)
更新時間:2010年05月20日 01:05:05 作者:
asp.net gridview的Rowcommand命令中獲取行索引的方法總結(jié),需要的朋友可以參考下。
一、通過命令源獲取當前行索引。
方法比較多, GridView 的 Command 事件中無法象 DataGrid 那樣直接獲取行,
法1,
GridViewRow drv = ((GridViewRow)(((Button)(e.CommandSource)).Parent.Parent));//CommandSource 引起事件的命令源,(疑問,根據(jù)MSDN說的是GridView,如果這樣的話這樣操作是錯誤的,但我得到的確實正確的,那說明得到的是BUtton控件,等待以后查證).
drv.RowIndex
二、通過在RowDataBound事件中把行索引綁定到控件的CommandArgument
由于事件參數(shù) GridViewCommandEventArgs 并不公開Row屬性指示當前行,(DataGridCommandEventArgs 公開 Item 屬性以獲取當然 DataGridItem,不知 ASP.NET Team 是如何考慮這一設(shè)計的),因此需要一點“技巧”來獲取此屬性。
其實這是一個早就已知的問題,鑒于CSDN里面每每有人疑惑,這里稍微整理下,便于參閱:
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
int rowIndex = -1;
GridViewRow row = null;
switch (e.CommandName) ...{
case "Command1": // 模板列
// 對于模板列內(nèi)的按鈕,我們需要顯示綁定行索引到按鈕的 CommandArgument 屬性
// 以獲取觸發(fā)事件的行信息
rowIndex = Convert.ToInt32(e.CommandArgument);
row = GridView1.Rows[rowIndex];
DisplayInfo(row, e.CommandName);
// your codes
//
break;
case "Command2": // 模板列
// 同樣處于模板列中,但不采用 Command1 方式,而是通過 NamingContrainer 屬性
// 直接獲取當前的 GridViewRow
Control cmdControl = e.CommandSource as Control; // 表示觸發(fā)事件的 IButtonControl,保持統(tǒng)一性并便于后續(xù)操作,我們這里直接轉(zhuǎn)化為控件基類 Control
row = cmdControl.NamingContainer as GridViewRow;
DisplayInfo(row, e.CommandName);
// your codes
//
break;
case "Command3": // 綁定列
// 對于 ButtonField 列,數(shù)據(jù)源控件內(nèi)部自動以適當?shù)捻椝饕堤畛?CommandArgument 屬性。
// 而無需我們顯示綁定其 CommandArgument 屬性
// 注意,我們這里無法采用 Command2 的方式,對于 BUttonField 觸發(fā)的事件,
// GridViewCommandEventArgs.CommandSource 表示的包含此按鈕的 GridView
rowIndex = Convert.ToInt32(e.CommandArgument);
row = GridView1.Rows[rowIndex];
DisplayInfo(row, e.CommandName);
// your codes
//
break;
}
}
方法比較多, GridView 的 Command 事件中無法象 DataGrid 那樣直接獲取行,
法1,
GridViewRow drv = ((GridViewRow)(((Button)(e.CommandSource)).Parent.Parent));//CommandSource 引起事件的命令源,(疑問,根據(jù)MSDN說的是GridView,如果這樣的話這樣操作是錯誤的,但我得到的確實正確的,那說明得到的是BUtton控件,等待以后查證).
drv.RowIndex
二、通過在RowDataBound事件中把行索引綁定到控件的CommandArgument
由于事件參數(shù) GridViewCommandEventArgs 并不公開Row屬性指示當前行,(DataGridCommandEventArgs 公開 Item 屬性以獲取當然 DataGridItem,不知 ASP.NET Team 是如何考慮這一設(shè)計的),因此需要一點“技巧”來獲取此屬性。
其實這是一個早就已知的問題,鑒于CSDN里面每每有人疑惑,這里稍微整理下,便于參閱:
復制代碼 代碼如下:
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
int rowIndex = -1;
GridViewRow row = null;
switch (e.CommandName) ...{
case "Command1": // 模板列
// 對于模板列內(nèi)的按鈕,我們需要顯示綁定行索引到按鈕的 CommandArgument 屬性
// 以獲取觸發(fā)事件的行信息
rowIndex = Convert.ToInt32(e.CommandArgument);
row = GridView1.Rows[rowIndex];
DisplayInfo(row, e.CommandName);
// your codes
//
break;
case "Command2": // 模板列
// 同樣處于模板列中,但不采用 Command1 方式,而是通過 NamingContrainer 屬性
// 直接獲取當前的 GridViewRow
Control cmdControl = e.CommandSource as Control; // 表示觸發(fā)事件的 IButtonControl,保持統(tǒng)一性并便于后續(xù)操作,我們這里直接轉(zhuǎn)化為控件基類 Control
row = cmdControl.NamingContainer as GridViewRow;
DisplayInfo(row, e.CommandName);
// your codes
//
break;
case "Command3": // 綁定列
// 對于 ButtonField 列,數(shù)據(jù)源控件內(nèi)部自動以適當?shù)捻椝饕堤畛?CommandArgument 屬性。
// 而無需我們顯示綁定其 CommandArgument 屬性
// 注意,我們這里無法采用 Command2 的方式,對于 BUttonField 觸發(fā)的事件,
// GridViewCommandEventArgs.CommandSource 表示的包含此按鈕的 GridView
rowIndex = Convert.ToInt32(e.CommandArgument);
row = GridView1.Rows[rowIndex];
DisplayInfo(row, e.CommandName);
// your codes
//
break;
}
}
相關(guān)文章
ASP.NET?MVC5網(wǎng)站開發(fā)之用戶資料的修改和刪除3(七)
這篇文章主要為大家詳細介紹了ASP.NET?MVC5網(wǎng)站開發(fā)之用戶資料的修改和刪除,感興趣的小伙伴們可以參考一下2016-08-08
Asp.net把圖片存入數(shù)據(jù)庫和讀取圖片的方法
網(wǎng)上關(guān)于ASP.NET上傳圖片到數(shù)據(jù)庫的資料非常多,常用的如下:存儲圖片類型數(shù)據(jù)有以下幾種方式2013-07-07
asp.net點選驗證碼實現(xiàn)思路分享 (附demo)
這篇文章主要介紹了asp.net點選驗證碼實現(xiàn)思路分享 (附demo),具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-01-01
使用vs2019加.net core 對WeiApi的創(chuàng)建過程詳解
這篇文章主要介紹了使用vs2019加.net core 對WeiApi的創(chuàng)建,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07
asp.net中關(guān)于dropdwonlist無法獲得值問題
用dropdwonlist綁定了一個數(shù)據(jù)源做選擇,但是當提交時,用控件屬性無法獲得相應(yīng)的值,打印出來每次都是顯示的第一個值2011-11-11
.NET?9?new?features-Microsoft.ML.Tokenizers?庫(文本標記化功能)
文章介紹了.NET9中引入的Microsoft.ML.Tokenizers庫,這是一個強大的文本標記化工具,支持多種標記化算法,適用于自然語言處理任務(wù),庫主要包含Tokenizer、Model、Bpe等類,并提供了詳細的代碼示例,感興趣的朋友一起看看吧2025-01-01

