datagridview 我把从表里查询出来的数据放到了dataset里面 然后再填充进datagridview中 现在问题是 如果我的datagridview中本来就有几行数据的 我不想把它替换掉 而是要把查询结果增加到这个datagridview的下面 要怎么做? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 分别遍历dataset和datagridview 就可以了 定义一个新的dataset,然后遍历原来的两个dataset中的数据重新绑定...这是我,作为一个新手的思路... 是这样的 form1中按一个添加按钮 弹出窗口form2 然后在form2中选择了要添加的项之后 确定添加到form1中的datagridview中 比如说第一次添加的时候只选了一条记录 确定后发现还一条记录没选 又按添加按钮 弹出窗口form2 那么这么选择的数据 就会把原先已经添加到datagridview中的数据替换掉了 DataTable dt1 = (DataTable)dataGridView1.DataSource;DataSet dsNew = ...dt1.Merge(dsNew.Tables[0]);dataGridView1.DataSource = dt1;说明:先取得现有DataGridView的数据集。dsNew是“从表里查询出来的数据”。假设两个结果集结构一样,使用Merge就能合并两个DataTable。 .......自己都会往DGV里填数据里 还看不懂? 我做了一个简单的例子,在一个窗体内添加4个textbox控件,3个butten控件,3个datagridview控件,然后把下面的代码贴上,不难理解 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace WindowsApplication1{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } DataTable dt1 = new DataTable(); DataTable dt2 = new DataTable(); private void Form1_Load(object sender, EventArgs e) { dt1.TableName = "student1"; dt1.Columns.Add(new DataColumn("name")); dt1.Columns.Add(new DataColumn("age")); dt2.TableName = "student2"; dt2.Columns.Add(new DataColumn("name")); dt2.Columns.Add(new DataColumn("age")); } private void button1_Click(object sender, EventArgs e) { string name = textBox1.Text.Trim(); int age = Convert.ToInt32(textBox2.Text.Trim()); DataRow dr = dt1.NewRow(); dr["name"] = name; dr["age"] = age; dt1.Rows.Add(dr);//.InsertAt(dr, 0); dataGridView1.DataSource = dt1; } private void button2_Click(object sender, EventArgs e) { string name = textBox3.Text.Trim(); int age = Convert.ToInt32(textBox4.Text.Trim()); DataRow dr = dt2.NewRow(); dr["name"] = name; dr["age"] = age; dt2.Rows.Add(dr);//.InsertAt(dr, 0); dataGridView2.DataSource = dt2; } private void button3_Click(object sender, EventArgs e) { DataTable dt3 = new DataTable(); dt3.TableName = "student3"; dt3.Columns.Add(new DataColumn("name")); dt3.Columns.Add(new DataColumn("age")); for (int i = 0; i < dt1.Rows.Count; i++) { DataRow dr = dt3.NewRow(); dr.ItemArray = dt1.Rows[i].ItemArray; dt3.Rows.Add(dr); } for (int j = 0; j < dt2.Rows.Count; j++) { DataRow dr = dt3.NewRow(); dr.ItemArray = dt2.Rows[j].ItemArray; dt3.Rows.Add(dr); } dataGridView3.DataSource = dt3; } }} 1.主窗体,buttonAdd是添加按钮。 public partial class FormMain : Form { public static DataSet ds; public FormMain() { InitializeComponent(); } private void FormMain_Load(object sender, EventArgs e) { System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection("Server=localhost;Database=test;Integrated Security=SSPI;"); System.Data.SqlClient.SqlDataAdapter sa = new System.Data.SqlClient.SqlDataAdapter("select * from table1", con); ds = new DataSet(); sa.Fill(ds); dataGridView1.DataSource = ds.Tables[0]; } private void buttonAdd_Click(object sender, EventArgs e) { FormSub2 FormSub2 = new FormSub2(); FormSub2.Show(); } }2.添加选择的子窗体 public partial class FormSub2 : Form { public FormSub2() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { DataRow dr1 = FormMain.ds.Tables[0].NewRow(); dr1["name"] = "张三"; dr1["age"] = "8"; FormMain.ds.Tables[0].Rows.Add(dr1); } }说明:ds是全局属性,任何窗体对ds的修改,都立刻反应到FormMain的dataGridView1上。button1_Click是个追加记录的例子。也可以用我上面提到的Merge方法。 字符串匹配 哪种算法最好 救命啊!mediaelement控件的MediaEnded事件,为什么只触发一次啊 [高难度]Winform 求N(3>=N>=1)叉树算法。 ext:combobox的初始化问题 如何根据ID号去修改其它字段的值,急急急!!! 怎样写代码点击子窗体上的button按钮关闭子窗体? 请教一个送分问题 如何使RichTextBox滚屏。 关于c#编写的聊天软件,服务端在具有公网ip一端,客户端在不同的内网,那么不同的客户端之间如何进行通讯? 求两个字符串的正则 救命啊。!希望各位大侠伸出援手。救救我把。 请问如何重复使用某个类的定义?
比如说第一次添加的时候只选了一条记录 确定后发现还一条记录没选 又按添加按钮 弹出窗口form2 那么这么选择的数据 就会把原先已经添加到datagridview中的数据替换掉了
dt1.Merge(dsNew.Tables[0]);
dataGridView1.DataSource = dt1;说明:先取得现有DataGridView的数据集。dsNew是“从表里查询出来的数据”。假设两个结果集结构一样,使用Merge就能合并两个DataTable。
.......
自己都会往DGV里填数据里 还看不懂?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
DataTable dt1 = new DataTable();
DataTable dt2 = new DataTable(); private void Form1_Load(object sender, EventArgs e)
{
dt1.TableName = "student1";
dt1.Columns.Add(new DataColumn("name"));
dt1.Columns.Add(new DataColumn("age"));
dt2.TableName = "student2";
dt2.Columns.Add(new DataColumn("name"));
dt2.Columns.Add(new DataColumn("age"));
}
private void button1_Click(object sender, EventArgs e)
{
string name = textBox1.Text.Trim();
int age = Convert.ToInt32(textBox2.Text.Trim());
DataRow dr = dt1.NewRow();
dr["name"] = name;
dr["age"] = age;
dt1.Rows.Add(dr);//.InsertAt(dr, 0);
dataGridView1.DataSource = dt1;
} private void button2_Click(object sender, EventArgs e)
{
string name = textBox3.Text.Trim();
int age = Convert.ToInt32(textBox4.Text.Trim());
DataRow dr = dt2.NewRow();
dr["name"] = name;
dr["age"] = age;
dt2.Rows.Add(dr);//.InsertAt(dr, 0);
dataGridView2.DataSource = dt2;
} private void button3_Click(object sender, EventArgs e)
{
DataTable dt3 = new DataTable();
dt3.TableName = "student3";
dt3.Columns.Add(new DataColumn("name"));
dt3.Columns.Add(new DataColumn("age"));
for (int i = 0; i < dt1.Rows.Count; i++)
{
DataRow dr = dt3.NewRow();
dr.ItemArray = dt1.Rows[i].ItemArray;
dt3.Rows.Add(dr);
}
for (int j = 0; j < dt2.Rows.Count; j++)
{
DataRow dr = dt3.NewRow();
dr.ItemArray = dt2.Rows[j].ItemArray;
dt3.Rows.Add(dr);
}
dataGridView3.DataSource = dt3;
}
}
}
{
public static DataSet ds;
public FormMain()
{
InitializeComponent();
}
private void FormMain_Load(object sender, EventArgs e)
{
System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection("Server=localhost;Database=test;Integrated Security=SSPI;");
System.Data.SqlClient.SqlDataAdapter sa = new System.Data.SqlClient.SqlDataAdapter("select * from table1", con);
ds = new DataSet();
sa.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
}
private void buttonAdd_Click(object sender, EventArgs e)
{
FormSub2 FormSub2 = new FormSub2();
FormSub2.Show();
}
}2.添加选择的子窗体 public partial class FormSub2 : Form
{
public FormSub2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
DataRow dr1 = FormMain.ds.Tables[0].NewRow();
dr1["name"] = "张三";
dr1["age"] = "8";
FormMain.ds.Tables[0].Rows.Add(dr1);
}
}说明:ds是全局属性,任何窗体对ds的修改,都立刻反应到FormMain的dataGridView1上。button1_Click是个追加记录的例子。也可以用我上面提到的Merge方法。