当前位置:编程学习 > C#/ASP.NET >>

怎么把数据库的内容显示在DataGridView中

DataGridView的列标题是已经定好了的,而且那张要显示的表的列比DataGridView的列多一列,新手。。望详细解答。。 --------------------编程问答-------------------- 先从数据库里把数据集合查返回去来至一个DataTable里
然后DataGridview.DataSource = DataTable;就可以了 --------------------编程问答-------------------- 什么叫多一列?表里字段3列,你要自定义插入一列? --------------------编程问答--------------------
引用 2 楼 bulls5988 的回复:
什么叫多一列?表里字段3列,你要自定义插入一列?


就比如说我已经做好的DataGridView有9列,而我想要显示的那张表有10列 --------------------编程问答-------------------- 为什么多一列?
从数据库中取出数据来后(放在dataset→datatable)
把datatable中没用的列删除了 再显示 --------------------编程问答-------------------- 手动绑定datagridview,用commandText选择指定的数据表字段,也可以用sqldatasource选择指定表的字段名就可以了 --------------------编程问答-------------------- 首先自定义Datatable,
其次根据数据库返回的数据集再填充到DataTable里
再次DataGridview.DataSource = DataTable; --------------------编程问答-------------------- 给你哥例子,虽然代码不好看


//连接数据库代码,SQL语句自己写,我的DATAGRIDVIEW 叫 d_report,CONN自己写
  
                private SqlDataAdapter find_do;
                private DataSet ds;
                SqlCommand cmd = new SqlCommand(sql_str, conn);
                //实例化SQLCOMMAND
                find_do = new SqlDataAdapter();
                find_do.SelectCommand = cmd;
                ds = new DataSet();
                find_do.Fill(ds, "rs");//填充DS
                try
                {
                    //实现最后一列求合计
                       DataTable dataTable = ds.Tables["rs"];
                    DataRow dataRows;
                    dataRows = dataTable.NewRow();
                    dataRows[4] = dataTable.Compute("Sum(应收费)", "true");
                    dataRows[5] = dataTable.Compute("Sum(实收费)", "true");
                    dataRows[6] = dataTable.Compute("Sum(停车时长)", "true");
                    dataRows[7] = dataTable.Compute("Sum(免除)", "true");
                    dataRows[8] = dataTable.Compute("Sum(水单减免)", "true");
                    dataTable.Rows.Add(dataRows);

                    //第一列插入“自动编号列”
                       ds.Tables[0].Columns.Add("编号");
                    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                    {
                        if (i < ds.Tables[0].Rows.Count - 1)
                        {
                            ds.Tables[0].Rows[i]["编号"] = i + 1;
                        }
                        else
                        {
                            ds.Tables[0].Rows[i]["编号"] = "合计";
                        }
                    }

                    ds.Tables[0].Columns["编号"].SetOrdinal(0);
                    d_report.DataSource = dataTable;//绑定数据
--------------------编程问答-------------------- 上面的代码有几列做了列求和,第一列插入了一列叫编号的列,用来显示查询条件内的结果数目。你不用可以删掉 --------------------编程问答-------------------- 我的DataGridView的表头是已经弄好了的,但如果直接绑定数据源的话,那个数据源的表头会接在我的DataGridView的表头后面,但是我只需要它的内容。。 --------------------编程问答--------------------
引用 4 楼 mking0412 的回复:
为什么多一列?
从数据库中取出数据来后(放在dataset→datatable)
把datatable中没用的列删除了 再显示

额,今天刚弄dataset,怎么把dataset的内容放到datatable里啊。。然后就是删除不要的列怎么弄。。弄完了后直接绑定这个datatable就可以了吗? --------------------编程问答--------------------
引用 6 楼 qiuyu820968 的回复:
首先自定义Datatable,
其次根据数据库返回的数据集再填充到DataTable里
再次DataGridview.DataSource = DataTable;

我先用dataset把数据从数据库弄出来,然后把需要的行放进datatabl,但是它显示该行已经属于另一个表 --------------------编程问答--------------------
引用 10 楼 gohome0620 的回复:
引用 4 楼 mking0412 的回复:

为什么多一列?
从数据库中取出数据来后(放在dataset→datatable)
把datatable中没用的列删除了 再显示

额,今天刚弄dataset,怎么把dataset的内容放到datatable里啊。。然后就是删除不要的列怎么弄。。弄完了后直接绑定这个datatable就可以了吗?



            //4.创建一个dataset对象
            DataSet ds1 = new DataSet();
            //5.数据处理
            DataTable dtb = new DataTable();
            sqlDataAdapter1.Fill(ds1);
            DataTable dt=ds1.Tables["Table"];
            dt.Columns.Remove(dt.Columns["你的打他table中的列明"]);


LZ 其实好多人都给你提供思路了 你可以根据这些一步步去实现
像你说的 datatable的列的删除 ,完全可以去google  我也是现查的哦--不过可以用没问题 试过 --------------------编程问答-------------------- 1.先把DataSet转化成DataTable,如下;
    DataTable dt = DataSet.Tables[0];
2.在DataTable 中新生成一列“AAA”,如下;
    dt.Columns.Add("AAA", typeof(System.String));

3.把要显示的值给列AAA绑上,这个你就会了吧.
--------------------编程问答-------------------- “DataGridView的列标题是已经定好了的,而且那张要显示的表的列比DataGridView的列多一列”

建议你直接用DataTable绑定,把不想显示的列隐藏就行了,何必搞得这么麻烦。。。 --------------------编程问答--------------------
引用 14 楼 sdl2005lyx 的回复:
“DataGridView的列标题是已经定好了的,而且那张要显示的表的列比DataGridView的列多一列”

建议你直接用DataTable绑定,把不想显示的列隐藏就行了,何必搞得这么麻烦。。。


补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,