各位大侠请进!C#问题 ( 积分: 50 )

  • 主题发起人 主题发起人 jyhzp
  • 开始时间 开始时间
J

jyhzp

Unregistered / Unconfirmed
GUEST, unregistred user!
在c#中创建了一个form,form中加入一个dataGrid:
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.MainMenu mainMenu1;
public System.Windows.Forms.DataGrid dataGrid1;
。。。。。
然后定义了一个类DB,
public class Db
在该类中定义一个函数做如下查询:
string select="select top 50 * from MyTable order by dateTime desc";
OleDbDataAdapter da=new OleDbDataAdapter(select,conn);
DataSet ds=new DataSet();
da.Fill(ds,"MyTable");
请问,我应该怎么做才能把这个DataSet和form的dataGrid捆绑起来?
先谢过了!!
 
在c#中创建了一个form,form中加入一个dataGrid:
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.MainMenu mainMenu1;
public System.Windows.Forms.DataGrid dataGrid1;
。。。。。
然后定义了一个类DB,
public class Db
在该类中定义一个函数做如下查询:
string select="select top 50 * from MyTable order by dateTime desc";
OleDbDataAdapter da=new OleDbDataAdapter(select,conn);
DataSet ds=new DataSet();
da.Fill(ds,"MyTable");
请问,我应该怎么做才能把这个DataSet和form的dataGrid捆绑起来?
先谢过了!!
 
先加入一个DataGrid,并与数据源“绑定”;再在da.Fill(ds,"MyTable");
后面加:DataGrid1.DataBind();即可。
 
楼上的,能描述清楚一点吗?我关键是如何调用form1中的dataGrid??
这一点我不明白,多谢
 
string select="select top 50 * from MyTable order by dateTime desc";
OleDbDataAdapter da=new OleDbDataAdapter(select,conn);
DataSet ds=new DataSet();
da.Fill(ds,"MyTable");
DataTable dt = new DataTable();//定义一个数据表
dt = ds.Tables['MyTable'];//从DataSet中取出MyTable表!!
Form1.DataGrid1.DataSource = dt;//为DataGrid1指定数据源!!
//由于是外部调用,将DataGrid1设为public,这是不好的做法。
Form1.DataGrid1.DataBind();//数据绑定。!!
注意:数据绑定之前(DataBind),要为DataGrid1指定好显示列。在窗体设计区,选择DataGrid1,右边有属性生成器,点击编辑。
 
to xypHikaru:
我昨天也是这么做的,但始终提示:“Form1”并不包含对“DataGrid1”的定义
搞不懂为什么
注:dataGrid是 定义为public
 
在Form1内建立一个方法。调用
“string select="select top 50 * from MyTable order by dateTime desc";
OleDbDataAdapter da=new OleDbDataAdapter(select,conn);
DataSet ds=new DataSet();
da.Fill(ds,"MyTable");”这部分(建立一个函数),返回DataSet;
然后在Form1内使用
DataTable dt = new DataTable();//定义一个数据表
dt = ds.Tables['MyTable'];//从DataSet中取出MyTable表!!
DataGrid1.DataSource = dt;//为DataGrid1指定数据源!!
DataGrid1.DataBind();//数据绑定。!!
这样就没有问题了。
 
呵呵,我的目的就是为了把form和数据库操作分开,所以才设置了Db这类。
我是想知道,在Db类中如何调用Form类中的东西,不能用new,用了dataGrid也不能正确显示
 
to:jyhzp
你这样分层的,我头一次看到哦。[:D]
界面是表示层,需要数据访问层提供方法。怎么让数据访问层来控制界面呢。
 
那就算是我现在添加一个Form2,也不能直接调用Form1中的元素吧,
这种原理应该差不多,而不是数据层的问题,我是为了把数据捆绑到dataGrid中而已
后来把dataGrid作为变量传入就解决了
 
后退
顶部