1.将行按钮的CommandArgument绑定为当前行号
protected void RegInfo_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
Button btn = (Button)e.Row.FindControl("btnOk");
if (btn != null)
btn.CommandArgument = e.Row.RowIndex.ToString();
}
}
在RowCommand方法里面做button的操作
protected void RegInfo_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Reg")
{
int currentRow = Convert.ToInt32(e.CommandArgument);
if (((Button)RegInfo.Rows[currentRow].FindControl("btnOk")).Text == "注册")
{
......................
}
}
}
2.直接在button事件里面获取行号
protected void btnOk_Click(object sender, EventArgs e)
{
//行号
int row = ((GridViewRow)((LinkButton)sender).NamingContainer).RowIndex;
}
或者在RowCommand事件里面
protected void gv_Company_RowCommand(object sender, GridViewCommandEventArgs e){
if (e.CommandName == "Reg")
{
//【方法一】
GridViewRow drv = ((GridViewRow)(((LinkButton)(e.CommandSource)).Parent.Parent)); //此得出的值是表示那行被选中的索引值
int id=Convert.ToInt32(GridView1.DataKeys[drv.RowIndex].Value); //此获取的值为GridView中绑定数据库中的主键值
//注意:运用此方法,需要对GridView的DataKeyNames属性进行设置,此例中设置为主键字段。
//【方法二】
GridViewRow drv = (GridViewRow)((LinkButton)e.CommandSource).NamingContainer;//此得出的值是表示那行被选中的索引值
int id = Convert.ToInt32(GridView1.Rows[drv.RowIndex].Cells[0].Text); //此获取的值为GridView中绑定数据库中的主键值,取值方法是选中的行中的第一列的值,drv.RowIndex取得是选中行的索引
}
}