c#datagridview 添加行
string InName ;//一个每次单击传入的量 ,每次单击传入的都不一样
private void buttonAdd_Click(object sender, EventArgs e)
{
sqlDnn.con.Open();
string sql = "SELECT CN_GUID,CN_S_NAME FROM TN_SYS_FILE_CLASS WHERE CN_S_NAME = '" + InName + "'";
try
{
SqlDataAdapter tableFunction = new SqlDataAdapter(sql, sqlDnn.con); //查询数据
DataSet ds = new DataSet();
tableFunction.Fill(ds, "TN_SYS_FILE_CLASS");
dataGridViewPart.DataSource = ds.Tables["TN_SYS_FILE_CLASS"];
}
catch (Exception)
{
MessageBox.Show("载入部门列表失败!");
this.Close();
throw;
}
但这样,每次单击只能显示一行数据,后面的数据总会覆盖前面的数据,请教,怎么使前面的数据不被覆盖,
一行一行的添加,, datagridview c#
[解决办法]
dataGridViewPart.DataSource = ds.Tables["TN_SYS_FILE_CLASS"];每次都改变了
如果你想保留原来的数据 查询后 插入到已有的数据里
[解决办法]
查询得到的一个表。把里面的数据取出来就行
try
{
SqlDataAdapter tableFunction = new SqlDataAdapter(sql, sqlDnn.con); //查询数据
DataSet ds = new DataSet();
tableFunction.Fill(ds, "TN_SYS_FILE_CLASS");
DataTable dt = ds.Tables["TN_SYS_FILE_CLASS"];
for(int i=0;i<dt.Rows.Count;i++)
{
dgv.Rows.Add(dt.Rows[i]);
}
}
试试吧。
[解决办法]
那就不用for循环了 直接取查询的第一条记录。
这样还不行,就不知道是我理解错了 还是你表达问题
[解决办法]
从你描述看好像是每次查询只有一条记录,那绑定显示永远就只有一条记录对?
如果是上面说的那样,就舍弃绑定这种方法,改用数据添加到控件上的方法也是很快的
最笨的方法如:
处理结果.Rows[计数].Cells[0].Value = 数据[5];
处理结果.Rows[计数].Cells[1].Value = 数据[4];
处理结果.Rows[计数].Cells[2].Value = 数据[6];
......
这样添加
如果用数据表,那就建立一个临时的表,每次合并读出来的数据,绑定就可以了
[解决办法]
全局变量
dataTable dtManage;
//第一次时 dtManage = ds.Tables["TN_SYS_FILE_CLASS"];
dataGridViewPart.DataSource = dtManage;
其它时候
for(...)
dtManage.rows.add(newRow);