读书人

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

发布时间: 2013-08-01 15:23:18 作者: rapoo

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()

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

读书人网 >C#

热点推荐