none
C# datagrid中回车保存数据疑问 RRS feed

  • 问题

  • winform项目中要实现datagrid中回车键保存数据。

    试了很久,也没有搞定。请教下大家!

    目前只实现到:按保存按钮,可以保存。但是回车就是保存不了数据。

    代码如下:

     private void dhxtbtnsave_Click(object sender, EventArgs e)
        {
          SQLiteDataAdapter da = daa;
          SQLiteCommandBuilder builder = new SQLiteCommandBuilder(da);
          SQLiteCommand upcmd = new SQLiteCommand("update dingdan set s=@s,m=@m,l=@L,xl=@xl,xxl=@xxl where styleid=@styleid", conn);
          upcmd.Parameters.Add("@s", System.Data.DbType.Int32, 8, "s");
          upcmd.Parameters.Add("@m", System.Data.DbType.Int32, 8, "m");
          upcmd.Parameters.Add("@l", System.Data.DbType.Int32, 8, "l");
          upcmd.Parameters.Add("@xl", System.Data.DbType.Int32, 8, "xl");
          upcmd.Parameters.Add("@xxl", System.Data.DbType.Int32, 8, "xxl");
          upcmd.Parameters.Add("@styleid", System.Data.DbType.String, 30, "styleid");
          da.UpdateCommand = upcmd;
          conn.Close();
          da.Update(ds, "dingdan");
        }
    

    同样的代码,写入到keydown事件中,不能保存数据。如下:

    private void MDataGrid_KeyDown(object sender, KeyEventArgs e)
        {
          if (e.KeyCode == Keys.Enter)
          {
            SQLiteDataAdapter da = daa;
            SQLiteCommandBuilder builder = new SQLiteCommandBuilder(da);
            SQLiteCommand upcmd = new SQLiteCommand("update dingdan set s=@s,m=@m,l=@L,xl=@xl,xxl=@xxl where styleid=@styleid", conn);
            upcmd.Parameters.Add("@s", System.Data.DbType.Int32, 8, "s");
            upcmd.Parameters.Add("@m", System.Data.DbType.Int32, 8, "m");
            upcmd.Parameters.Add("@l", System.Data.DbType.Int32, 8, "l");
            upcmd.Parameters.Add("@xl", System.Data.DbType.Int32, 8, "xl");
            upcmd.Parameters.Add("@xxl", System.Data.DbType.Int32, 8, "xxl");
            upcmd.Parameters.Add("@styleid", System.Data.DbType.String, 30, "styleid");
            da.UpdateCommand = upcmd;
            conn.Close();
            da.Update(ds, "dingdan");
          }
        }
    

    不知为何?

    是不应该写入keydown时间?

    keyup事件也试了,也是不可以保存!

    请指点下!

     


    hi,this is paul!
    2011年1月16日 9:10

答案

  • 1.单步调试一下,检查你的grid的编辑内容是否提交,确认代码是否被执行。

    2.可以试试keypress事件。

    一般原因是由于编辑框没有失去焦点,导致当前编辑内容没有更新到绑定的数据源上。

     


    family as water
    • 已标记为答案 Specialme 2011年1月16日 11:57
    2011年1月16日 10:26

全部回复

  • 1.单步调试一下,检查你的grid的编辑内容是否提交,确认代码是否被执行。

    2.可以试试keypress事件。

    一般原因是由于编辑框没有失去焦点,导致当前编辑内容没有更新到绑定的数据源上。

     


    family as water
    • 已标记为答案 Specialme 2011年1月16日 11:57
    2011年1月16日 10:26
  • 非常感谢,已经搞定!

    是使用的事件错误引起的。


    hi,this is paul!
    2011年1月16日 11:57