GridView ItemCommand中取某行某列的值方法,这里提供两个常用的:
一、用CommandArgument属性取值页面如下:
<asp:TemplateColumn HeaderText="图片名称"> <ItemTemplate> <asp:LinkButton ID="btnDownload" runat="server" CommandName="Download" CommandArgument='<%# Eval("IMG_SAVE_NAME") %>' ><%# Eval("IMG_NAME")%></asp:LinkButton> <asp:TextBox ID="Text1" runat="server"></asp:TextBox> </ItemTemplate> </asp:TemplateColumn>
后台:
if (e.CommandName == "Download") { string strFilePath = e.CommandArgument.ToString(); /// 获取控件的值 string text=(e.item.findControl("Text1") as TextBox).Text }
注意:用e.item.findControl时,只能获取ItemTemplate模板内控件值,如果是EditItemTemplate是获取不到的。
二、
在绑定GridView时增加DataKeyField
this.gvMain.DataSource = ds.Tables[0];
this.gvMain.DataKeyField = "IMG_NAME";
this.gvMain.DataBind();
然后在ItemCommand中获取
if (e.CommandName == "Download")
{
string strFileName = gvMain.DataKeys[e.Item.ItemIndex].ToString();
}