在gridview里定义了一个模板列如下
<asp:TemplateField HeaderText="user_id" Visible="False">
                          <ItemTemplate>
                              <asp:HiddenField ID="user_id" runat="server" Value='<%# Eval("user_name") %>' />
                          </ItemTemplate>
</asp:TemplateField>
gridview里的删除按钮来获取模板列值并删除指定行
public void userlist_RowCommand(Object sender, GridViewCommandEventArgs e)
        {
            // If multiple ButtonField column fields are used, use the
            // CommandName property to determine which button was clicked.
            if (e.CommandName == "del")
            {
                int index = Convert.ToInt32(e.CommandArgument);
                GridViewRow selectedRow = userlist.Rows[index];
                TableCell contactCell = selectedRow.Cells[0];
                TableCell usercheck = selectedRow.Cells[1];
                string contact = contactCell.Text;
                string user = usercheck.Text;
                HiddenField hi = (HiddenField)this.userlist.Rows[index].Cells[0].FindControl("user_id");
                theService.MessageBox(hi.Value);//这里是有问题的地方,返回的hi的值什么也没有
                // Display the selected Customer.
               // theService.MessageBox("You selected " + contact.ToString() + ".");
                if (user.ToString() == theService.administrator.ToString())
                    theService.MessageBox("系统提示:请勿尝试删除此帐户,系统出于保护数据需要已经取消了您的操作!");
                else
                {
                    try
                    {
                        theService.ExecuteSql("delete from [UserInfo] where user_id=" + id + "");
                        Response.Redirect("yhgl.aspx");
                    }
                    catch
                    {
                        theService.MessageBox("系统提示:操作失败,请重试!");
                    }
                }
            }说明:列名是正确的,系统也没报错,就是读不出来user_id的值,请高手指教~~~先谢过了