C# 我把数据库里的数据放到datatable里面,然后在datagridview中显示。

比方说datatable里面有3列值(日期、机构名称、交通事故次数)。我在datagridview里显示就要把日期作为datagridview的字段名,然后机构名称就在d... 比方说datatable里面有3列值(日期、机构名称、交通事故次数)。我在datagridview里显示就要把日期作为datagridview的字段名,然后机构名称就在datagridview的第一列里面显示。然后对应的交通事故次数显示在哪我想各位也应该大概了解。我现在就是怎么样把datatable里面的数据在datagridview像我说的那样?希望各位大侠帮忙。 展开
 我来答
pxz216
2011-07-29
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
DataTable dt = pdao.GetCPI(); //pdao.GetCPI()方法是 从数据库获取数据返回值为datatable类型

dataGridView1.DataSource = dt; // dataGriView1为我的 datagridview的

你说要设的列名 在sql语句里查的时候直接该 比如(select name as '姓名' , age as '年龄' from table )
xlxmh
2011-07-28 · 超过14用户采纳过TA的回答
知道答主
回答量:91
采纳率:0%
帮助的人:68.9万
展开全部
建议用listview吧,这个操作性强。专研究java了,C#忘得差不多了,就不帮你整了,提个意见 。最好自己弄个控件吧,反正DateGridView是绝对做不出这功能的,别在这钻牛角尖,换思路吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shasha110715
2011-07-28
知道答主
回答量:10
采纳率:0%
帮助的人:10.7万
展开全部
意思你要动态生成列
日期为列名,机构名称是行名,中间对应的数据是各机构在每个日期中发生的交通事故次数?
是不是这个意思?
更多追问追答
追问
恩  对对。。就是这样。而且还有一点就是 datatable里面显示的日期和机构名称可能会有重复的,比方 
日期 机构名称 事故次数 要在datagridview中这么显示
2010 上海 20 年份 2010 2011
2010 广州 10 上海 20 10
2011 上海 10 广州 10 50
2011 广州 50
追答
查了很久,问了高手,都没有做过。比较复杂,还需要研究。你搜搜datagridview动态添加列试试。我要是研究会了再告诉你。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友07da055
2011-07-28 · TA获得超过659个赞
知道小有建树答主
回答量:356
采纳率:33%
帮助的人:232万
展开全部
不知道datagridview有米有封装有方法,我是使用手动的方法来绑定值的。楼主可以参考下
先说一下步骤
1、给datagridview增加空白行,行数=datatable的行数
2、循环依次绑定值

代码如下:
dataGridView1.Rows.Add(dt.Rows.Count);//步骤1
for (int i = 0; i < dtTarget.Rows.Count; i++)//步骤2
{
dataGridView1["日期", i].Value = dt.Rows[i]["日期"];
dataGridView1["机构名称", i].Value = dt.Rows[i]["机构名称"];
dataGridView1["交通事故次数", i].Value = dt.Rows[i]["交通事故次数"];
}
更多追问追答
追问
我看了一下,你这么写,一开始给datagridview添加行,而且这行数等于dt里面的行,这样不行的。我已经把datatable里面的日期那列值作为了datagridview的列名,交通事故次数作为datagridview第一列里面的值。做个比方,x  和 y    x代表日期,y代表机构名称,那么交通事故次数则为x,y。这点能看明白吗?
追答
额,不好意思,刚刚没有看明白楼主的意思。
根据楼主的需求,步骤应该如下
1、搜索数据库,获取年份数量和机构总量。说明下,其实可以自己写算法通过datatable来获得这2个数据的,但是算法写起来很烦,而且效率很低,所以不如直接用SQL语句来获得。
2、添加datagridview的列。这里需要注意,因为datagridview的列是动态生成,所以在EXE里的datagridview不用设置列属性。
3、给datagridview增加空白行,行数=机构名称的总量
4、循环依次绑定值

代码参考,请自行组合。
1)
SQL语句参考,SELECT distinct [机构] from [表名],distinct 为去掉重复
然后将搜索到的结果,用一个数组保存,这里记做string[] Address和string[] Year

2)
dataGridView1.Columns.Add("time", "年份");
for (int i = 0; i < Year.Count-1; i++)
{
dataGridView1.Columns.Add(Year[i],Year[i]);
}

3)
dataGridView1.Rows.Add(Address.Count);

4)
for (int i = 0; i < Address.Count-1; i++)
{
dataGridView1["time", i].Value = dt.Rows[i][Address[i]];//添加机构
//搜索dt,按时间排序
DataRow[] dr = dt.Select("机构="Address[0],"日期");
for(int j=0; j<dr.Length-1; j++)
{
dataGridView1[Year[i], i].Value = dr[i][“事故次数”];
}
}
要注意一点的是,数据库中每个机构在每个日期必须有值,没有也要用0代替

纯手写,可能有点语法错误,逻辑有点复杂,楼主慢慢看把。
可能就是那个DataTable.Select有点奇怪,楼主可以查一下。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式