如何绑定datagridview和dataset?然后通过dataset来显示数据库的更新,显示在datagridview中

ckk1991328 2012-05-24 05:07:19
如何绑定datagridview和dataset?然后通过dataset来显示数据库的更新,显示在datagridview中
已经通过代码将datagridview和access数据库绑定了,datagridview在form1中,我想在form2中通过butto来增加一条数据库内容,我在form2中的butto里写了增加的代码,又写了重新绑定form1中datagridview的代码,可是datagridview中的记录没有显示出新增加的内容,我是希望一增加,datagridview就能显示出新增加的内容,我同学说用datagridview和dataset绑定,通过dataset来实现,但是我不会绑定。。。我是新新新新手。。。求指教,谢谢了,最好能有代码参考,万分感谢
...全文
224 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
EnForGrass 2012-05-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
如何绑定datagridview和dataset?然后通过dataset来显示数据库的更新,显示在datagridview中
已经通过代码将datagridview和access数据库绑定了,datagridview在form1中,我想在form2中通过butto来增加一条数据库内容,我在form2中的butto里写了增加的代码,又写了重新绑定form1中datagridview的代码,可是da……
[/Quote]
可以用委托去刷新datagridview

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

namespace WinMilkProject.Project
{

public partial class Form1 : Form
{
Thread myThread;

public int frequency = 0;//更新时间频率
public static bool isUse = false;//是否停止更新
public static string statusInfo = string.Empty;//状态
private delegate void myDelegate(DataTable dt);//定义委托
public Form1()
{
InitializeComponent();
label2.Text = "更新频率为:" + (trackBar1.Value / 1000).ToString() + "秒";
}

private void Form1_Load(object sender, EventArgs e)
{
myThread = new Thread(startFillDv);//实例化线程
myThread.Start();

}

private void startFillDv()
{
while (true)
{
if (isUse)
{
statusInfo = "正在实时更新数据......";
DataTable dt = CommonEx.GetDataTableEx("select * from table1");//自己写的数据封装类 能够返回一个datatable
Grid(dt);
Thread.Sleep(frequency);
}
else
{
statusInfo = "停止更新!";
}
}

}

private void Grid(DataTable dt)
{
if (this.InvokeRequired)
{
this.Invoke(new myDelegate(Grid), new object[] { dt });
}
else
{
try
{
this.dataGridView1.DataSource = null;
this.dataGridView1.DataSource = dt;
dt = null;
statusInfo = "更新完成!";
}
catch
{

}
}

}

private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
if (this.myThread.IsAlive)
{
this.myThread.Abort();//结束线程
}
}

private void timer1_Tick(object sender, EventArgs e)
{
label1.Text = statusInfo;
frequency = trackBar1.Value;
if (statusInfo.Trim() == "正在实时更新数据......")
{
pictureBox1.Visible = true;
}
else
{
pictureBox1.Visible = false;
}

}

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
if (checkBox1.Checked)
{
isUse = true;
}
else
{
isUse = false;
}

}

private void trackBar1_Scroll(object sender, EventArgs e)
{
label2.Text = "更新频率为:" + (trackBar1.Value / 1000).ToString() + "秒";
}

}
}

梦世界 2012-05-24
  • 打赏
  • 举报
回复
重新绑定数据源!可以定义一个方法 ,然后再添加成功时,调用这个方法啊,

至于楼上方法的方法是窗体之间传参啊,对你绝对实用!哈哈哈!
梦世界 2012-05-24
  • 打赏
  • 举报
回复
重新绑定数据源!可以定义一个方法 ,然后再添加成功时,调用这个方法啊,

至于楼上方法的方法是窗体之间传参啊,对你绝对实用!哈哈哈!
gxl19911228 2012-05-24
  • 打赏
  • 举报
回复

Form2中
DataGridView dgv = null;
//窗体构造函数接受Form1的datagridview
public Form2(DataGridView d)
: this()
{
dgv = d;
}
private void button1_Click(object sender, EventArgs e)
{
dgv.AutoGenerateColumns = false;
dgv.DataSource = 数据源dataset
}

Form1中
Form2 f2 = new Form2(你要操作的datagridview);
f2.show();


这样就ok了
熙风 2012-05-24
  • 打赏
  • 举报
回复
datagridview.DataSource=Dataset.table[0]

111,126

社区成员

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

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

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