一个填充datatable的问题
c# --------------------编程问答-------------------- 你每次都dt.NewRow,可不是一直往下填充呗,读取数据,有几条数据,就增加几行,然后填充 --------------------编程问答-------------------- dr2.Read();
一个填充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
怎样改代码呢?
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)--------------------编程问答-------------------- dr2.Read();后面,new一个row就够了,然后对它的三列填充数据 --------------------编程问答-------------------- if (dr2.HasRows)
{
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();
}
应该是你这里的代码,你这个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#