前台代码如下:
 <asp:gridview ID="GridView1" Width="100%" runat="server" AutoGenerateColumns="False"  DataKeyNames="NCIDHorizontalAlign="Center">
               <Columns>
                    <asp:BoundField DataField="Realname" HeaderText="姓名" />
                   
                    <asp:BoundField DataField="UserName" HeaderText="用户名" Visible="false" />
                    
         <asp:TemplateField HeaderText="操作" ShowHeader="False">
             <ItemTemplate>
                 <asp:LinkButton ID="LinkButtons" runat="server" CausesValidation="false" CommandName="passPerson"  OnClick="passPerson_Click" Text="通过"></asp:LinkButton>
             </ItemTemplate>
         </asp:TemplateField>                    </Columns>
    </asp:gridview>
后台代码:
  protected void passPerson_Click(object sender, EventArgs e)
    {
        //string username =;//这里就是要取得gridview中username 的值
       // onk.Sch_Employment.addOnePerson(username);//执行sql 语句
    }
当我点击通过的时候,触发passPerson_Click事件,进行sql操作 ,通过按钮是在gridview 中最后的,及每行后面都有一个,就是要获得点击这行的username值

解决方案 »

  1.   

    很简单的,<asp:BoundField DataField="UserName" HeaderText="用户名" Visible="false" /> 这句没用到可以不写。
    前台:
    <asp:GridView ID="GridView1" runat="server" Width="100%"  AutoGenerateColumns="False" OnRowCommand="GridView1_RowCommand">
                <Columns>
                    <asp:BoundField DataField="Realname" HeaderText="姓名" />
                    <asp:BoundField DataField="UserName" HeaderText="用户名" Visible="false" />
                    <asp:TemplateField HeaderText="操作" ShowHeader="False">
                        <ItemTemplate>
                            <asp:LinkButton ID="LinkButtons" runat="server" CausesValidation="false" CommandName="passPerson" CommandArgument='<%#Eval("UserName") %>'
                                 Text="通过"> </asp:LinkButton>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
    后台: protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "passPerson")
            {
                string username = e.CommandArgument.ToString();// 是这行的用户名
                Response.Write(username); //测试输出的值
            }
        }
      

  2.   

    完整测试代码如下:test7.aspx<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test7.aspx.cs" Inherits="test7" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>无标题页</title>
    </head>
    <body>
        <form id="form1" runat="server">
            <asp:GridView ID="GridView1" runat="server" Width="100%"  AutoGenerateColumns="False" OnRowCommand="GridView1_RowCommand">
                <Columns>
                    <asp:BoundField DataField="Realname" HeaderText="姓名" />
                    <asp:BoundField DataField="UserName" HeaderText="用户名" Visible="false" />
                    <asp:TemplateField HeaderText="操作" ShowHeader="False">
                        <ItemTemplate>
                            <asp:LinkButton ID="LinkButtons" runat="server" CausesValidation="false" CommandName="passPerson" CommandArgument='<%#Eval("UserName") %>'
                                 Text="通过"> </asp:LinkButton>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
        </form>
    </body>
    </html>
    test7.aspx.csusing System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;public partial class test7 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            GridView1.DataSource = dt();
            GridView1.DataBind();
        }
        DataTable dt()
        {
            DataTable dt = new DataTable();
            DataRow dr;
            dt.Columns.Add(new DataColumn("id", typeof(Int32)));
            dt.Columns.Add(new DataColumn("Realname", typeof(String)));
            dt.Columns.Add(new DataColumn("UserName", typeof(String)));        for (int i = 1; i < 5; i++)
            {
                dr = dt.NewRow();
                dr[0] = i;
                dr[1] = "实名" + i;
                dr[2] = "用户名" + i;
                dt.Rows.Add(dr);
            }        return dt;
        }
        protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "passPerson")
            {
                string username = e.CommandArgument.ToString();// 是这行的用户名
                Response.Write(username); //测试输出的值
            }
        }
    }
      

  3.   

    <asp:LinkButton ID="LinkButtons" runat="server" CausesValidation="false" CommandName="passPerson" CommandArgument='<%#Eval("UserName") %>'
                                 Text="通过"> </asp:LinkButton>
    protected void passPerson_Click(object sender, EventArgs e)
        {
             string username = ((LinkButton)seder).CommandArgument.ToString();//这里就是要取得gridview中username 的值
            onk.Sch_Employment.addOnePerson(username);//执行sql 语句
        } 
      

  4.   

    加上OnClick="passPerson_Click" 这个就好了这样简单方便
      

  5.   


      protected void passPerson_Click(object sender, EventArgs e)
        {
            GridViewRow gvr = (sender as Button).NamingContainer as GridViewRow;
            if(gvr != null)
            {
                string userName = gvr.Cells[1].Text;
            }
        }