求救:查询sql表中所有字段作为Gridview的表头

星辰hq 2015-09-11 02:09:38
比如说我数据库表是这样:

我想查询这个表中的所有字段作为GridView的表头,应该怎么做啊,搞了大半天,都没搞出来。

<asp:GridView runat="server" CssClass="dropdownlist" ID="GridView1" AutoGenerateColumns="False" CellPadding="4" Width="100%" ForeColor="#333333" GridLines="Both" AllowPaging="True" RowStyle-HorizontalAlign="Center" OnRowCreated="create" >
<Columns>
<asp:BoundField DataField="phase" HeaderText="相位" />
<asp:BoundField DataField="终端" HeaderText="终端" />
<asp:BoundField DataField="#1" HeaderText="#1" />
<asp:BoundField DataField="#2" HeaderText="#2" />
<asp:BoundField DataField="#3" HeaderText="#3" />
<asp:BoundField DataField="#4" HeaderText="#4" />
<asp:BoundField DataField="#5" HeaderText="#5" />
<asp:BoundField DataField="#6" HeaderText="#6" />
<asp:BoundField DataField="#7" HeaderText="#7" />
<asp:BoundField DataField="#8" HeaderText="#8" />
<asp:BoundField DataField="#9" HeaderText="#9" />
<asp:BoundField DataField="#10" HeaderText="#10" />
</Columns>

<HeaderStyle BackColor="#1CB89E" HorizontalAlign="Center" />
<RowStyle Font-Size="12px" BackColor="#5BD5C1" />
<AlternatingRowStyle BackColor="#e6e6e6" />
<PagerStyle Font-Overline="false" HorizontalAlign="Right" />
<PagerStyle BackColor="#AAE2D9" HorizontalAlign="Center" />

</asp:GridView>

我就想知道后台要怎么写,还有 DB.cs 中的方法如何写。
我需要详细步骤,因为本人小白一个....

...全文
422 26 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
insus 2015-09-12
  • 打赏
  • 举报
回复
如果前一篇还不够满意,看这篇升级篇: http://www.cnblogs.com/insus/p/3303192.html
insus 2015-09-12
  • 打赏
  • 举报
回复
缪军 2015-09-12
  • 打赏
  • 举报
回复
gridView有个布尔值的属性AutoGenerateColumns,用于设置自动绑定数据集的所有字段 你的查询语句输出多少字段那么就绑定多少字段, 如果你的查询语句是:SELECT * FROM ....这种写法,那么就自动绑定数据表的所有字段, 就算你数据结构修改了,也不用修改代码 有关AutoGenerateColumns属性的详细资料,参见MSDN: GridView.AutoGenerateColumns 属性
ajianchina 2015-09-11
  • 打赏
  • 举报
回复
还是需要自己写点类的,特别是多个数据集需要转为同一标准的数据格式的时候,写个类方便很多,你不写类,想你这样各个表的列名只要需要显示到Gridview的时候,就必须保持一致,那就太不方便了,也没人这样写各个表的字段。

//这个类专门用于你应对各个数据集转换的类型
public class Data 
{
	public string 列1{ get; set; } 
	public string 列2{ get; set; } 
	public string 列3{ get; set; } 
}

//接下来,查到的各个表的数据集全部转为List<Data>,并将其绑定Gridview
//Gridview.DataSource = datalist;//datalist就是List<Data >
这样的话,你Gridview的列名都是一致的,应对不同表的数据集的问题在前面转换为List<Data>的时候就已经解决了,即便原先数据库中各个表的字段不太一样,但最终转换为同一个数据结构,并且Gridview也不需要你手写各个列了。
JefferyLJF 2015-09-11
  • 打赏
  • 举报
回复
http://www.cnblogs.com/linyechengwei/archive/2011/03/24/1994091.html 看一下是不是这个里面的意思
likevs 2015-09-11
  • 打赏
  • 举报
回复
GridView 不是有个属性AutoGenerateColumns="True"吗,用它啊,你看看工具提示这个属性的作用了没? 还有就是<asp:SqlDataSource ID="SqlDataSource1" runat="server"></asp:SqlDataSource>这个控件,不懂楼主有没有用过先, GridView 的DataSourceID="SqlDataSource1"这个属性,完全可以实现你要的效果啊
星辰hq 2015-09-11
  • 打赏
  • 举报
回复
引用 16 楼 ajianchina 的回复:
居然这楼还跟了这么长 .....
查询添加的我已经完成了,现在的问题是因为前台的列是根据数据库来定,也就是这个列是不确定,所以我就想前台只写一个固定的,其它的在后台查询数据库添加列,但要绑定才能显示出来,不然就只显示我在前台绑定的列而已
ajianchina 2015-09-11
  • 打赏
  • 举报
