注释:全部以linkbutton为例
gridview:
protected void lkbtnHelperNews_Click(object sender, EventArgs e)
{
LinkButton lbn = (LinkButton)sender;
int index = ((GridViewRow)lbn.NamingContainer).RowIndex;
int id = Convert.ToInt16(GridView1.DataKeys[index].Value);
}
其他:摘录文章
protected void gv_Company_RowCommand(object sender, GridViewCommandEventArgs e){
if (e.CommandName == "QianRu")
{
【方法一】
GridViewRow drv = ((GridViewRow)(((LinkButton)(e.CommandSource)).Parent.Parent)); //此得出的值是表示那行被选中的索引值
inf 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取得是选中行的索引
}
}
此外,还有一些方法可以实现获得当前行索引值。
【方法三】在linkbutton控件的Command事件,利用sender的Parent获取GridView中的当前行。
protected void lbtnQianChu_Command(object sender, CommandEventArgs e)
{
LinkButton lb = (LinkButton)sender;
DataControlFieldCell dcf = (DataControlFieldCell)lb.Parent;
GridViewRow gvr = (GridViewRow)dcf.Parent; //此得出的值是表示那行被选中的索引值
lbtnQianChu.SelectedIndex = gvr.RowIndex;
}
repeater:
第一种方法
protected void lkbtnSystemNews_Click(object sender, EventArgs e)
{
int index = ((RepeaterItem)(sender as LinkButton).Parent).ItemIndex;
Label lb = rptSystem.Items[index].FindControl("lblSystemID") as Label;//lblSystemID是前台的id
int id = Convert.ToInt32(lb.Text);
//是一些查询数据库的方法
}
第二种方法,前台
<asp:LinkButton ID="lkBtnDelete" runat="server" CssClass="xtgghref" CommandArgument='<%#Eval("YSYS_CP_ShuangSeQiu_QiShu") %>'
OnClientClick="return confirm('您确认删除?');" οnclick="lkBtnDelete_Click" >删除当期</asp:LinkButton>
后台:
protected void lkbtnSystemNews_Click(object sender, EventArgs e)
{
LinkButton lbtId = (LinkButton)sender;
string id = lbtId.CommandArgument.ToString();
}
其他:
protected void rptComment_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
LinkButton btnDel = (LinkButton)e.Item.Controls[0].FindControl("控件ID");
}
datalist:
protected void lkbtnHelperNews_Click(object sender, EventArgs e)
{
int index = ((DataListItem)((LinkButton)sender).NamingContainer).ItemIndex;
Label lb = dlHelper.Items[index].FindControl("lblHelperID") as Label;
int id = Convert.ToInt32(lb.Text);
}
其他:
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
{
LinkButton link = (LinkButton)e.Item.FindControl( "lkID"); //直接e.Item.FindControl就可以了
}