首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# DataGridView 增添、修改、删除数据实现

2013-08-01 
C# DataGridView 添加、修改、删除数据实现本帖最后由 wyz365889 于 2012-10-19 10:34:36 编辑现在遇到的问

C# DataGridView 添加、修改、删除数据实现
本帖最后由 wyz365889 于 2012-10-19 10:34:36 编辑 现在遇到的问题是怎么添加、删除一行数据到DatagridView显示并同步更新到数据库。

代码如下:
public partial class Form_User : Form
    {

        private DataOpt dataOpt;
        private SqlCommand sqlCmd;
        private SqlDataAdapter sqlDA;
        private DataSet ds;
        private DataTable dt;
        public Form_User()
        {
            InitializeComponent();
            dataOpt = new DataOpt();
            dataOpt.SQLConn();

            string strSql = "select * from T_User";

            sqlCmd = new SqlCommand(strSql, dataOpt.conn);
            sqlDA = new SqlDataAdapter(sqlCmd);
            ds = new DataSet();

            sqlDA.Fill(ds,"T_User");
            dt = ds.Tables["T_User"];
        

            this.dataGridView_user.DataSource = ds;
            this.dataGridView_user.DataMember = "T_User";

               this.dataGridView_user.AllowUserToAddRows = false;
               this.dataGridView_user.EditMode = DataGridViewEditMode.EditProgrammatically;
               this.dataGridView_user.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
               this.dataGridView_user.Columns[1].Visible = false;
               //this.dataGridView_user.ColumnHeadersVisible = false;


               this.dataGridView_user.RowHeadersVisible = false;

               this.dataGridView_user.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
                
            this.comboBox1_Group.Items.Add("Administrators");
            this.comboBox1_Group.Items.Add("Guests");
            this.comboBox1_Group.Items.Add("Teachers");
            this.comboBox1_Group.SelectedIndex = 0;


        
           
        }

        private void button_Add_Click(object sender, EventArgs e)//添加一行数据
        {
          

            string strUserID = textBox1_UserID.Text;
            string strUserPWD = textBox3_PWD.Text;
            string strGroupID = comboBox1_Group.Text;
            string strRemark = textBox2_remark.Text;

            //string[] strRow ={ strUserID, "", strUserPWD, strGroupID, strRemark };
            //dataGridView_user.Rows.Add(new object[] { strUserID, "22", strUserPWD, strGroupID, strRemark });

            DataRow dRow = dt.NewRow();
            dt.Rows.Add(dRow);
        }

        private void button_del_Click(object sender, EventArgs e)//删除一行数据
        {
            //int RowNumber;
            //if (null == dataGridView_user.CurrentCell)


            //{
            //    return;
            //}

            //int iRow = dataGridView_user.CurrentCell.RowIndex;
            //dataGridView_user.Rows.RemoveAt(iRow);

            dataGridView_user.DataSource = ds.Tables[0];
            dt = ds.Tables["T_User"];
            int iRowNow = dataGridView_user.CurrentCell.RowIndex;
            DataRow dRow = dt.Rows[iRowNow];
            dRow.Delete();
            sqlDA.Update(ds);
        
        }
    }
[解决办法]
两种方案,第一种:每增改删一行数据记录后,直接操作数据库物理数据表,再进行重新绑定

第二种,每增改删一行数据记录时,更新内存表,最后一次保存更改到物理数据表。


[解决办法]

引用:
两种方案,第一种:每增改删一行数据记录后,直接操作数据库物理数据表,再进行重新绑定

第二种,每增改删一行数据记录时,更新内存表,最后一次保存更改到物理数据表。

+1
[解决办法]
第二种,每增改删一行数据记录时,更新内存表,重新绑定内存表,当退出datagridview时一次保存更改到物理数据表。
[解决办法]
楼主:数据库的增改删及与数据控件datagridview的操作,任何一本书上都会提到。

建议你先理流程,再查资料完成,这种功能没法给你写代码。
[解决办法]
那你修改的时候把传一个字段的值,比如主键ID。在编辑页面写一个查询的方法,获取到这个ID为查询条件。把你查到的数据记录显示到编辑页面。剩下来的思路就跟添加一样了。
[解决办法]
引用:
引用:
楼主:数据库的增改删及与数据控件datagridview的操作,任何一本书上都会提到。



建议你先理流程,再查资料完成,这种功能没法给你写代码。


首先我确定我查了很多资料,从我上面代码尝试的注释就可以看到,但是我每次操作后,都不能同步更新到数据库,我想知道我漏了哪一步,或者流程具体该怎么走!


肯定是漏掉了插入数据库的操作啊,要插入的数据你等获取到吧
ADO.NET的流程会不  SqlConnect  SqlCommand  open 执行  close,这样数据才会被擦入到数据库里面啊

插入完成后在读取到DataTable里面绑定即可显示你刚才加的数据了。

[解决办法]
主键本身是有唯一索引的作用的,每个主键都内置一个索引记录,当主键修改时,索引也会跟着修改,会导致索引的杂乱,影响索引的查找速度,虽然可以事后重整索引,但是重整过程整个数据库将无法使用。
必须选择插入后不再有改动的列作为主键,如果没有这个列,就必须使用自增长列DataSet ds = new DataSet();
SqlDataAdapter sda;

SqlCommandBuilder scb = new SqlCommandBuilder(sda);
sda.Update(ds);
this.dataGridView1.DataSource = ds.Tables[0];
[解决办法]
引用:
现在又遇到一个 问题 c# datagridview 插入一行数据后,主键跟表里面冲突,怎么解决! datagridview绑定表后,有方法不通过操作select语句来判断是否主键重复吗?


你的主键是int行的话,就设置自增长
Guid的话。Guid.NewGuid()

总之就是增加时不要人工输入主键

热点排行