事件都写了,代码如下:
private void LoadGrid()
{
SqlConnection con=new  SqlConnection("server=(local)         \\LITTECATOO;uid=cabin;pwd=wyy1365720;database=friends");
string sql = "select * from score";
SqlDataAdapter da = new SqlDataAdapter(sql,con);
DataSet ds = new DataSet();
da.Fill(ds,"score");
DataGrid1.DataSource = ds.Tables[0];
DataGrid1.DataBind();
}
private void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{

DataGrid1.EditItemIndex = e.Item.ItemIndex;
LoadGrid();

 
} private void DataGrid1_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
DataGrid1.EditItemIndex = -1;
LoadGrid();
} private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
SqlConnection con =new  SqlConnection("server=(local)\\LITTECATOO;uid=cabin;pwd=wyy1365720;database=friends");
string updateCmd = "update score set  math = @math, English =@english, computer=@computer where studname = @studname";
SqlCommand cmm = new SqlCommand(updateCmd,con);
cmm.Parameters.Add(new SqlParameter("@studname",SqlDbType.VarChar,20));
cmm.Parameters.Add(new SqlParameter("@math",SqlDbType.Int,4));
cmm.Parameters.Add(new SqlParameter("@english",SqlDbType.Int,4));
cmm.Parameters.Add(new SqlParameter("@computer",SqlDbType.Int,4));
            cmm.Parameters["@studname"].Value = DataGrid1.DataKeys[e.Item.ItemIndex];
string[] cols = new string[]{"@studname,@math,@english,@computer"};
int NumCols = e.Item.Cells.Count;
for(int i = 1;i<=NumCols-1;i++)
{
TextBox CurrentTb= (TextBox)e.Item.Cells[i].Controls[0];
string ColValue = CurrentTb.Text;
cmm.Connection.Open();
try
{
cmm.ExecuteNonQuery();
DataGrid1.EditItemIndex = -1; }
catch(SqlException Exp)
{
Console.WriteLine(Exp.Message);
}
cmm.Connection.Close();
LoadGrid();

}
}
点击“编辑”按钮,一点反应都没有,不出“取消”和“更新”按钮呀???为什么哦?

解决方案 »

  1.   

    你调试看,看你的代码执行了吗?是不是 private void InitializeComponent()
    的委托注册没有了
      

  2.   

    看你的datagrid中的editcommand……是否为空
    然后单步执行下
      

  3.   

    “错误: 标识符“CancelCommand”超出范围 错误: 托管 EE 不理解表达式的语法” this.DataGrid1.CancelCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_CancelCommand);
    this.DataGrid1.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_EditCommand);
    this.DataGrid1.UpdateCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_UpdateCommand);
    单步调试中,发现三个时间代理都报错,错误都同上。
      

  4.   

    在pageload方法中试一下:
    if(!IsPostBack)
    {
       LoadGrid();
    }