SQL查询结果集与dataGridView1现有列名如何对应?

yanele 2010-12-29 09:55:07
自己做了一个查询界面,用了dataGridView1,并固定列名如下:

序号,品号,品名,规格,单位,数量,备注

现在从SQL数据库中查询相应的信息,如何对查询的数据结果,与列对号入座。
因为界面的列顺序允许前后拖动,这与查询结果集的列顺序不一致。请高手指点!
...全文
570 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Excalibur_ 2013-02-14
  • 打赏
  • 举报
回复
dataGridView1.Columns.Clear(); dataGridView1.Columns.Add("id", "id"); dataGridView1.Columns.Add("Dtime", "日期"); dataGridView1.Columns.Add("name", "类型名"); dataGridView1.Columns.Add("isfocus", "是否重点"); dataGridView1.Columns.Add("think", "是否注释"); dataGridView1.Columns.Add("info", "内容"); dataGridView1.Columns["id"].DataPropertyName = "id"; dataGridView1.Columns["Dtime"].DataPropertyName = "Dtime"; dataGridView1.Columns["name"].DataPropertyName = "name"; dataGridView1.Columns["isfocus"].DataPropertyName = "isfocus"; dataGridView1.Columns["think"].DataPropertyName = "think"; dataGridView1.Columns["info"].DataPropertyName = "info";
yanele 2010-12-30
  • 打赏
  • 举报
回复
if (ds2.Tables[0].Rows.Count > 0)
{
dataGridView2.Rows.Clear();
//清除dataGridView2所有行
for (int i = 0; i < ds2.Tables[0].Rows.Count; i++)
{
dataGridView2.Rows.Add(1);
for (int j = 0; j < dataGridView2.ColumnCount; j++)
{
for (int k = 0; k < ds2.Tables[0].Columns.Count; k++)
{
if (dataGridView2.Columns[j].HeaderText.Trim() == ds2.Tables[0].Columns[k].ColumnName.ToString().Trim())
{
dataGridView2.Rows[i].Cells[j].Value = ds2.Tables[0].Rows[i][k].ToString();
}
}
}
}
}

这样仿佛可以了。
danjiewu 2010-12-30
  • 打赏
  • 举报
回复
需要动态显示列名那datagridview怎么会又固定列名?
lz到底想要什么样的效果
yanele 2010-12-30
  • 打赏
  • 举报
回复
列名是固定的,但列的顺序不固定。
xrongzhen 2010-12-30
  • 打赏
  • 举报
回复
保持dataGridView 的列头名与数据库表字段名一致,或者能一一对应,赋值时注意就行了
luojie81 2010-12-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yanele 的回复:]
查询结果是多变的,跟数据库没有直接关系,不同的SQL查询语句,字段名是不一样的,是需要动态显示列名的。所以绑定到数据库的字段不好操作。
[/Quote]
既然动态显示,为什么还固定列名?还是一部分固定一部分动态?
benyouyong 2010-12-29
  • 打赏
  • 举报
回复
绑定到列就可以了..别用索引
dataGridView1.Columns["列名"].DataPropertyName = "数据库字段";
yanele 2010-12-29
  • 打赏
  • 举报
回复
现在最关键问题是允许列拖动。我不太明白1楼说的意思!!!
jackylove1985 2010-12-29
  • 打赏
  • 举报
回复
您應該是寫死了欄位名,1樓說法也可以,當然也有另外一種,就是當你查詢出來之後,你要對DataGridView的Columns 進行定義。你要定義你的欄位對應那段SQL的哪個欄位。
我個人比較傾向1樓的做法。
_三皮_ 2010-12-29
  • 打赏
  • 举报
回复
我也遇到这个问题,没解决,改为动态列了。
SELECT COL1 AS 序号,COL2 AS 品号, ... FROM TABLE1

关注此问题,帮顶
luojie81 2010-12-29
  • 打赏
  • 举报
回复
在你定义固定列的时候保证datapropername与sql的字段名称一致就可以了.
yanele 2010-12-29
  • 打赏
  • 举报
回复
查询结果是多变的,跟数据库没有直接关系,不同的SQL查询语句,字段名是不一样的,是需要动态显示列名的。所以绑定到数据库的字段不好操作。

110,534

社区成员

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

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

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