回复
居然这楼还跟了这么长 我前面说的助手类将增、删、该、查、返回dataset,datatable数据集全部集成封装好了,里面的方法全部是基于ado.net,你如果是在代码里直接操作数据库,这个会给你带来极大方便,调用方法,将sql字符串以入参形式传进去,直接出来datatable或dataset,像datatable的数据构架跟你数据库的构架是一样的,你的Gridview要修改就是一些样式,列这些东西你想跟数据库保持一致的话,就一点都不需要动,如果个别需要调整,可以通过添加模板列的方式解决,总之极大的方便了你对数据库的操作。 另外,你可以尝试用linq to sql来查询,完全以对象的概念来操作数据,列数据如想变更,也可以通过linq查询的结果进行后续的自由处理。
星辰hq 2015-09-11
  • 打赏
  • 举报
回复
引用 13 楼 Z65443344 的回复:
不明白你想干什么 前台设一个列名,是给谁用? 要么你就给每个列设置列名,要么就都不设置.只设置一个是想干啥
因为前台的列是根据数据库来定,也就是这个列是不确定,所以我就想前台只写一个固定的,其它的在后台查询数据库添加列,但要绑定才能显示出来,不然就只显示我在前台绑定的那个列而已
於黾 2015-09-11
  • 打赏
  • 举报
回复
如果你只有一列的名字需要转换,完全可以这样写SQL语句 select id as 序号,name,type from table 这样就直接自动重命名成中文了
於黾 2015-09-11
  • 打赏
  • 举报
回复
引用 12 楼 bingle14 的回复:
如果前台就设一个列名,后台添加多个列名,我要怎样去绑定
不明白你想干什么 前台设一个列名,是给谁用? 要么你就给每个列设置列名,要么就都不设置.只设置一个是想干啥
星辰hq 2015-09-11
  • 打赏
  • 举报
回复
引用 11 楼 Z65443344 的回复:
[quote=引用 10 楼 bingle14 的回复:] [quote=引用 5 楼 ajianchina 的回复:] 不需要这样一个个的设列名,你可以用个DBHelper助手类,很方便,GridView直接绑定datatble 或者你用linq to sql,查询生成list,直接绑定 列名都会跟你原表一致。
前台不一个个设列名的话,怎么在后台绑定表头啊[/quote] 为什么要绑定表头? 除非你想数据库里的列名和前台显示的列名不一致,才需要这样绑定,比如数据库里是英文缩写,而前台是中文全称 如果你就想数据库里的列名作为表头,前台那些乱糟糟的代码都删掉,直接后台绑定数据源就行了[/quote] 如果前台就设一个列名,后台添加多个列名,我要怎样去绑定
於黾 2015-09-11
  • 打赏
  • 举报
回复
引用 10 楼 bingle14 的回复:
[quote=引用 5 楼 ajianchina 的回复:] 不需要这样一个个的设列名,你可以用个DBHelper助手类,很方便,GridView直接绑定datatble 或者你用linq to sql,查询生成list,直接绑定 列名都会跟你原表一致。
前台不一个个设列名的话,怎么在后台绑定表头啊[/quote] 为什么要绑定表头? 除非你想数据库里的列名和前台显示的列名不一致,才需要这样绑定,比如数据库里是英文缩写,而前台是中文全称 如果你就想数据库里的列名作为表头,前台那些乱糟糟的代码都删掉,直接后台绑定数据源就行了
星辰hq 2015-09-11
  • 打赏
  • 举报
回复
引用 5 楼 ajianchina 的回复:
不需要这样一个个的设列名,你可以用个DBHelper助手类,很方便,GridView直接绑定datatble 或者你用linq to sql,查询生成list,直接绑定 列名都会跟你原表一致。
前台不一个个设列名的话,怎么在后台绑定表头啊
  • 打赏
  • 举报
回复
我的意思是连百度 ADO.NET 都不会了啊……
星辰hq 2015-09-11
  • 打赏
  • 举报
回复
引用 2 楼 starfd 的回复:
太白了连查询都不会了啊……
sql查询语句我已经知道写,只是那个DB.cs里面的方法和后台具体怎么写就不知道
ajianchina 2015-09-11
  • 打赏
  • 举报
回复
自己再搜搜,很多的,你可以改写里面的方法,这样查询就方便许多了 http://www.cnblogs.com/steed-zgf/archive/2012/01/06/2314559.html
星辰hq 2015-09-11
  • 打赏
  • 举报
回复
引用 5 楼 ajianchina 的回复:
不需要这样一个个的设列名,你可以用个DBHelper助手类,很方便,GridView直接绑定datatble 或者你用linq to sql,查询生成list,直接绑定 列名都会跟你原表一致。
能不能给个具体步骤啊,我知道思路,但真不会写
星辰hq 2015-09-11
  • 打赏
  • 举报
回复
引用 1 楼 ligyu110 的回复:
网上搜一下,有获取表列名的SQL
额,忘了说,sql查询语句我已经知道怎么写,只是那个DB.cs里面的方法和后台不知道怎么写 【注意,sql查询字段名的语句在这里】

select name from syscolumns where id = object_id(N'PD_monitoring');
老李家的小二 2015-09-11
  • 打赏
  • 举报
回复
通过SQL获取表的列名,创建一个DataTable,根据获取的列名创建表结构,最后将查询的数据保存到DataTable中,GridView绑定DataTable即可
加载更多回复(3)

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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