private void DataGrid1_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{ DataGrid1.EditItemIndex=-1;
BindGrid();
}private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{ Update table........
BindGrid();
}

解决方案 »

  1.   

    图片如下 有兴趣的可以看看
    http://bbs.dvbbs.net/UploadFile/2004-7/200479181540646.gif
      

  2.   

    所有代码如下
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Data.SqlClient;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Configuration;
    namespace topwok.admin
    {
    /// <summary>
    /// administrator 的摘要说明。
    /// </summary>
    public class administrator : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.DataGrid DataGrid1;
    protected System.Web.UI.WebControls.TextBox TextBox9;
    protected System.Web.UI.WebControls.TextBox TextBox3;
    protected System.Web.UI.WebControls.RequiredFieldValidator Requiredfieldvalidator5;
    protected System.Web.UI.WebControls.TextBox TextBox1;
    protected System.Web.UI.WebControls.CompareValidator Comparevalidator2;
    protected System.Web.UI.WebControls.TextBox TextBox2;
    protected System.Web.UI.HtmlControls.HtmlSelect Select1;
    protected System.Web.UI.HtmlControls.HtmlInputButton Submit1;
    SqlConnection myconnect=new SqlConnection(ConfigurationSettings.AppSettings["connstr"]);
    private void Page_Load(object sender, System.EventArgs e)
    {
    myconnect.Open();
    if(!Page.IsPostBack)
    {
    BindGrid();
    Page.DataBind();
    }
    } #region Web Form Designer generated code
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.DataGrid1.CancelCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_CancelCommand_1);
    this.DataGrid1.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_EditCommand);
    this.DataGrid1.UpdateCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_UpdateCommand);
    this.DataGrid1.DeleteCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_DeleteCommand);

    this.Submit1.ServerClick += new System.EventHandler(this.Submit1_ServerClick);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion
    //数据绑定函数
    private void BindGrid()
    {
    SqlDataAdapter MyCommand = new SqlDataAdapter("SELECT * from admin", myconnect);
    DataSet ds = new DataSet();
    MyCommand.Fill(ds, "table1");
    DataGrid1.DataSource = ds.Tables["table1"].DefaultView;
    DataGrid1.DataBind();
    }
    private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    DataGrid1.EditItemIndex=e.Item.ItemIndex;
    BindGrid();
    }
    private void DataGrid1_CancelCommand_1(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    DataGrid1.EditItemIndex=-1;
    BindGrid();

    } private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    string updatestr="update admin set username=@username,uid=@uid,pwd=@pwd,power=@power where id=@id";
    SqlCommand mycommand=new SqlCommand(updatestr,myconnect);
    mycommand.Parameters.Add("@id",SqlDbType.Int).Value=DataGrid1.DataKeys[e.Item.ItemIndex];
    TextBox first,second,third;
    DropDownList forth;
    first=(TextBox)e.Item.FindControl("edit_username");
    second=(TextBox)e.Item.FindControl("edit_uid");
    third=(TextBox)e.Item.FindControl("edit_pwd");
    forth=(DropDownList)e.Item.FindControl("edit_power");
    mycommand.Parameters.Add("@username",SqlDbType.VarChar,20).Value=first.Text;
    mycommand.Parameters.Add("@uid",SqlDbType.VarChar,20).Value=second.Text;
    mycommand.Parameters.Add("@pwd",SqlDbType.VarChar,20).Value=third.Text;
    mycommand.Parameters.Add("@power",SqlDbType.Int).Value=1;
    mycommand.ExecuteNonQuery();
    DataGrid1.EditItemIndex=-1;
    BindGrid();
    } private void DataGrid1_DeleteCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    string deletestr="delete admin  where id=@id";
    SqlCommand mycommand=new SqlCommand(deletestr,myconnect);
    string key=DataGrid1.DataKeys[(int)e.Item.ItemIndex].ToString();
    mycommand.Parameters.Add("@id",SqlDbType.Int).Value=int.Parse(key);
    mycommand.ExecuteNonQuery();
    DataGrid1.EditItemIndex=-1;
    BindGrid();
    } public string Getname(int power)
    {
    if (power==2)
    return "超级管理员";
    else 
    {
    if (power==1)
    return "业务管理员";
    else
    return "一般管理员" ;
    }

    } private void Submit1_ServerClick(object sender, System.EventArgs e)
    {
    SqlCommand mycommand=new SqlCommand("add_admin",myconnect);
    mycommand.CommandType=CommandType.StoredProcedure;
    mycommand.Parameters.Add("@uid",SqlDbType.VarChar,20).Value=TextBox3.Text;
    mycommand.Parameters.Add("@pwd",SqlDbType.VarChar,20).Value=TextBox1.Text;
    mycommand.Parameters.Add("@username",SqlDbType.VarChar,20).Value=TextBox9.Text;
    mycommand.Parameters.Add("@power",SqlDbType.Int).Value=Select1.Value;
    SqlParameter RetVal=mycommand.Parameters.Add("RetVal", SqlDbType.Int);
    RetVal.Direction = ParameterDirection.ReturnValue;
    //myconnect.Open();
    mycommand.ExecuteNonQuery();
    if (int.Parse(RetVal.Value.ToString())==1)
    {
    Response.Write("<script language=javascript>alert('新增成功!');</script>");
    BindGrid();
    }
    else
    {
    if (int.Parse(RetVal.Value.ToString())==0)
    Response.Write("<script language=javascript>alert('此用户名已存在!');</script>");
    else
    Response.Write("<script language=javascript>alert('新增失败!');</script>");
    }
    }

    }
    }
      

  3.   

    pageload()
    这里最好用!IsPostBack()判断一下
    该BIND时才BIND
    设个断点跟踪一下,我以前也遇到过类似情况!
      

  4.   

    //俺用的删除:
    int row=DataGrid1.SelectedIndex;
    int rows=tb.Tables[tbDgr1].Rows.Count;
    if (row<=0) row=rows - 1;
    dsDgr1.Tables [ tb ] . Rows [ row ] . Delete ( ) ;
    DataGrid1.SelectedIndex= row - 1;
    DataGrid1.DataSource=tb;
    DataGrid1.DataBind();你说的情况俺有点看不明白。:(
      

  5.   

    以上所有均没有解决问题我觉得问题的实质是为什么点击修改后
    DataGrid1_UpdateCommand 没有得到触发请高手继续回帖马上解决马上给分