动态给dataGridView赋值的问题,急...

evjen 2009-04-22 07:36:05
加精
一个winform界面,上面有两个按钮a,b
下面有一个dataGridView控件,该控件未做任何动作或改动

点击按钮a,查询的是订单表,
点击按钮b,查询的是客户表,

订单表的列数和客户表的列数以及字段值都不一样

怎么实现点击a,在dataGridView中显示订单表信息
点击b,在dataGridView中显示客户表信息???

谢谢各位...
...全文
1459 108 打赏 收藏 转发到动态 举报
写回复
用AI写文章
108 条回复
切换为时间正序
请发表友善的回复…
发表回复
zlj193 2009-05-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 evjen 的帖子:]
一个winform界面,上面有两个按钮a,b
下面有一个dataGridView控件,该控件未做任何动作或改动

点击按钮a,查询的是订单表,
点击按钮b,查询的是客户表,

订单表的列数和客户表的列数以及字段值都不一样

怎么实现点击a,在dataGridView中显示订单表信息
点击b,在dataGridView中显示客户表信息???

谢谢各位...
[/Quote]

我想楼主的主要目的在后面吧!不是两个数据源不知道绑吧!而是两个数据源绑一个dataGridView上,再对这个dataGridView操作的时候出问题吧!!那样的话你就只要在绑定前判断下要绑那个数据源,分别给dataGridView取个名称。。比如!
if (this.formOpType == FormOpType.入库委托确认)
{
this.dataGridView.Name = "gvEditGridViewSure";
}
else
{
this.dataGridView.Name = "gvEditGridView";
}
shui8iuhs 2009-05-05
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fdc123 的回复:]
很简单的呀 就是动态绑定数据源的呀

SqlDataAdapter sqladap = new SqlDataAdapter("select * from " + str + "", db.sqlcon);
sqladap.Fill(dt);
DataGridView1.DataSource = dt;
DataGridView1.DataBind();
你可以参考下嘛 就是按钮A传的表名是 str==订单表 按钮B传的表名是 客户表
你自己再想想吧
[/Quote]

同意,不过你在赋值
DataGridView1.DataSource = dt;
之前,先写:
DataGridView1.DataSource = null;
zhu371816210 2009-05-05
  • 打赏
  • 举报
回复
这么简单的问题啊!
CluoLeo 2009-04-27
  • 打赏
  • 举报
回复
来晚了 我就等着接分了
林g 2009-04-27
  • 打赏
  • 举报
回复
不懂,帮顶!
asnm882008 2009-04-27
  • 打赏
  • 举报
回复
wuyu
q359600900 2009-04-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fdc123 的回复:]
很简单的呀 就是动态绑定数据源的呀

SqlDataAdapter sqladap = new SqlDataAdapter("select * from " + str + "", db.sqlcon);
sqladap.Fill(dt);
DataGridView1.DataSource = dt;
DataGridView1.DataBind();
你可以参考下嘛 就是按钮A传的表名是 str==订单表 按钮B传的表名是 客户表
你自己再想想吧
[/Quote]就是这样了
zhengady 2009-04-27
  • 打赏
  • 举报
回复
帮顶。顺便学习下
Fighting_Lin 2009-04-27
  • 打赏
  • 举报
回复

你可以用两个datagriview
初始化时让一个visiable=false
然后通过在a。b按钮的事件里控制两个datagridview的visiable就可以了
心雨楼 2009-04-27
  • 打赏
  • 举报
回复
路过
zhang409497873 2009-04-27
  • 打赏
  • 举报
回复
DataGridView 在右上角点开连接数据库,就可以直接联节
zccmy22 2009-04-27
  • 打赏
  • 举报
回复
DataGridView 本身不要设置字段名称,

之后,每次赋给不同的数据源,他会自动的把你数据源中的字段名加载进来。

这样不同的表没关系。只要更换数据源就可以了。
FlyBee 2009-04-27
  • 打赏
  • 举报
回复
这个问题居然到 100 楼 LZ太强了
NeverCooldowN 2009-04-27
  • 打赏
  • 举报
回复
就点a时把gridview的DataSource设为订单表,点b时把DataSource设为客户表。
yuekai2008 2009-04-27
  • 打赏
  • 举报
回复
我给个思路:建一个全局的datatable,根据不同的情况datatable填充的数据不同,datagridview的数据源就绑定到datatable就行了。代码参考:
public DataTable dt=new Datatable();//注意这个必须为全局变量
事件A代码:

conn.Open();
SqlCommand cmcandan = new SqlCommand("", conn);
cmcandan.CommandText = "select 项目名称,单价,食品类别 from 餐牌表";
DataSet set = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmcandan);
da.Fill(set, "allcandan");
dt = set.Tables["allcandan"];
datagridview1.datasource=dt;

事件B代码:
conn.Open();
SqlCommand cmcandan = new SqlCommand("", conn);
cmcandan.CommandText = "select * from 客户表";
DataSet set = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(cmcandan);
da.Fill(set, "allcandan");
dt= set.Tables["allcandan"];
datagridview1.datasource=dt;
附注,如果要想让datagrieview中的列名称为中文名,修改SQL语句就行了,如select name as‘姓名’,sex as '性别'from 表。
yxlovemoney 2009-04-27
  • 打赏
  • 举报
回复
大家都说得那么详细,我不好意思说了
就用sqlDataAdapter的对象,fill()进DataSet里面的table
sqlDataAdapter da=new sqlDataAdapter("select * from [table]");
DataSet ds=new DataSet();

ds.clear(); 忘记是ds.clear,还是ds.tables.clear,试一下就行了。
da.Fill(ds,"table1");
DatagridView.DataSource=ds.tables[0];
这样就已经可以更新了。
如果要查询就要先清空一下。
sqqlovezqy 2009-04-27
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 chaozi_249 的回复:]
19楼说的很详细了,你去试下。
[/Quote]

he
wmjpkn 2009-04-27
  • 打赏
  • 举报
回复
你可以先在设计页面对GridView进行启用分页,还可以用 GridView1.PageSize 调整页面中的行数, GridView1.PagerSettings.PageButtonCount 用来控制要显示的页数
wmjpkn 2009-04-27
  • 打赏
  • 举报
回复
DataSet ds;
SqlDataAdapter datadapter;
private static string strConnection = "Data Source=.;" + "Initial Catalog=BlueHill;" + "Integrated Security=SSPI;";

public DataSet ab(string tablename)
{
SqlConnection Blue = new SqlConnection(strConnection);
Blue.Open();
ds = new DataSet();
datadapter = new SqlDataAdapter();
SqlCommand cmSelect = new SqlCommand();
cmSelect.Connection = Blue;
cmSelect.CommandText = "select * from " + tablename +"";
datadapter.SelectCommand = cmSelect;
datadapter.Fill(ds, "ab");
Blue.Close();
return ds;
}
private void button4_Click(object sender, EventArgs e)
{
string tbname = "表名a";
ds = ab(tbname);
dataGridView1.DataSource = ds.Tables["ab"];
}

private void button5_Click(object sender, EventArgs e)
{
string tbname = "表名b";
ds = ab(tbname);
dataGridView1.DataSource = ds.Tables["ab"];

}

这是我用VS2005下编的 你可以参考下
tryitout 2009-04-27
  • 打赏
  • 举报
回复
建议楼主看看《ASP.NET2.0揭秘》,非常全。可以做为参考手册。
加载更多回复(87)

111,126

社区成员

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

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

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