读书人

【疑问】关于绑定到DataGridView的Dat

发布时间: 2013-02-25 10:23:36 作者: rapoo

【疑问】关于绑定到DataGridView的DataTable的问题
利用C#在做应用时偶然间发现的关于DataGridView的问题。下面是一个Demo。
窗口界面如图:
【疑问】关于绑定到DataGridView的DataTable的有关问题
后台代码如下:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
SqlDataAdapter sqlDA;
DataTable dt;
public Form1()
{
InitializeComponent();
}

private void btnModify_Click(object sender, EventArgs e)
{
dgv.CurrentCell.Value = "123";
DataRowView drv = (DataRowView)dgv.CurrentRow.DataBoundItem;
MessageBox.Show(drv.Row.RowState.ToString());
}

private void Form1_Load(object sender, EventArgs e)
{
string strConn = "Data Source=192.168.1.110;Initial Catalog=GD-Pipe;Persist Security Info=True;User ID=sa;Password=123";
sqlDA = new SqlDataAdapter("SELECT * FROM ModelType", new SqlConnection(strConn));
SqlCommandBuilder sqlCB = new SqlCommandBuilder(sqlDA);
dt = new DataTable();
sqlDA.Fill(dt);

dgv.DataSource = dt;
}
}
}

点击“修改”按钮后,DataGridView和绑定在上面的DataTable中的所对应的值都改变了,可是DataTable中的RowState依然是Unchanged,这是怎么回事呢?
环境:VS2010,SQL2008
DataGridView
[解决办法]
可能与这句有关SqlCommandBuilder sqlCB = new SqlCommandBuilder(sqlDA);

我这里测试了显示的是Modify

我是new一个DataTable,添加列和行,然后执行dt.AcceptChanges()。单击按钮后修改的代码跟你完全一样,弹出的是Modify。
[解决办法]
datagridview貌似要回车移动到下一行才算提交这一行吧。提交之后才会改变状态,
你这还是属于还在编辑中吧。

读书人网 >C#

热点推荐