protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        string teaid = Convert.ToString(this.GridView1.DataKeys[e.RowIndex].Value);
        string teaname = (this.GridView1.Rows[e.RowIndex].Cells[1].Controls[0] as TextBox).Text;
        string teaage = (this.GridView1.Rows[e.RowIndex].Cells[3].Controls[0] as TextBox).Text;        using (SqlConnection con = new SqlConnection("server=.;uid=sa;pwd=;database=login1"))
        {
            con.Open();
            string str = "update teacher set teaname='"+teaname+"',teaage='"+teaage+"' where teaid='"+teaid+"'";
            SqlCommand cmd = new SqlCommand(str, con);
            cmd.ExecuteNonQuery();
        }
        this.GridView1.EditIndex = -1;
        this.bindGridView();
    }以上是,cs
 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" DataKeyNames="teaid" OnRowCancelingEdit="GridView1_RowCancelingEdit" >
            <Columns>
                <asp:BoundField DataField="teaid" HeaderText="编号" ReadOnly="true" />
                <asp:BoundField DataField="teaname" HeaderText="姓名" />
                <asp:BoundField DataField="teasex" HeaderText="性别" />
                <asp:BoundField DataField="teaage" HeaderText="年龄" />
                <asp:BoundField DataField="teaspe" HeaderText="专业" />
                <asp:BoundField DataField="teaaddress" HeaderText="地址" />
                <asp:CommandField ShowEditButton="True" />
            </Columns>
        </asp:GridView>html

解决方案 »

  1.   

    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            string teaid = Convert.ToString(this.GridView1.DataKeys[e.RowIndex].Value);
            string teaname = (this.GridView1.Rows[e.RowIndex].Cells[1].Controls[0] as TextBox).Text;
            string teaage = (this.GridView1.Rows[e.RowIndex].Cells[3].Controls[0] as TextBox).Text;        using (SqlConnection con = new SqlConnection("server=.;uid=sa;pwd=;database=login1"))
            {
                con.Open();
                string str = "update teacher set teaname='"+teaname+"',teaage='"+teaage+"' where teaid='"+teaid+"'";
                SqlCommand cmd = new SqlCommand(str, con);
                cmd.ExecuteNonQuery();
            }
            this.GridView1.EditIndex = -1;
            this.bindGridView();
        }以上是,cs
     <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating" DataKeyNames="teaid" OnRowCancelingEdit="GridView1_RowCancelingEdit" >
                <Columns>
                    <asp:BoundField DataField="teaid" HeaderText="编号" ReadOnly="true" />
                    <asp:BoundField DataField="teaname" HeaderText="姓名" />
                    <asp:BoundField DataField="teasex" HeaderText="性别" />
                    <asp:BoundField DataField="teaage" HeaderText="年龄" />
                    <asp:BoundField DataField="teaspe" HeaderText="专业" />
                    <asp:BoundField DataField="teaaddress" HeaderText="地址" />
                    <asp:CommandField ShowEditButton="True" />
                </Columns>
            </asp:GridView>html
      

  2.   

    是在2003里使用DATAGRID啊....string teaname = (this.GridView1.Rows[e.RowIndex].Cells[1].Controls[0] as TextBox).Text;这个取值方式被否决了CELLS[数字]不允许这么取值要我找其他方法
      

  3.   

    又学习了,
    朋友,不过我在做的时候,不是这样做,而是直接在datagrid中把要编辑的项直接用文本框显示。也就是说,在datagrid中在相应的列添加文本框,并在每行添加一个checkbox,这样,通过它选中后,再用代码中的findcontrol()方法,去判断是那个被选中,这样就能保存或更新那个值了。