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

操作DataTable

public DataTable CreateDataTable(DataTable dt)
        {
问题一:在这里为“dt”增加“36”列,并指定各列的“名字”。应该怎样写???

            foreach (DataRow dr in dt.Rows)
            {
                string nf = dr["NF"].ToString().Trim();
                string bmbh = dr["BMBH"].ToString().Trim();
                string sfz = dr["SFZ"].ToString().Trim();

问题二:在这里循环为每条记录的“新增的36列”赋值。值是从数据库中查询出的记录集“dt_staff”,所以要再循环判断一下。
如果,dr_staff["YF"].ToString().Trim() == "1"则添加到新增的第一列,dr_staff["YF"].ToString().Trim() == "12"则添加到新增的第二列,dr_staff["YF"].ToString().Trim() == "3"则添加到新增的第一三列,直到添加了第36列。
每行的值应该怎样添加法???

最后返回“Dt”
                DataTable dt_staff = new M_BLL.T_Select().RtScore_StaffHZ(sfz, nf, bmbh);
                foreach (DataRow dr_staff in dt_staff.Rows)
                {

                    if (dr_staff["YF"].ToString().Trim() == "1")
                    { 
                         
                    }
                }
            }
        }
--------------------编程问答-------------------- 参考 --------------------编程问答-------------------- 添加行 --------------------编程问答--------------------
引用 2 楼 lmaohuanl 的回复:
添加行

正解。膜拜高手。 --------------------编程问答--------------------


            DataTable table = new DataTable();//实例化DataTable
            table.Columns.Add("column1", typeof(string));//添加一列
            table.Columns.Add("column2", typeof(string));
            table.Columns.Add("column3", typeof(string));//后面省略

            DataTable dt_staff = new M_BLL.T_Select().RtScore_StaffHZ(sfz, nf, bmbh);//这里是你获取到的数据集
            foreach (DataRow dr_staff in dt_staff.Rows)
            {
                DataRow row = table.NewRow();
                /**
                 * 如果,dr_staff["YF"].ToString().Trim() == "1"则添加到新增的第一列,
                 * dr_staff["YF"].ToString().Trim() == "12"则添加到新增的第二列,
                 * dr_staff["YF"].ToString().Trim() == "3"则添加到新增的第三列,直到添加了第36列。
                 * */
                switch (dr_staff["YF"].ToString().Trim())
                {
                    case "1":
                        row[0] = "";
                        break;
                    case "2":
                        row[2] = "";
                        break;
                    case "3":
                        row[3] = "";
                        break;
                    default:
                        break;
                }
                table.Rows.Add(row);
            }
--------------------编程问答--------------------
引用 2 楼 lmaohuanl 的回复:
添加行


+1 --------------------编程问答--------------------

//方法一:

DataTable  tblDatas = newDataTable("Datas");
DataColumn dc = null;

//赋值给dc,是便于对每一个datacolumn的操作
dc =tblDatas.Columns.Add("ID",Type.GetType("System.Int32"));
dc.AutoIncrement= true;//自动增加
dc.AutoIncrementSeed = 1;//起始为1
dc.AutoIncrementStep = 1;//步长为1
dc.AllowDBNull = false;//

dc = tblDatas.Columns.Add("Product",Type.GetType("System.String"));
dc = tblDatas.Columns.Add("Version",Type.GetType("System.String"));
dc = tblDatas.Columns.Add("Description",Type.GetType("System.String"));

DataRow newRow;
newRow = tblDatas.NewRow();
newRow["Product"] = "大话西游";
newRow["Version"] = "2.0";
newRow["Description"] = "我很喜欢";
tblDatas.Rows.Add(newRow);

newRow = tblDatas.NewRow();
newRow["Product"] = "梦幻西游";
newRow["Version"] = "3.0";
newRow["Description"] = "比大话更幼稚";
tblDatas.Rows.Add(newRow);

//方法二:

