首先申明我不用数据绑定,没有数据源,我也不会用数据绑定,所以大侠们原谅我这么任性吧。。。
我用一个二维数组A[3.3]存储datagridview中单元格的数据。我做了个界面,在界面上可以单击datagridview的单元格进行修改,通过cellendedit事件,被修改的数据写入到A中,然后我有一个计算方法B,B通过一些参数和公式对A中的数据进行计算和修改,也就是说A的数据又一次发生了改变,现在我要把A的数据再重新导入到界面的datagridview中,难题来了我要求这些操作都是一瞬间完成的,即我对datagridview某个单元格的数据进行修改后,鼠标不点击任何按钮和单元格,datagridview自动进行更新,我现在的问题是修改某个单元格数据后必须点击下某个单元格整个datagridview的数据才会得到更新,这是问题1,问题2是我得更新数据函数是写在cellendedit事件中,有时我点击某一单元格,就是无意中点了一下,为嘛该单元格的数据自动变成0,这是为嘛啊!!!!
下面是我对于自己问题的图解,原谅我放荡不羁的画风,如果还是看不懂我的问题描述,这。。。我再想办法吧~~~
祈求大侠现身~~~
9 个解决方案
#1
木有人看懂么!!!!!大侠快粗线啊!!!!!!
#2
就冲着你的美工也得顶一发
#3
DataGridView我也研究了一段时间, 我觉得你的问题就是那个地方把数据给改了。
如果方便的话, 可以把你的代码贴出来。
如果方便的话, 可以把你的代码贴出来。
#4
你可以在DataGridView的触发事件中看看这两个函数。cellvalidating and cellvalidated
#5
DataGridView数据更新事件的编写示例
//更新数据事件
public void Update(Instance it)
{
SqlConnection sc = GetConnection();//调用GetConnections()方法,得到连接对象
try
{
sc.Open();//打开到数据库的连接
SqlCommand cmd = new SqlCommand(//创建SqlCommand对象
"update tb_friend set phone=@phone where names=@names", sc);
cmd.Parameters.Add("@names", SqlDbType.VarChar).Value = it.Name;//向SqlCommand对象添加参数
cmd.Parameters.Add("phone", SqlDbType.VarChar).Value = it.phone;//向SqlCommand对象添加参数
cmd.ExecuteNonQuery();//执行SqlCommand对象中的SQL命令
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
if (sc.State == ConnectionState.Open)//判断是否连接数据库
{
sc.Close();//如果已经连接则关闭连接
}
}
}//codego.net/tags/1/1/
//绑定dataGridView控件实现更新事件按钮
private void btn_update_Click(object sender, EventArgs e)
{
//调用datatier对象的Update()方法,更改数据库中的信息
dt.Update(new Instance() { Name = txt_name_update.Text, phone = txt_phone_update.Text });
dataGridView1.DataSource = dt.Select();//更新dataGridView1控件中的信息
Clear();//清空TextBox控件中的文本
}
//更新数据事件
public void Update(Instance it)
{
SqlConnection sc = GetConnection();//调用GetConnections()方法,得到连接对象
try
{
sc.Open();//打开到数据库的连接
SqlCommand cmd = new SqlCommand(//创建SqlCommand对象
"update tb_friend set phone=@phone where names=@names", sc);
cmd.Parameters.Add("@names", SqlDbType.VarChar).Value = it.Name;//向SqlCommand对象添加参数
cmd.Parameters.Add("phone", SqlDbType.VarChar).Value = it.phone;//向SqlCommand对象添加参数
cmd.ExecuteNonQuery();//执行SqlCommand对象中的SQL命令
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
if (sc.State == ConnectionState.Open)//判断是否连接数据库
{
sc.Close();//如果已经连接则关闭连接
}
}
}//codego.net/tags/1/1/
//绑定dataGridView控件实现更新事件按钮
private void btn_update_Click(object sender, EventArgs e)
{
//调用datatier对象的Update()方法,更改数据库中的信息
dt.Update(new Instance() { Name = txt_name_update.Text, phone = txt_phone_update.Text });
dataGridView1.DataSource = dt.Select();//更新dataGridView1控件中的信息
Clear();//清空TextBox控件中的文本
}
#6
大侠我先去试试你推荐的这两个函数哈~~~~谢顶~~~
#7
大侠,我的代码如下:
private void dataGridView_CurveDivide_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
int rowIndex = dataGridView_CurveDivide.CurrentCell.RowIndex;
int columnIndex = dataGridView_CurveDivide.CurrentCell.ColumnIndex;
change = Convert.ToDouble(dataGridView_CurveDivide.CurrentCell.Value);
CalculateNewValue(change,rowindex,columnindex);//根据新输入的值重新计算数组中的值
ImportDataToDatagridview();//把数组中的数据导入到datagridview中
}
我把 ImportDataToDatagridview()写入到两个验证函数里没有用哎???
#8
有木有人帮忙解答啊!!!!!
#9
我也被搞疯了,没有结果,
#1
木有人看懂么!!!!!大侠快粗线啊!!!!!!
#2
就冲着你的美工也得顶一发
#3
DataGridView我也研究了一段时间, 我觉得你的问题就是那个地方把数据给改了。
如果方便的话, 可以把你的代码贴出来。
如果方便的话, 可以把你的代码贴出来。
#4
你可以在DataGridView的触发事件中看看这两个函数。cellvalidating and cellvalidated
#5
DataGridView数据更新事件的编写示例
//更新数据事件
public void Update(Instance it)
{
SqlConnection sc = GetConnection();//调用GetConnections()方法,得到连接对象
try
{
sc.Open();//打开到数据库的连接
SqlCommand cmd = new SqlCommand(//创建SqlCommand对象
"update tb_friend set phone=@phone where names=@names", sc);
cmd.Parameters.Add("@names", SqlDbType.VarChar).Value = it.Name;//向SqlCommand对象添加参数
cmd.Parameters.Add("phone", SqlDbType.VarChar).Value = it.phone;//向SqlCommand对象添加参数
cmd.ExecuteNonQuery();//执行SqlCommand对象中的SQL命令
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
if (sc.State == ConnectionState.Open)//判断是否连接数据库
{
sc.Close();//如果已经连接则关闭连接
}
}
}//codego.net/tags/1/1/
//绑定dataGridView控件实现更新事件按钮
private void btn_update_Click(object sender, EventArgs e)
{
//调用datatier对象的Update()方法,更改数据库中的信息
dt.Update(new Instance() { Name = txt_name_update.Text, phone = txt_phone_update.Text });
dataGridView1.DataSource = dt.Select();//更新dataGridView1控件中的信息
Clear();//清空TextBox控件中的文本
}
//更新数据事件
public void Update(Instance it)
{
SqlConnection sc = GetConnection();//调用GetConnections()方法,得到连接对象
try
{
sc.Open();//打开到数据库的连接
SqlCommand cmd = new SqlCommand(//创建SqlCommand对象
"update tb_friend set phone=@phone where names=@names", sc);
cmd.Parameters.Add("@names", SqlDbType.VarChar).Value = it.Name;//向SqlCommand对象添加参数
cmd.Parameters.Add("phone", SqlDbType.VarChar).Value = it.phone;//向SqlCommand对象添加参数
cmd.ExecuteNonQuery();//执行SqlCommand对象中的SQL命令
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
if (sc.State == ConnectionState.Open)//判断是否连接数据库
{
sc.Close();//如果已经连接则关闭连接
}
}
}//codego.net/tags/1/1/
//绑定dataGridView控件实现更新事件按钮
private void btn_update_Click(object sender, EventArgs e)
{
//调用datatier对象的Update()方法,更改数据库中的信息
dt.Update(new Instance() { Name = txt_name_update.Text, phone = txt_phone_update.Text });
dataGridView1.DataSource = dt.Select();//更新dataGridView1控件中的信息
Clear();//清空TextBox控件中的文本
}
#6
大侠我先去试试你推荐的这两个函数哈~~~~谢顶~~~
#7
大侠,我的代码如下:
private void dataGridView_CurveDivide_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
int rowIndex = dataGridView_CurveDivide.CurrentCell.RowIndex;
int columnIndex = dataGridView_CurveDivide.CurrentCell.ColumnIndex;
change = Convert.ToDouble(dataGridView_CurveDivide.CurrentCell.Value);
CalculateNewValue(change,rowindex,columnindex);//根据新输入的值重新计算数组中的值
ImportDataToDatagridview();//把数组中的数据导入到datagridview中
}
我把 ImportDataToDatagridview()写入到两个验证函数里没有用哎???
#8
有木有人帮忙解答啊!!!!!
#9
我也被搞疯了,没有结果,