现在做一个课题需要用到DataGrid,问:如何实现对DataGrid中的数据修改,保存到数据库;
删除一行,把对数据库的修改保存下来。还有一个问题,DataGrid中数据源对应数据库的表有一个ID的列(主键),数据都是依ID升序排列。
现在要在DataGrid的两行之间插入一条数据(ID是的值是已经出现过的ID值)。
我的构想是当插入这条数据时候,把插入位置以下的数据的ID都加1,不知道可否实现。
还有如果可以实现,插入那条数据在数据库的表中位置在哪里?在数据库的表的可以让他按ID升序排列吗?分不够再给!

解决方案 »

  1.   

    物理标识(自增列)+逻辑标识(用户自己维护状态)或
    物理标识(自增列)+计算值
    然后把物理标识隐去就行了.
    还有你的构想没有啥实际意义,除了给自己多找点事干,更让人看出你是新手,再加上多给数据库施加一些额外的负担以外没有看出什么特殊好处.(假设在一个包含1kw条记录的表,你在最前面插入一条.....世界末日到了.....硬盘\内存\CPU都将因为你插入这1条记录而进入超长时间的假死状态.....希望你没超频,也希望你的机器质量还不错,更希望保修期不是昨天刚过..)
      

  2.   

    1.  datagrid中的数据是与内存中的表绑定的,当你修改DG中的数据的时候,系统也同步修改了内存中的数据,这些数据是脱机的,你必需通过程序的方法将它们的改变写与数据库,具体请参阅与ADO.NET相关的资料.(提示:表中的每个记录都有一个状态值,通过它你能知道哪些是新加的,哪些被删除,哪些记录的数据有改变等.这样你就可以只更新那些有变动的数据到数据库中)
    2.1 把插入位置以下的数据的ID都加1
         可以实现,用'update 表名 set id=id+1 where id>=10'
    2.2 插入那条数据在数据库的表中位置在哪里?
         在表的结尾
    2.3 在数据库的表的可以让他按ID升序排列吗?
        可以在查询的'SELECT'语句中使用'ORDER BY id'实现按ID序排列另外强烈建议你不要在表中间插入记录.