DataTable tblDatas = newDataTable("Datas");
tblDatas.Columns.Add("ID", Type.GetType("System.Int32"));
tblDatas.Columns[0].AutoIncrement = true;
tblDatas.Columns[0].AutoIncrementSeed = 1;
tblDatas.Columns[0].AutoIncrementStep = 1;

tblDatas.Columns.Add("Product",Type.GetType("System.String"));
tblDatas.Columns.Add("Version",Type.GetType("System.String"));
tblDatas.Columns.Add("Description",Type.GetType("System.String"));

tblDatas.Rows.Add(newobject[]{null,"a","b","c"});
tblDatas.Rows.Add(newobject[] { null, "a", "b", "c" });
tblDatas.Rows.Add(new object[] { null, "a", "b", "c" });
tblDatas.Rows.Add(new object[] { null, "a", "b", "c" });
tblDatas.Rows.Add(new object[] { null, "a", "b", "c" });

//方法三:
DataTable table = new DataTable ();

  //创建table的第一列
DataColumn priceColumn = new DataColumn();
//该列的数据类型
priceColumn.DataType = System.Type.GetType("System.Decimal");
//该列得名称
 priceColumn.ColumnName = "price";
 //该列得默认值
priceColumn.DefaultValue =50;

// 创建table的第二列
DataColumn taxColumn = new DataColumn();
taxColumn.DataType = System.Type.GetType("System.Decimal");
 //列名
taxColumn.ColumnName = "tax";
//设置该列得表达式,用于计算列中的值或创建聚合列
taxColumn.expression_r_r = "price *0.0862";
// Create third column.
DataColumn totalColumn = new DataColumn();
totalColumn.DataType = System.Type.GetType("System.Decimal");
totalColumn.ColumnName = "total";
//该列的表达式,值是得到的是第一列和第二列值得和
totalColumn.expression_r_r = "price + tax";

// 将所有的列添加到table上
table.Columns.Add(priceColumn);
table.Columns.Add(taxColumn);
table.Columns.Add(totalColumn);

//创建一行
 DataRow row = table.NewRow();
 //将此行添加到table中
table.Rows.Add(row);

//将table放在试图中
 DataViewview = new DataView(table);
dg.DataSource = view;

dg.DataBind();


--------------------编程问答--------------------
///////////////////////////////////////////
        ///方法1   创建新table 并给其赋值
        DataTable dt_new = new DataTable();
        DataColumn dc = dt_new.Columns.Add("id", typeof(int));
        dc.AutoIncrement = true;
        dc.AutoIncrementSeed = 1;
        dc.AutoIncrementStep = 1;
        dc.AllowDBNull = false;//

        dc = dt_new.Columns.Add("id_new", typeof(string));
        dc = dt_new.Columns.Add("title_new", typeof(string));
        dc = dt_new.Columns.Add("img_new", typeof(string));
        dc = dt_new.Columns.Add("ranking", typeof(string));

        for (int i = 0; i < dt_c.Rows.Count; i++)
        {
            DataRow datarow = dt_new.NewRow();
            datarow["id_new"] = dt_c.Rows[i][0];
            datarow["title_new"] = dt_c.Rows[i][1];
            datarow["img_new"] = dt_c.Rows[i][2];
            datarow["ranking"] = dt_c.Rows[i][3];
            dt_new.Rows.Add(datarow);
        }
        ///////////////////////////////
        //方法2   创建新table 并给其赋值 
        DataTable DataTable1;
        DataTable DataTable2;
        DataTable DataTable = new DataTable();
        DataTable.Columns.Add("a ", typeof(string));
        DataTable.Columns.Add("b ", typeof(string));
        DataTable.Columns.Add("c ", typeof(string));
        DataTable.Columns.Add("d ", typeof(string));
 
        for (int i = 0; i<dt_s.Rows.Count; i++)
        {
            DataRow datarow = DataTable.NewRow();
            datarow["a "] = dt_s.Rows[i][0];
            datarow["b "] = dt_s.Rows[i][1];
            datarow["c "] = dt_s.Rows[i][2];
            datarow["d "] = dt_s.Rows[i][3];
            DataTable.Rows.Add(datarow);
        }
        ///////////////////////////////////
