代码之家  ›  专栏  ›  技术社区  ›  Sjuul Janssen

C 35;数据网格自动将值写入数据库

  •  0
  • Sjuul Janssen  · 技术社区  · 16 年前

    我有一个datagrid视图,它显示来自数据库的表数据

    环境: -Visual studio 2010

    我用过这个代码:

    在From1负载中:

    dataSet1.TblObject.RowChanged += rowUpdate;
    

    private void rowUpdate(object sender, DataRowChangeEventArgs e)
    { 
        DataRow dr = e.Row;
        if (dr.RowState == DataRowState.Modified)
        {
            tblObjectTableAdapter.Update(dr);
        }
    }
    

    tblObjectTableAdapter.Update(dr); 数据被存储到表中。这很好。但事件不断触发,好像它是递归调用的。所以 tblObjectTableAdapter.Update(dr); 正在导致 dataSet1.TblObject.RowChanged 事件。但我无法区分两者。我猜我使用了错误的事件来存储我的值,但是我找不到任何听起来合乎逻辑的事件。我做错什么了?

    我制作了一个数据集xsd:

    TblObject

    我已在此gridview中选择数据集作为数据源:

    alt text

    1 回复  |  直到 16 年前
        1
  •  0
  •   Emerion    16 年前

    好吧,我看了你的帖子好几遍了,但我不能直接帮你解决问题。不管怎样,我都会尝试,你想要的是当我做一个更改时,它不会立即更新自己,而是将信息保存在一个列表中,当你按下一个按钮时保存更新?

    所以不是代码

    DataRow dr = e.Row; 
    if (dr.RowState == DataRowState.Modified) 
    { 
        tblObjectTableAdapter.Update(dr); 
    }
    

    你应该

     DataRow dr = e.Row; 
        if (dr.RowState == DataRowState.Modified) 
        { 
    DatarowLst.Add(dr); 
        } 
    
    ButtonSave_Click(object sender, eventargs e)
    {
    foreach (DataRow d in DatarowLst)
    {
    tblObjectTableAdapter.Update(d); 
    }
    }
    

    编辑:

    好的,对不起,我误会你了。我现在明白你的问题并调查了这个问题。

    在评论文章中找到的信息: This site from msdn

    他们提供了一个链接 this 网站了解更多信息。也许你会在那里找到答案。

    对于您的问题的解决方案,似乎您可以不考虑您的事件,只需调用update命令。我不确定这一点,因为我没有时间检查这一点,我对这一主题几乎没有经验。