如何从gridview中的按钮获取单击事件

如何从gridview中的按钮获取单击事件,gridview,Gridview,我正在开发一个应用程序,需要在gridview中获取按钮的单击事件。我没有在命令行中获取它,可能是因为我动态添加它,如下所示: protected void gviewTemplate_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { if (e.Row.Cells[1].Text != e.Row.Cel

我正在开发一个应用程序,需要在gridview中获取按钮的单击事件。我没有在命令行中获取它,可能是因为我动态添加它,如下所示:

protected void gviewTemplate_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        if (e.Row.Cells[1].Text != e.Row.Cells[2].Text)
        {
            e.Row.BackColor = System.Drawing.Color.Red;
            LinkButton lbtnReload = new LinkButton();
            lbtnReload.CommandArgument = e.Row.Cells[12].Text;
            lbtnReload.Attributes.Add("onclick", "javascript:ShowDiv()");
            lbtnReload.CommandName = "reload";
            lbtnReload.Text = "Reload";
            e.Row.Cells[1].Controls.Add(lbtnReload);

            DataTable dt = (DataTable)ViewState["update"];
            DataRow dr = dt.NewRow();
            dr["id"] = e.Row.Cells[0].ToString();
            dr["image"] = e.Row.Cells[1].ToString();
            dt.Rows.Add(dr);
        }
    }
}

protected void gviewTemplate_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName == "reload") 
    { 
        hdnfield.value = int.Parse(e.CommandArgument.ToString()); 
    } 

    btnFuImage.Visible = true; fuploadImage.Visible = true; 
} 
我以以下方式在gridview中显示了它

<asp:BoundField ItemStyle-Width="100" DataField="Uploded" HeaderText="Uploaded Image" >  

我需要从这个网格的第一列中获取值,并将其更新为一些隐藏变量,以便以后使用。我该怎么做呢。提前感谢使用按钮,请使用按钮字段并指定commandname,这将触发rowcommand事件。BoundField不渲染按钮。如果您想单击边界字段,这是一个更专门的设置


你想用哪一个作为点击按钮?

如果你只是想获取一个值并将其存储在HiddenField中以备以后使用,为什么不将该值放在javascript函数中,然后再将其放在HiddenField中呢

lbtnReload.Attributes.Add("onclick", "javascript:ShowDiv(); SaveValue('" + value + "'); return false;);
这将避免您必须转到速度更快的服务器


另外,为什么不使用TemplateField并在其中创建一个按钮呢?通过该按钮,您可以更轻松地控制一切

请注意,我已经在单击该按钮时调用javascript函数,但现在我想在客户端函数完成后调用服务器端方法。您可以在该GridViewprotected void gviewTemplate_RowCommandobject发送者的OnRowCommand函数,GridViewCommandEventArgs e{if e.CommandName==reload{hdnfield.value=int.Parsee.CommandArgument.ToString;}btnFuImage.Visible=true;fuploadImage.Visible=true;}谢谢回复,我不能使用buttonfield,因为我的按钮不会显示在每一行中。它将根据rowcommandHey中的某些条件显示。好的,您可以使用一个模板字段,其中有一个带有CommandName的按钮。在RowDataBound或RowCreated中,您可以通过设置Visible属性来访问该按钮并显示或隐藏它。我觉得它不错,我将尝试一下,请您解释一下此行返回false的目的。感谢回复返回false将阻止它进入服务器。每当你点击一个按钮,你不需要它去服务器,就像在这种情况下,你需要添加return false,因为默认情况下,它是return true,这会导致回发。另外,由于你没有return false在那里放在首位,这可能是你的row命令没有被点击的原因。您可能想检查一下以验证,以便将来知道。然而,在这种情况下,纯javascript解决方案似乎是最好的。