--------------------编程问答--------------------
public DataTable CreateDataTable(DataTable dt)
    {
        //问题一:在这里为“dt”增加“36”列,并指定各列的“名字”。应该怎样写???

        //是在原有的基础上加还是 全部清空加?
        for (int i = 0; i < 36; i++)
        {
            dt.Columns.Add("CName" + i.ToString());
        }

        foreach (DataRow dr in dt.Rows)//这个dt.Rows不是从数据库中取的 这个dt.Rows应该为0
        {
            string nf = dr["NF"].ToString().Trim();
            string bmbh = dr["BMBH"].ToString().Trim();
            string sfz = dr["SFZ"].ToString().Trim();

            //问题二:在这里循环为每条记录的“新增的36列”赋值。值是从数据库中查询出的记录集“dt_staff”,所以要再循环判断一下。
            //如果,dr_staff["YF"].ToString().Trim() == "1"则添加到新增的第一列,
            //dr_staff["YF"].ToString().Trim() == "12"则添加到新增的第二列,
            //dr_staff["YF"].ToString().Trim() == "3"则添加到新增的第三列,
            //直到添加了第36列。
            //每行的值应该怎样添加法???

            //最后返回“Dt”
            //赋值
            //假设取出来的DtData
            Hashtable ht=new Hashtable();
            //ht.Add() 从1 到36的自增 和 值 添加进去
            //ht.add(1,dr_staff["YF"]);
            DataTable dtData = new DataTable();
            foreach(DataRow drr in dtData.Rows)
            {
            //哈希表匹配一下
            }

            dt.Rows.Add(new object[] {传递进来});
            DataTable dt_staff = new M_BLL.T_Select().RtScore_StaffHZ(sfz, nf, bmbh);
            foreach (DataRow dr_staff in dt_staff.Rows)
            {

                if (dr_staff["YF"].ToString().Trim() == "1")
                {

                }
            }
        }
    }
--------------------编程问答-------------------- 额,写的够全的 这年月混点分不容易啊 --------------------编程问答--------------------
引用 8 楼 wxr0323 的回复:
C# code
public DataTable CreateDataTable(DataTable dt)
    {
        //问题一:在这里为“dt”增加“36”列,并指定各列的“名字”。应该怎样写???

        //是在原有的基础上加还是 全部清空加?
        for (int i = 0; i < 36; i++)
        {
          ……


for (int i = 0; i < 36; i++)
        {
            string key = data.Rows[i]ToString();

            string Value = data.Rows[i+1]ToString();

把key 和value+入Hashtable
            ht.Add(key , Value);
        }

我加个匹配吧

ht --------------------编程问答-------------------- 读读大 --------------------编程问答-------------------- 学习中………… --------------------编程问答-------------------- 参考http://www.360doc.com/content/11/0107/12/19147_84691792.shtml --------------------编程问答-------------------- 我也喜欢大话西游2 --------------------编程问答-------------------- kan kan --------------------编程问答--------------------
引用 6 楼 maco_wang 的回复:
C# code

//方法一:

DataTable  tblDatas = newDataTable("Datas");
DataColumn dc = null;

//赋值给dc,是便于对每一个datacolumn的操作
dc =tblDatas.Columns.Add("ID",Type.GetType("System.Int32"));
dc.AutoIncrement……

+1
学习了 --------------------编程问答-------------------- 谢谢大家。 --------------------编程问答-------------------- 需求详细了,大家都能写出来,我也不凑热闹了。 --------------------编程问答-------------------- 嘟嘟嘟我来了 --------------------编程问答-------------------- 最常用的操作啊。 --------------------编程问答-------------------- 开发游戏,别有一番风味。 --------------------编程问答--------------------
引用 18 楼 wanzegui 的回复:
需求详细了,大家都能写出来,我也不凑热闹了。


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