在GridView1的模板列放一个Button1,
GridView1是自定义的字段不是自动生成字段,“删除,编辑,选择”这三个属性均为False
请问:
单击Button1如何得到该行的键值或该行某一列的值?

解决方案 »

  1.   

    在databound事件下给此button的commandargument属性赋值
      

  2.   

    Button btn = sender as Button;
    RepeaterItem item = btn.Parent as RepeaterItem;
    Label lbStuffNum = item.FindControl("StuffNum") as Label;这个样子的大概就行了
      

  3.   

    <asp:Button ID="Button1" runat="server" Text="Button" CommandArgument="<%Eval("ID") %>" CommandName="DEL" />
    然后在相关事件当中通过e.CommandArgument就可以得到key了
    CommandName是便于你如果有多个操作的话 用它来判断到底是什么操作O(∩_∩)O~
      

  4.   

    up, ID即为你想得到的那一列的字段名
      

  5.   

    <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %><!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">
        <div>
            <asp:GridView ID="GridView1" runat="server" onrowcommand="GridView1_RowCommand">
                <Columns>
                    <asp:TemplateField HeaderText="操作">
                        <ItemTemplate>
                            <asp:Button ID="btnUpdate" runat="server" CommandArgument='<%# Bind("au_id") %>' 
                                CommandName="Update" Text="修改" />&nbsp;
                            <asp:Button ID="btnDelete" runat="server" CommandArgument='<%# Bind("au_id") %>' 
                                CommandName="Delete" Text="删除" EnableTheming="True" />
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
        </div>
        </form>
    </body>
    </html>
      

  6.   

    using System;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using System.Data.SqlClient;public partial class _Default : System.Web.UI.Page 
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                string connstring = "server=.;user=sa;pwd=123;database=pubs";
                string sql = "select top 4 * from authors where 1=1";
                using (SqlConnection conn = new SqlConnection(connstring))
                {
                    using (SqlCommand comm = new SqlCommand(sql, conn))
                    {
                        conn.Open();
                        DataTable dt = new DataTable();
                        SqlDataAdapter sda = new SqlDataAdapter(comm);
                        sda.Fill(dt);
                        GridView1.DataSource = dt;
                        GridView1.DataBind();
                    }
                }
            }
        }
        protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            string id = e.CommandArgument.ToString();//就是你绑定在这按钮上的字段值
            if (e.CommandName.Equals("Update"))//如果点击的是修改按钮
            {
                //执行你要修改的代码
            }
            else if (e.CommandName.Equals("Delete"))//如果点击的是删除按钮
            { 
                //执行你要删除的代码
            }
        }
    }
      

  7.   

    GridView1是自定义的字段不是自动生成字段,“删除,编辑,选择”这三个属性均为False 
    我不需要自动生成的:删除,编辑,选择按钮
    运行时出现错误:
    GridView“GridView1”激发了未处理的事件“RowDeleting”。 
      

  8.   

    //还未添加代码
    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
        { //还未添加代码    } 
    就:GridView“GridView1”激发了未处理的事件“RowDeleting”。 
      

  9.   


    protected void Button1_Click(object sender, EventArgs e)
    {
        GridViewRow gvr = (sender as Button).NamingContainer as GridViewRow;
        if(gvr != null)
        {
            Response.Write(gvr.Cells[1].Text);//输入第二列的值
        }
    }