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

