using System; using System.Data; using System.Data.SqlClient; 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; namespace WebApplication1 { public partial class Default0 : System.Web.UI.Page { //绑定 public void bind() { string sqlstr = "select * from selectsql"; SqlDataAdapter myda = new SqlDataAdapter(sqlstr, DBHelper.objConnection); DataSet myds = new DataSet(); DBHelper.objConnection.Open(); myda.Fill(myds, "selectsql"); GridView1.DataSource = myds; GridView1.DataKeyNames = new string[] { "id" };//主键 GridView1.DataBind(); DBHelper.objConnection.Close(); } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { bind(); } } protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) { GridView1.EditIndex = e.NewEditIndex; bind(); } //更新:弹出编辑框,提供更新 protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { /* GridView GridView1 = new GridView(); string aa = GridView1.DataKeys[e.RowIndex].Value.ToString(); string sqlstr = "update selectsql set name='" + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim() + "',password='" + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim() + "' where id='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'"; SqlCommand sqlcom = new SqlCommand(sqlstr, DBHelper.objConnection); DBHelper.objConnection.Open(); sqlcom.ExecuteNonQuery(); DBHelper.objConnection.Close(); GridView1.EditIndex = -1; bind();*/ } protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { GridView1.EditIndex = -1; bind(); } //删除,无问题 protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { string sqlstr = "delete from selectsql where id='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'"; SqlCommand sqlcom = new SqlCommand(sqlstr, DBHelper.objConnection); DBHelper.objConnection.Open(); sqlcom.ExecuteNonQuery(); DBHelper.objConnection.Close(); bind(); } //层添加,问题:无法获取需要编辑的行号!!!!!! protected void BtnCommite_Click(object sender, EventArgs e) { string sqlstr = string.Format("update selectsql set name='" + TxtTitle.Text.ToString().Trim() + "',password='" + TxtContent.Text.ToString().Trim() + "' where id='" + GridView1.DataKeys[2].Value.ToString() + "'");//当前行的值 ,无法获取到 SqlCommand sqlcom = new SqlCommand(sqlstr, DBHelper.objConnection); DBHelper.objConnection.Open(); sqlcom.ExecuteNonQuery(); DBHelper.objConnection.Close(); GridView1.EditIndex = -1; bind(); } protected void lbToWho_DataBinding(object sender, EventArgs e) { } } } <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default0.aspx.cs" Inherits="WebApplication1.Default0" %><!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>    <script type="text/javascript" language="javascript">        function ShowNo()                        //隐藏两个层 
        {
            document.getElementById("doing").style.display = "none";
            document.getElementById("divLogin").style.display = "none";
        }        function $(id) {
            return (document.getElementById) ? document.getElementById(id) : document.all[id];
        }
                function showFloat()                    //根据屏幕的大小显示两个层 
        {
            var range = getRange();
            //document.getElementById("hidID").value=id
            $('doing').style.width = range.width + "px";
            $('doing').style.height = range.height + "px";
            $('doing').style.display = "block";
            document.getElementById("divLogin").style.display = "";
        }
        function getRange()                      //得到屏幕的大小 
        {
            var top = document.body.scrollTop;
            var left = document.body.scrollLeft;
            var height = document.body.clientHeight;
            var width = document.body.clientWidth;
            if (top == 0 && left == 0 && height == 0 && width == 0) {
                top = document.documentElement.scrollTop;
                left = document.documentElement.scrollLeft;
                height = document.documentElement.clientHeight;
                width = document.documentElement.clientWidth;
            }
            return { top: top, left: left, height: height, width: width };
        } 
    </script>    <form id="form1" runat="server">
    <div id="doing" style="filter: alpha(opacity=30); -moz-opacity: 0.3; opacity: 0.3;
        background-color: #000; width: 100%; height: 100%; z-index: 1000; position: absolute;
        left: 0; top: 0; display: none; overflow: hidden;">
    </div>
    <div id="divLogin" style="border: solid 10px #898989; background: #fff; padding: 10px;
        width: 780px; z-index: 1001; position: absolute; display: none; top: 50%; left: 50%;
        margin: -200px 0 0 -400px;">
        <div style="padding: 3px 15px 3px 15px; text-align: left; vertical-align: middle;">
            <div>
                <br />
                <br />
                用户姓名:
                <asp:TextBox ID="TxtTitle" runat="server" Width="349px">
                </asp:TextBox>
            </div>
            <br />
            <div>
                密&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 码:
                <asp:TextBox ID="TxtContent" runat="server" Width="349px"></asp:TextBox>
            </div>
            <br />
            <div>
                &nbsp; &nbsp;
                <asp:Button ID="BtnCommite" runat="server" Text="确定" OnClick="BtnCommite_Click" />&nbsp;
                <input id="BttCancel" type="button" value="关 闭" onclick="ShowNo()" />
            </div>
        </div>
    </div>
    <div>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="3" DataKeyNames="id"
            GridLines="Horizontal" OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing"
            OnRowUpdating="GridView1_RowUpdating" OnRowCancelingEdit="GridView1_RowCancelingEdit"
            BackColor="White" BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px"
            Width="752px" Height="150px">
            <FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" />
            <Columns>
                <asp:BoundField DataField="id" HeaderText="用户ID" ReadOnly="True" />
                <asp:BoundField DataField="name" HeaderText="用户姓名" />
                <asp:BoundField DataField="password" HeaderText="密码" />
                <asp:CommandField HeaderText="选择" ShowSelectButton="True" />
                <asp:CommandField HeaderText="编辑" ShowEditButton="True" 
                    EditText='&lt;a href="javascript:void(0)" onclick="showFloat()"&gt;编辑&lt;/a&gt;' />
                <asp:CommandField HeaderText="删除" ShowDeleteButton="True" DeleteText="&lt;div id=&quot;de&quot; onclick=&quot;JavaScript:return confirm('确定删除吗?')&quot;&gt;删除&lt;/div&gt; " />
            </Columns>
            <RowStyle ForeColor="#4A3C8C" BackColor="#E7E7FF" />
            <SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" />
            <PagerStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" HorizontalAlign="Right" />
            <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" />
            <AlternatingRowStyle BackColor="#F7F7F7" />
        </asp:GridView>
    </div>
    </form>
</body>
</html>

解决方案 »

  1.   

    可以在点击gridview的按钮时获取本行的ID  存放到对象 然后层从对象取值
      

  2.   

    using System;
    using System.Data;
    using System.Data.SqlClient;
    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;namespace WebApplication1
    {
        public partial class Default0 : System.Web.UI.Page
        {
            //绑定
            public void bind()
            {
                string sqlstr = "select * from selectsql";            SqlDataAdapter myda = new SqlDataAdapter(sqlstr, DBHelper.objConnection);
                DataSet myds = new DataSet();
                DBHelper.objConnection.Open();
                myda.Fill(myds, "selectsql");
                GridView1.DataSource = myds;
                GridView1.DataKeyNames = new string[] { "id" };//主键
                GridView1.DataBind();
                DBHelper.objConnection.Close();        }        protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    bind();
                }
            }        protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
            {
                GridView1.EditIndex = e.NewEditIndex;
                bind();
            }
            //更新:弹出编辑框,提供更新
            protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
            {            /*string aa = GridView1.DataKeys[e.RowIndex].Value.ToString();
                TextBox1.Text=aa;
                  GridView GridView1 = new GridView();
                  string aa = GridView1.DataKeys[e.RowIndex].Value.ToString();
                  string sqlstr = "update selectsql set name='"
                  + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[1].Controls[0])).Text.ToString().Trim() + "',password='"
                  + ((TextBox)(GridView1.Rows[e.RowIndex].Cells[2].Controls[0])).Text.ToString().Trim() + "' where id='"
                  + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
                  SqlCommand sqlcom = new SqlCommand(sqlstr, DBHelper.objConnection);
                  DBHelper.objConnection.Open();
                  sqlcom.ExecuteNonQuery();
                  DBHelper.objConnection.Close();
                  GridView1.EditIndex = -1;
                  bind();*/
            }        protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
            {
                GridView1.EditIndex = -1;
                bind();
            }
            //删除,无问题
            protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
            {            string sqlstr = "delete from selectsql where id='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
                SqlCommand sqlcom = new SqlCommand(sqlstr, DBHelper.objConnection);
                DBHelper.objConnection.Open();
                sqlcom.ExecuteNonQuery();
                DBHelper.objConnection.Close();
                bind();
            }
            //层添加,问题:无法获取需要编辑的行号!!!!!!
            protected void BtnCommite_Click(object sender, EventArgs e)
            {           // GridView bm = (GridView)GridView1.Rows[e.NewEditIndex].DataItem;
                string sqlstr = string.Format("update selectsql set name='"
                + TxtTitle.Text.ToString().Trim() + "',password='"
                + TxtContent.Text.ToString().Trim() + "' where id='"
                + GridView1.DataKeys[1].Value.ToString() + "'");//当前行的值 ,无法获取到...........
                SqlCommand sqlcom = new SqlCommand(sqlstr, DBHelper.objConnection);            DBHelper.objConnection.Open();
                sqlcom.ExecuteNonQuery();
                DBHelper.objConnection.Close();
                GridView1.EditIndex = -1;
                bind();
                
            }
            protected void lbToWho_DataBinding(object sender, EventArgs e)
            {        }    }
    }
      

  3.   

    在gridview中添加一个隐藏列  存放ID  这个没问题吧?  
    这样就可以在单击的时候获取这个ID  也没问题吧?
    然后就不会获取ID是嘛?
      

  4.   

    在你要弹出层中方一个隐藏HiddenField控件 如:ID="hdfID"
    function showFloat(id)
    {   
    //先清空这个控件的值//再将参数赋值
     document.getElementById("hdfID").InnerText=id;
    //
    .......
    }
    在后台获取这个控件的值<asp:CommandField HeaderText="编辑" ShowEditButton="True" 
                        EditText='&lt;a href="javascript:void(0)" onclick="showFloat(<%#Eval('ID')%)"&gt;编辑&lt;/a&gt;' />
      

  5.   

    在td 的 行里面 给一个 click事件把ID作为参数传过去