datagridview一行值更新了.怎么把这一行更新值更新到数据库里面.那位高手详细说一下.

解决方案 »

  1.   

    在datagridview中记录一列数据库的id,数据库id列设置为隐藏的,一行值更新了就会知道改行值对应数据库的哪条记录了。
      

  2.   

    是呀.我一行有很多字段.我要怎么传进去才是重点我不需要记录ID.条件我也会指定ID了..难道我的UPDATA的字符串必须要把所有字段指定吗?还有用哪个事件提交上去呢.dtatgridview里面我看了所有的事件好像都不行一样.
      

  3.   

    好像有个RowChange事件吧,你找找
      

  4.   


    没有RowChange这个事件
    CellValueChanged
    这个一加载窗体就运行了.而我另我一个问题是怎么一行更新到数据库里面.
      

  5.   

    貌似是RowEditing事件吧 各位大神
      

  6.   


     protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
        {
           string sql = "....";    }或者你写一个更新方法 直接用datagridview.datasource=“更新方法” 直接搞定了
      

  7.   

    通过事件触发,例如,DataGridView_CellValueChanged的时候,提示是否需要保存数据,如果需要,就commit,否则,roll back
      

  8.   

    我的思路是,在列表中加按钮列,然后加事件
    private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
            {
                if (e.ColumnIndex == 3 && e.RowIndex >= 0)
                {
                    MessageBox.Show(this.dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString());
                }
            }不知道还有没有好方法,呵呵
      

  9.   

    这个问题我也遇到过,绑定数据的时候绑定一个关键字DataKeyNames,然后在后面加一个控件就可以获得当前值了.在本页更新,不明白的话,可以把代码贴出来
      

  10.   


    没有这个RowEditing事件.难道要手写这个事件吗?我在事件窗口里面没有看到这个
      

  11.   

    晕,有那么难吗,实在不行你就像11楼说的,加一列模板列,里面放上linkbutton 或者别的什么 随你便
    之后再click事件里写“你要做什么事  是更新还是添加 还是删除 也随便你  ”这样还不OK  那你就先去学习下datagridview教程吧 看看他到底是个什么东西
      

  12.   


    貌似datagridview是VS08里的,我VS10里没有了。
    不过都差不多的。。你不行就按个试吧
      

  13.   


    我就是要点击右边红色边框后,左边的填充进去的数据1添加到数据库里面
    11楼的方法,我没有看明白
    我在dataGridView1_CellValueChanged事件里面有这样写,可这样写不行.我需要的是整行.而这只是指定的单元格修改更新.整行更新我要需要每个字段要指定吗?如果指定要在哪个事件里面.[code=C#]
            private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
            {            string strUP = string.Format(@"update Scheduling SET {0}={1} where Numbers={2}", dataGridView1.Columns[this.dataGridView1.CurrentCell.ColumnIndex].HeaderText, dataGridView1.SelectedCells[0].Value.ToString(), dataGridView1.CurrentRow.Cells[0].Value.ToString());
                SystemGlobalVar.DatabaseMethods.getCommand(strUP);                
            }
    [/code]
      

  14.   

    http://hi.csdn.net/attachment/201104/29/433335_1304059275D0U5.png
    图标地址.
      

  15.   

    8楼说的是GridView1,是asp.net里的控件吧,楼主说的是WINFORM里的控件
      

  16.   

    一行就一个id,id确定了,哪一行的记录就知道了呀,修改玩在从新绑定下就ok了
      

  17.   

    晕啊,整错了。以为是asp.net里的呢。。winform里的 只能是foreach 遍历整行,然后e.row.cell[某一列的值]
    接着执行 
      

  18.   

    这个知道.可我字段哪么多.难道我一定要写个SQL字符串来修改?
      

  19.   

    谢谢 ,这个不是我想要的.这样太那个了.我就是想输完值就立即更新.还要用户点击btn事件不好..
      

  20.   

    那你也要有一个用来辨识出是哪一行的列啊,哪怕是隐藏的,在你鼠标点击的时候自动获取当前行的标识列(不能重复)  然后sql语句里where 标识列= XXX  来更新 就好了啊  
      

  21.   

    试试这个呢?private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
            {
                if (e.RowIndex >= 0)
                {
                    if (this.dataGridView1.SelectedRows[0].Cells[e.ColumnIndex].Value != null)
                    {
                        MessageBox.Show(this.dataGridView1.SelectedRows[0].Cells[e.ColumnIndex].Value.ToString());
                    }
                }
            }
      

  22.   

    有谁见过update * set Table where XX=XX 这样的语句的???我是没有见过,更新当然要指定字段名了啊   例如:
        departmentId= this.txt_departmentId.text.trim();有多少写多少。。
      

  23.   

    楼主的意思是不是改一个值就修改一下数据库啊?update语名必须只定列名,有多少写多少
      

  24.   

    就是RowEditing这个事件,除非你用的不是GridView
      

  25.   


    兄弟,他用的的确不是GridView  是winform里的datagridview 
      

  26.   

    哈哈,datagridview和gridview区分不开吗?楼主你要是改一个值一更新,这个思路不太好,操作数据库也太频繁了吧
      

  27.   

    我是要修改一行中任意单元格数据.整行修改还有如果我要是更新语句,每个字段指定值.咋指定呢 string strSql = string.Format(@" UPDATE Scheduling
    SET   Day1 ={0}, Day2 ={1}, Day3 ={2}, Day4 ={3}, Day5 ={4}, Day6 ={5}, Day7 ={6}, Day8 ={7}, Day9 ={8}, Day10 ={9}, Day11 ={10}, Day12 ={11}, Day13 ={12}, Day14 ={13}, Day15 ={14}, Day16 ={15}, Day17 ={16}, Day18 ={17}, Day19 ={18}, Day20 ={19}, Day21 ={20}, Day22 ={21}, Day23 ={22}, Day24 ={23}, Day25 ={24}, Day26 ={25}, Day27 ={26}, Day28 ={27}, Day29 ={28}, Day30 ={29}, Day31 ={30}",
    dataGridView1.CurrentRow.Cells[0].Value.ToString()
    dataGridView1.CurrentRow.Cells[1].Value.ToString()
    dataGridView1.CurrentRow.Cells[2].Value.ToString()
    dataGridView1.CurrentRow.Cells[3].Value.ToString()
    dataGridView1.CurrentRow.Cells[4].Value.ToString()
    dataGridView1.CurrentRow.Cells[4].Value.ToString()
    .....
    dataGridView1.CurrentRow.Cells[30].Value.ToString()这样改着不现实吧.感觉也是错的....
      

  28.   

    是的,这sql语句不长,就是麻烦点而已。没什么我貌似看懂了。莫非楼主弄的是更新时间的东东
      

  29.   

    我自己解决了
    在listView填充时同时进行更新...多谢各位了.
      

  30.   

    楼主,贴下代码吧,我也有同样的需求,或者发个邮件
    [email protected]