请教怎样在datatable最后一行中任意一行中插一新行

& & &这次用到了C#中的Datatable,主要是把从数据库中取出的一张表的数据进行合并和对齐,同时处理后的数据要发送到前台进行展示
,所以在进行处理的时候原表的各个列名还要进行保存,首先我在网上找到了相关的向Datatable中插入一行数据的代码,然后进行了修改:
& & & & & &&dt.Columns.Add(ss);
& & & & & & dt.Columns.Add(&Name&);
& & & & & & DataRow dr = dt.NewRow();
& & & & & & object[] objs = { &sd&, &dlj& };
& & & & & & dr[&ID&] = objs[0];
& & & & & & dr[&Name&] = objs[1];
& & & & & & dt.Rows.Add(dr);
& & & & &首先前两行代码是向dt这个Datatable中添加两个列名,然后新建一个DataRow对象吧,这个DataRow没有具体查过,先这样叫吧,
& &然后是新建一个object类型的数组,用来存储要添加进去的对象,在这里之所以用Object是因为有时候我们并不知道我们要添加的数据
是什么类型,这样就可以避免出现因为类型不一样而导致的错误,还有就是当我们要插入的数据不一定都是同一类型的时候,我们也可
以用这种方法,但是我感觉这个时候如果不用object我们可以用泛型来代替。
& dr[&ID&] = objs[0];dr[&Name&] = objs[1]; 这两行代码也可以用ItemArray =来代替,只是上面的两行代码可以制定要添加的
某列的数据。
但是这个代码也有一定的问题,比如一次只能插入一行数据,如果再想插入另外一行数据的话,就会提示dr已经是表dt
中的对象,这个时候可以给dt添加一个类似于数据库中ID自增长的主键,不过我感觉这样比较麻烦,要给表dt添加一列
后来我想了另外一种方法就是,用一个for循环每一次循环的时候都创建一个DataRow对象,这样就可以插入多个对象了
代码如下:
&//for (int i = 0; i & 3; i++)
& & & & & & //{
& & & & & & // & &DataRow dr = dt.NewRow();
& & & & & & // & &object[] objs = { &sd&, &dlj& };
& & & & & & // & &dr[&ID&] = objs[0];
& & & & & & // & &dr[&Name&] = objs[1];
& & & & & & // & &dt.Rows.Add(dr); & & & & & & &
& & & & & & //}
哦对了,还有一个就是要把原表的列名原封不动的传过去:
&for (int m = 0; m & colum_ m++)
& & & & & & & &{
& & & & & & & & & &dt.Columns.Add(temp_dt.Columns[m].ColumnName);
& & & & & & & &}
最近用到的Datatable的操作目前就这样了有!以后再补充吧!
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:4048次
排名:千里之外
原创:31篇
(8)(10)(7)(2)(5)本帖子已过去太久远了,不再提供回复功能。C#&动态创建DataTable表,并添加新行
这几天一直在想怎么在C#中动态建DataTable表,并添加新行,今天终于有结果了.
1.创建表实例
&&& DataTable
dt=new DataTable();
2.建立表结构
dt.Columns.Add("ID");
dt.Columns.Add("Name");
3.创建新行
&&& DataRow
dr=dt.NewRow();
4.为新行赋值
dr[0]="1";
dr[1]="林林";
5.将新行添加到表
dt.Rows.Add(dr);
OK,就这样,好了
1.创建表实例
&&& DataTable
dt=new DataTable();
2.建立表结构
dt.Columns.Add("ID");
dt.Columns.Add("Name");
3.添加新行
dt.Rows.Add("1","Name");
OK,这样就好了
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。9718人阅读
public void CreateTable()
&&&&&&&&&&& //创建表
&&&&&&&&&&& DataTable dt = new DataTable();
&&&&&&&&&&&&
&&&&&&&&&&& //1、添加列
&&&&&&&&&&& dt.Columns.Add(&Name&, typeof(string)); //数据类型为 文本
&&&&&&&&&&& //2、通过列架构添加列
&&&&&&&&&&& DataColumn age = new DataColumn(&Age&, typeof(Int32));&& //数据类型为 整形
&&&&&&&&&&& DataColumn Time = new DataColumn(&Time&, typeof(DateTime)); //数据类型为 时间
&&&&&&&&&&& dt.Columns.Add(age);
&&&&&&&&&&& dt.Columns.Add(Time);
&&&&&&&&&&& //1、添加空行
&&&&&&&&&&& DataRow dr1 = dt.NewRow();
&&&&&&&&&&& dt.Rows.Add(dr1);
&&&&&&&&&&& //2、添加空行
&&&&&&&&&&& dt.Rows.Add();
&&&&&&&&&&& //3、添加数据行
&&&&&&&&&&& DataRow dr2 = dt.NewRow();
&&&&&&&&&&& dr2[0] = &张三&; //通过索引赋值
&&&&&&&&&&& dr2[1] = 23;
&&&&&&&&&&& dr2[&Time&] = DateTime.N//通过名称赋值
&&&&&&&&&&& dt.Rows.Add(dr2);
&&&&&&&&&&& //4、通过行框架添加
&&&&&&&&&&& dt.Rows.Add(&李四&,25,DateTime.Now);//Add你们参数的数据顺序要和dt中的列顺对应
方法二:为已有DateTable添加一新列,其值可设为默认值,也可设这列不可为空。
&&&&&&& public void CreateTable(DataTable vTable)
&&&&&&&&&&& //为已有DataTable添加一新列
&&&&&&&&&&& DataColumn dc1 = new DataColumn(&Tol&, typeof(string));
&&&&&&&&&&& vTable.Columns.Add(dc1);
&&&&&&&&&&& //添加一新列,其值为默认值
&&&&&&&&&&& DataColumn dc2 = new DataColumn(&Sex&, typeof(string));
&&&&&&&&&&& dc2.DefaultValue = &男&;
&&&&&&&&&&& dc2.AllowDBNull =//这在初床表的时候,其作用,在为已有表新增列的时候,不起作用
&&&&&&&&&&& vTable.Columns.Add(dc2);
方法三:筛选DataTable中的数据,使用 Select()方法,把赛选结果可以保存到 DataRow[] drA 数据里面,也可以另存为一个新DataTable
&&&&&& public void SelectRowDataTable()
&&&&&&&&&&& DataTable dt = new DataTable();//假设dt是由&SELECT C1,C2,C3 FROM T1&查询出来的结果
&&&&&&&&&&& for (int i = 0; i & dt.Rows.C i++)
&&&&&&&&&&& {
&&&&&&&&&&&&&&& if (dt.Rows[i][&C1&].ToString() == &abc&)//查询条件
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&& //进行操作
&&&&&&&&&&&&&&& }
&&&&&&&&&&& }
&&&&&&&&&&& //但这种做法用一两次还好说,用多了就累了。那有没有更好的方法呢?就是dt.Select(),上面的操作可以改成这样:
&&&&&&&&&&& DataRow[] drArr = dt.Select(&C1='abc'&);//查询(如果Select内无条件,就是查询所有的数据)
&&&&&&&&&&& //还可以这样操作:
&&&&&&&&&&& DataRow[] drArr1 = dt.Select(&C1 LIKE 'abc%'&);//模糊查询(如果的多条件筛选,可以加 and 或 or )
&&&&&&&&&&& DataRow[] drArr2 = dt.Select(&'abc' LIKE C1 + '%'&, &C2 DESC&);//另一种模糊查询的方法
&&&&&&&&&&& DataRow[] drArr3 = dt.Select(&C1='abc'&, &C2 DESC&);//排序
&&&&&&&&&&& //问题又来了,如果要把DataRow赋值给新的DataTable,怎么赋值呢?你可能会想到:&
&&&&&&&&&&& DataTable dtNew1 = dt.Clone();
&&&&&&&&&&& for (int i = 0; i & drArr.L i++)
&&&&&&&&&&& {
&&&&&&&&&&&&&&& dtNew1.Rows.Add(drArr[i]);
&&&&&&&&&&& }
&&&&&&&&&&&&
&&&&&&&&&&& //但这样程序就会出错,说该DataRow是属于其他DataTable的,那要怎么做呢?很简单,这样就可以解决了:&
&&&&&&&&&&& DataTable dtNew2 = dt.Clone();
&&&&&&&&&&& for (int i = 0; i & drArr.L i++)
&&&&&&&&&&& {
&&&&&&&&&&&&&&& dtNew2.ImportRow(drArr[i]);//ImportRow 是复制
&&&&&&&&&&& }
方法四:对DataTable筛选指定字段,并保存为新表
&&&&&&& public void SelectColumnDataTable(DataTable dt)
&&&&&&&&&&& //对DataTable筛选指定字段,并保存为新表
&&&&&&&&&&& DataTable dtNew = dt.DefaultView.ToTable(false, new string[] { &列名&, &列名&, &列名& });//这些列名,确保dt中存在,否则会报错误
方法五:对DataTable进行排序设置(sort)
&&&&&&& public void SortDataTable(DataTable dt)
&&&&&&&&&&& dt.DefaultView.Sort = &id desc&;//重新设置排序
&&&&&&&&&&& DataTable dtNew = dt.DefaultView.ToTable(); //保存在一张新表中
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:86732次
积分:1114
积分:1114
排名:千里之外
原创:12篇
转载:83篇
评论:12条
(1)(7)(3)(2)(2)(1)(5)(27)(2)(2)(2)(2)(1)(2)(4)(2)(2)(3)(4)(1)(3)(7)(3)(1)(1)(6)

我要回帖

更多关于 datatable添加一行 的文章

 

随机推荐