我在服务器端写的数据显示和"编辑"按扭的代码,但是我在点击编辑后,修改      
   
TextBox框的值,然后点击更新。可是得到的不是修改以后的值,而是没有修      
   
改以前的值。我调试了一下,发现进入到了RowUpdating事件里了,但是用          
   
String    tb=((TextBox)gv.Rows[e.RowIndex].Cells[2].Controls[0]).Text      
   
得到的值是没有修改以前的。请教了二十几个群,和十几个论坛,就是没有      
   
人知道。在线急等。

解决方案 »

  1.   

    试试这个String  tb = ((TextBox)gv.Rows[e.EditIndex].Cells[2].Controls[0]).Text ;
      

  2.   

    没有e.EditIndex这个属性啊,郁闷了!我是在RowUpdating事件里写的啊!
      

  3.   

    Keys字典中一般存放的是数据源中的主键字段的key和value的对应值,如果主键由多个字段组成,那么Keys为每个键字段添加其字段名称和值。OldValues中存放的是要更新的行的字段名和原始值,每个字段为其中的一项。NewValues中存放的是要更新的行的字段名和修改后的值,每个字段为其中的一项。注意,主键字段只存放于keys集合中。这三个集合中的每一项都是DictionaryEntry类型的对象,我们可以用DictionaryEntry.Key来确定一个项的字段名称,用DictionaryEntry.Value来确定某项的值。
    http://goforideal.bokee.com/viewdiary.14490513.html
      

  4.   

    page-load中是否加入了ispostback?
      

  5.   

    楼上正解,LZ没有做ispostback判断就在page_load事件对gridview进行了绑定
      

  6.   

    是啊,要加ispostback,或者还要重新DataBind一下
      

  7.   

    同一问题怎么问两遍?LZ 有空看看下贴的回复!
    http://community.csdn.net/Expert/topic/5547/5547135.xml?temp=.050152另,LZ 把代码贴出来晒晒!看代码比较容易些!
      

  8.   

    数据绑定要放在
    if(!IsPostBack)里面
    要不然每次页面回送都会进行一次数据绑定,数据总是初始的
      

  9.   

    那样也不行,就退出不了编辑状态了,同时也不能进入到RowUpdating事件里了
      

  10.   

    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {            BindRole();
            }
        }
    private void BindRole()
        {
            DataTable dt = roleDB.GetAllRole();
            gvRoles.DataSource = dt.DefaultView;
            gvRoles.DataBind();
        
        }
      protected void gvRoles_RowEditing(object sender, GridViewEditEventArgs e)
        {
            gvRoles.EditIndex = e.NewEditIndex;
            BindRole();    }
     protected void gvRoles_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            gvRoles.EditIndex = -1;
            BindRole();
        }
      protected void gvRoles_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            GridViewRow gvrRoles = gvRoles.Rows[gvRoles.EditIndex];
            int iRoleID = int.Parse(gvRoles.DataKeys[gvRoles.EditIndex].Value.ToString());
            string strRoleName = ((TextBox)gvrRoles.FindControl("txtRoleName")).Text.Trim();
            string strRoleDes = ((TextBox)gvrRoles.FindControl("txtDes")).Text.Trim();
            int iFlag = 0;
            CheckBox chkFlagNew = (CheckBox)gvrRoles.FindControl("chkEFalg");
            if (chkFlagNew.Checked == true)
                iFlag = 1;
           bool bFlag = roleDB.UpDateRole(strRoleName, strRoleDes, iFlag,iRoleID);
               lbError.Text = strRoleName + "更新成功";
               gvRoles.EditIndex = -1;        BindRole();        }
        }
      

  11.   

    更新事件  RowUpdating
     model.ID = Convert.ToInt32(GridView.DataKeys[GridView.Rows[e.RowIndex].DataItemIndex].Value.ToString());
    获取 ID值 
    在 html里面  GridView的属性  DataKeyNames="ID" ID是 表的主键  
    你试一下
      

  12.   

    退出事件 Editing 
    GridView .EditIndex = e.NewEditIndex;
            BankBind();
      

  13.   

    <asp:GridView ID="GridView1" AutoGenerateColumns="false" runat="server"  OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating">
                <Columns>
                    <asp:BoundField DataField="test" />
                    <asp:CommandField ShowEditButton="True" />
                </Columns>
            </asp:GridView>cs:
    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                BindData();
            }
        }
    private void BindData()
        {
            GridView1.DataSource = //...Get DataSource;
            GridView1.DataBind();
        }
    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
            GridView1.EditIndex = e.NewEditIndex;
            BindData();    }
        protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            string s = ((TextBox)GridView1.Rows[e.RowIndex].Cells[0].Controls[0]).Text;
            //update......
            GridView1.EditIndex = -1;
            BindData();
        }
      

  14.   

    http://blog.csdn.net/antiking/archive/2006/05/12/725562.aspx
      

  15.   

    在 html里面  GridView的属性  DataKeyNames="ID" ID是 表的主键  
    你试一下
      

  16.   

    没制了,晒码了:Default.aspx.cs:代码using System;
    using System.Data;
    using System.Configuration;
    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;
    using class1;
    public partial class _Default : System.Web.UI.Page 
    {
        
        Class1 c = new Class1();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                bind();
            }
        }
        protected void bind()
        {
            gv.AllowPaging = true;
            gv.AutoGenerateColumns = false;
            gv.PageSize = 5;
            gv.DataSource = new Class1().getinfo();        gv.Columns.Clear();        BoundField bf = new BoundField();
            bf.HeaderText = "编号";
            bf.ReadOnly = true;
            gv.Columns.Add(bf);        bf = new BoundField();
            bf.HeaderText = "图书名称";
            bf.DataField = "title";
            bf.ReadOnly = true;
            gv.Columns.Add(bf);        bf = new BoundField();
            bf.HeaderText = "图书价格";
            bf.DataField = "price";
            gv.Columns.Add(bf);        ButtonField bt = new ButtonField();
            bt.HeaderText = "编辑";
            bt.Text = "编辑";
            bt.CommandName = "Edit";
            bt.ButtonType = ButtonType.Button;
            gv.Columns.Add(bt);        gv.DataBind();
        }
        protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow || e.Row.RowType == DataControlRowType.EmptyDataRow)
            {
                e.Row.Cells[0].Text = (e.Row.RowIndex + gv.PageIndex * gv.PageSize + 1).ToString();
            }        if ((e.Row.RowState & DataControlRowState.Edit) != 0)
            {
                TextBox tb = (TextBox)e.Row.Cells[2].Controls[0];
                tb.Width = 40;            e.Row.Cells[3].Controls.Clear();            Button b = new Button();
                b.Text = "更新";
                b.CommandName = "Update";
                e.Row.Cells[3].Controls.Add(b);            b = new Button();
                b.Text = "取消";
                b.CommandName = "Cancel";
                e.Row.Cells[3].Controls.Add(b);
            }
        }
        protected void gv_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gv.PageIndex = e.NewPageIndex;
            bind();
        }
        protected void gv_RowEditing(object sender, GridViewEditEventArgs e)
        {
            gv.EditIndex = e.NewEditIndex;
            bind();
        }
        protected void gv_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            gv.EditIndex = -1;
            bind();
        }
        protected void gv_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            string tb = ((TextBox)gv.Rows[gv.EditIndex].Cells[2].Controls[0]).Text;
            decimal tbs = decimal.Parse(tb);
            string i = gv.Rows[e.RowIndex].Cells[1].Text;
            c.updates(i,tbs);
            gv.EditIndex = -1;
            bind();
        }}html:代码:<%@ 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 style="text-align: center">
            <asp:GridView ID="gv" runat="server" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None"
                BorderWidth="1px" CellPadding="3" Height="147px" OnPageIndexChanging="gv_PageIndexChanging"
                OnRowCancelingEdit="gv_RowCancelingEdit" OnRowDataBound="gv_RowDataBound" OnRowEditing="gv_RowEditing" OnRowUpdating="gv_RowUpdating" Width="503px">
                <FooterStyle BackColor="White" ForeColor="#000066" />
                <RowStyle ForeColor="#000066" />
                <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
                <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
                <HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
            </asp:GridView>
            &nbsp;</div>
        </form>
    </body>
    </html>
    <script language="javascript" src="JScript.js"></script>
    速度,急!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1111
      

  17.   

    你在load时候进行数据绑定但是没有判断IsPostBack!
      

  18.   

    没有key,你得在gv中的html代码加DataKeyNames="ID"
      

  19.   

    呵呵,我自己做出来了,
    lingwu05() 我为什么要用key?那好象不是问题吧,你还是没有理解我代码的意义.
    我自己做出来了,我把要进行修该的列变成模版列,然后在RowUpdating事件里写
    TextBox tb=(TextBox)gv.Rows[e.RowIndex].Cells[2].FindControl("TextBox1");
    tb.Text   这样就得到了,谢谢各位了.虽然没有人答对,但是分还是要给的,我会相应的给点分的
    再谢!