c#datagridview 添加行

ZHAIXIONUO1234 2013-01-14 05:26:46

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;
}

但这样,每次单击只能显示一行数据,后面的数据总会覆盖前面的数据,请教,怎么使前面的数据不被覆盖,
一行一行的添加,,
...全文
399 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangzhitao0912 2013-04-08
  • 打赏
  • 举报
回复
AcceptChanges()这个属性
  • 打赏
  • 举报
回复
忘记了,其实绑定表有2种写法 1:dataGridViewPart.DataSource = ds.Tables["TN_SYS_FILE_CLASS"]; 2:每次表名取不同的绑定如: tableFunction.Fill(ds, "TN_SYS_FILE_CLASS");//第1次 tableFunction.Fill(ds, "TN_SYS_FILE_CLASS-N");//第N次 dataGridViewPart.DataSource = ds.Tables; 这是最简捷方法了
rinall 2013-01-15
  • 打赏
  • 举报
回复
引用 3 楼 ZHAIXIONUO1234 的回复:
引用 1 楼 rinall 的回复:dataGridViewPart.DataSource = ds.Tables["TN_SYS_FILE_CLASS"];每次都改变了 如果你想保留原来的数据 查询后 插入到已有的数据里 我知道每次查询的结果都不一样,但怎么使第二行别覆盖第一行啊??但我又不把第一行的数据保存,我只想让它在datagridview里显示,下次运行……
全局变量 dataTable dtManage; //第一次时 dtManage = ds.Tables["TN_SYS_FILE_CLASS"]; dataGridViewPart.DataSource = dtManage; 其它时候 for(...) dtManage.rows.add(newRow);
  • 打赏
  • 举报
回复
从你描述看好像是每次查询只有一条记录,那绑定显示永远就只有一条记录对? 如果是上面说的那样,就舍弃绑定这种方法,改用数据添加到控件上的方法也是很快的 最笨的方法如: 处理结果.Rows[计数].Cells[0].Value = 数据[5]; 处理结果.Rows[计数].Cells[1].Value = 数据[4]; 处理结果.Rows[计数].Cells[2].Value = 数据[6]; ...... 这样添加 如果用数据表,那就建立一个临时的表,每次合并读出来的数据,绑定就可以了
ZHAIXIONUO1234 2013-01-15
  • 打赏
  • 举报
回复
引用 6 楼 xianfajushi 的回复:
方法有2 1做数据表合并文章 2做控件不绑定文章
我只想一行一行的在datagridview里添加数据,等添加五行后,我在点击一个按钮,觉得是否保存这五条数据到数据库里,出现的情况是,第二条总覆盖第一条,永远添加不了两行 能具体说下不,我是在能添加多行后,在按一个按钮决定是不是添加到数据库
ZHAIXIONUO1234 2013-01-15
  • 打赏
  • 举报
回复
没有人知道啊??我只想一行一行的在datagridview里添加数据,等添加五行后,我在点击一个按钮,觉得是否保存这五条数据到数据库里,出现的情况是,第二条总覆盖第一条,永远添加不了两行
  • 打赏
  • 举报
回复
方法有2 1做数据表合并文章 2做控件不绑定文章
寂小魔 2013-01-14
  • 打赏
  • 举报
回复
引用 4 楼 ZHAIXIONUO1234 的回复:
引用 2 楼 mimrc7993 的回复:查询得到的一个表。把里面的数据取出来就行 C# code?1234567891011 try { SqlDataAdapter tableFunction = new SqlDataAdapter(sql, sqlDnn.con); //查询数据 ……
那就不用for循环了 直接取查询的第一条记录。 这样还不行,就不知道是我理解错了 还是你表达问题
ZHAIXIONUO1234 2013-01-14
  • 打赏
  • 举报
回复
引用 2 楼 mimrc7993 的回复:
查询得到的一个表。把里面的数据取出来就行 C# code?1234567891011 try { SqlDataAdapter tableFunction = new SqlDataAdapter(sql, sqlDnn.con); //查询数据 DataSet d……
我不是要把整个表读出来,我想读哪行数据,哪行就在datagridview里显示,并且第二行不要把第一行覆盖了
ZHAIXIONUO1234 2013-01-14
  • 打赏
  • 举报
回复
引用 1 楼 rinall 的回复:
dataGridViewPart.DataSource = ds.Tables["TN_SYS_FILE_CLASS"];每次都改变了 如果你想保留原来的数据 查询后 插入到已有的数据里
我知道每次查询的结果都不一样,但怎么使第二行别覆盖第一行啊??但我又不把第一行的数据保存,我只想让它在datagridview里显示,下次运行,一切重新,代码怎么改啊
寂小魔 2013-01-14
  • 打赏
  • 举报
回复
查询得到的一个表。把里面的数据取出来就行
            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]);
                }
             }
试试吧。
rinall 2013-01-14
  • 打赏
  • 举报
回复
dataGridViewPart.DataSource = ds.Tables["TN_SYS_FILE_CLASS"];每次都改变了 如果你想保留原来的数据 查询后 插入到已有的数据里

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