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

一个填充datatable的问题


一个填充datatable的问题
从两个表中读取数据填充一个datatable,代码如下:

    DataTable dt = new DataTable();
            //将现有数据整合为一个dataTable
            using (
                OracleDataReader dr =
                    DbHelperOra.ExecuteReader(
                        "select zname,a.jg_id from t_xt_zzjg a ,tb_v2_bztype b where a.jg_id=b.jg_id order by b.jg_id asc")
                )
            {
                if (dr.HasRows)
                {
                    while (dr.Read())
                    {
                        string cl = dw(dr["jg_id"].ToString().Substring(0, 4)) + dr["zname"];
                        //创建列
                        dt.Columns.Add(cl);
                        using (
                          OracleDataReader dr2 =
                              DbHelperOra.ExecuteReader("select * from tb_v2_dbinfo where m79='" + y +
                                                        "' and m80='" + m + "' and jg_id='" + dr["jg_id"] + "'")
                          )
                        {
                            if (dr2.HasRows)
                            {
                                dr2.Read();
                                DataRow drow = dt.NewRow();
                                drow[cl] = dr2["M1"];
                                dt.Rows.Add(drow);
                                DataRow drow1 = dt.NewRow();
                                drow1[cl] = dr2["M2"];
                                dt.Rows.Add(drow1);
                                DataRow drow2 = dt.NewRow();
                                drow2[cl] = dr2["M3"];
                                dt.Rows.Add(drow2);
                            }
                        }
                    }

                }


得到的结果如下:

六班   一班    四班
6
7
8
5
6
7
9
9
9

希望的结果:
六班   一班    四班
6       5       9
7       6       9
8       7       9

怎样改代码呢?
c# --------------------编程问答-------------------- 你每次都dt.NewRow,可不是一直往下填充呗,读取数据,有几条数据,就增加几行,然后填充 --------------------编程问答-------------------- dr2.Read();
                                DataRow drow = dt.NewRow();
                                drow[cl] = dr2["M1"];
                                dt.Rows.Add(drow);
                                DataRow drow1 = dt.NewRow();
                                drow1[cl] = dr2["M2"];
                                dt.Rows.Add(drow1);
                                DataRow drow2 = dt.NewRow();
                                drow2[cl] = dr2["M3"];
                                dt.Rows.Add(drow2);
这里的问题 --------------------编程问答-------------------- 参考
private void Page_Load(object sender, System.EventArgs e)
{
   if( ! this.Page.IsPostBack)
   {
     dt = new DataTable();
     dt.Columns.Add("Id");
     dt.Columns.Add("CommodityName");
     dt.Columns.Add("CommodityNumber");
     this.ViewState.Add("dt", dt);
    }
}

private void Button1_Click(object sender, System.EventArgs e)
{
  DataTable dt = (DataTable)this.ViewState["dt"];
  DataRow dr = dt.NewRow();
  dr["Id"] = int.Parse(this.TextBox1.Text);
  dr["CommodityName"] = this.TextBox2.Text;
  dr["CommodityNumber"] = int.Parse(this.TextBox3.Text);
  dt.Rows.Add(dr);
  dt.AcceptChanges();   
}
--------------------编程问答-------------------- dr2.Read();后面,new一个row就够了,然后对它的三列填充数据 --------------------编程问答-------------------- if (dr2.HasRows)
应该是你这里的代码,你这个if里面把每一列都new了一个行 才导致的。
--------------------编程问答-------------------- C# winform 登陆示例http://tieba.baidu.com/p/2707928579 --------------------编程问答-------------------- 很明显是循环里面的数据填充不对啊,填充的行列索引不对啊。。。。亲 --------------------编程问答-------------------- 表结构一样吗,最好是查询的时候整合成一个表来的简单方便。 --------------------编程问答-------------------- --------------------编程问答-------------------- dataTable.Marge --------------------编程问答-------------------- 现在没思路了,求个写法,谢谢各位老师 --------------------编程问答-------------------- 还没有解决,求教 --------------------编程问答-------------------- 先组织好数据,再填充额 --------------------编程问答--------------------
3楼++ --------------------编程问答--------------------
  
int nRowCount = dt.Rows.Count();
int nDRColCount = dr2.Columns.Count(); //意思是这样,语法不知道啊,自己看看怎么写
if(nRowCount==0)
{
    for(int i=0;i<nDRColCount;i++)
    {
      dt.Rows.Add(dt.NewRow());
    }     
}
int nIndex = 0;
dr2.Read();
DataRow drow = dt.Rows[nIndex]; 
nIndex++;                                                              
drow[cl] = dr2["M1"];                                                                 
drow = dt.Rows[nIndex]; 
nIndex++;                                   
drow[cl] = dr2["M2"];                                                                
drow = dt.Rows[nIndex]; 
nIndex++;                                  
drow[cl] = dr2["M3"];                                 
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,