• 全部
...

名为“XXXX”的列已属于此DataTable

whatwherewhyhow 2007-11-16 11:28:31
1)在把DataTable2的列添加入DataTable1的时候提示名为“XXXX”的列已属于此DataTable

2个DataTable的架构是相同的...

有什么解决方案吗?

2)SQL能不能对现有的DataTable操作?
...全文
给本帖投票
2074 27 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
末点 2012-08-25
  • 打赏
  • 举报
回复
DataSet ds= n.GetList();
DataTable t = new DataTable();
for (int i = 0; i < ds.Tables[0].Columns.Count; i++)
{
try
{
DataColumn c = new DataColumn(ds.Tables[0].Columns[i].ToString());
c.DataType = ds.Tables[0].Columns[i].GetType();
t.Columns.Add(c);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

}
dreaminglove 2012-07-25
  • 打赏
  • 举报
回复
我也不懂得啊?搞得奔溃了
darkross 2011-04-25
  • 打赏
  • 举报
回复
解释的很详细了,非常有帮助
lianyi68 2010-01-29
  • 打赏
  • 举报
回复
1.先複製來源 DataTable的結構
2.使用複製資料方式加入資料列

//複製來源的結構 dtRss = tb.Clone();
for (int iIndex = 0; 10 > iIndex; iIndex++)
{
//透過複製的方式來將資料列資料加入 dtRss.ImportRow(tb.Rows[iIndex]);
}
Dailen_Liao 2009-08-24
  • 打赏
  • 举报
回复
你可能是循环时,把
myDataColumn= new DataColumn();
myDataColumn.DataType = System.Type.GetType("System.String");
myDataColumn.ColumnName = "id";
myDataTable.Columns.Add(myDataColumn);
加到了循环语句里面,导致相同列名出现重复添加的错误。
huangwcxl 2007-11-17
  • 打赏
  • 举报
回复
试试这个解决方法,肯定可以:
DataTable DataTable1 = new DataTable();
DataColumn dcColumn=null ;
DataRow drDatRow =null;

dcColumn=new DataColumn();
dcColumn.DataType = System.Type.GetType("System.String");
dcColumn.ColumnName = "列名";
dcColumn.Caption = "列名";
DataTable1.Columns.Add(dcColumn);

drDatRow = DataTable1.Rows.Add();
drDatRow["列名"] = DataTable2.Rows[列序号]

如果有多个列时,做一个循环附值即可。
whatwherewhyhow 2007-11-16
  • 打赏
  • 举报
回复
插入行的数据:

OracleDataAdapter oda = new OracleDataAdapter( "select id,name from user where rownum between 0 and 11 ", conn);
DataTable dt = new DataTable();
oda.Fill(dt);
OracleDataAdapter oda2 = new OracleDataAdapter( "select id,name from usr where id= '1 ' ", conn);
DataTable dt2 = new DataTable();
oda2.Fill(dt2);
//但是如果不加System.Guid.NewGuid()来改变列名
//提示名为“XXXX”的列已属于此DataTable . 插入数据都没问题的。
dt.Columns.Add( dt2.Columns[ 1 ] + System.Guid.NewGuid());
foreach( DataRow dr in dt.Rows )
{
DataRow[] rows = dt2.Select( "id= " + dr[ 0 ], string.Empty );
if( rows.Length > 0 )
{
dr[ 2 ] = rows[ 0 ][ 1 ];
}
else
{
dr[ 2 ] = string.Empty;
}
}
ojekleen 2007-11-16
  • 打赏
  • 举报
回复
li.Text+"ID"
li.Text+"NAME"
这样不好吗?你老是IDID的,人家也分不清啊。
还有,你的行数据是怎么插入的?
whatwherewhyhow 2007-11-16
  • 打赏
  • 举报
回复
不知道我描述清楚了没.如果我没描述清楚希望你们指出来.我知道你们都在帮我.
whatwherewhyhow 2007-11-16
  • 打赏
  • 举报
回复
如果直接用
dataTable.Columns.Add(dt.Columns[0].ToString());

就会提示名为“ID”的列已属于此DataTable,
DropDownList1里的ListItem的数量不是固定的,因此会产生动态的列数
举个例子:
DropDownList1的ListItem 只有1项
那么查询结果为
ID NAME

DropDownList1的ListItem 只有2项
那么查询结果为
ID NAME ID NAME

DropDownList1的ListItem 只有3项
那么查询结果为
ID NAME ID NAME ID NAME

...以此类推
whatwherewhyhow 2007-11-16
  • 打赏
  • 举报
回复
这是代码:

DataTable dataTable = new DataTable();
//循环遍历DropDownList获得它的VALUE
foreach (ListItem li in DropDownList1.Items)
{//查询
OracleDataAdapter oda = new OracleDataAdapter("select id,name from table where id="+li.value), conn);
DataTable dt = new DataTable();
oda.Fill(dt);
//添加列.System.Guid.NewGuid()为了不产生相同的列.改变列名
dataTable.Columns.Add(dt.Columns[0].ToString() + System.Guid.NewGuid());
}
//设置GridView数据源为dataTable,并且绑定
whatwherewhyhow 2007-11-16
  • 打赏
  • 举报
回复
@ojekleen(三尾)
改HeaderName?HeaderText倒是知道的.

设置HeaderText确实可以.But DataTable的列是动态生成的.

列的数量不是固定的.绑定HeaderText不能根据列的数量不同自动绑定的.
enaking 2007-11-16
  • 打赏
  • 举报
回复
看你是怎么操作的了代码贴出来,因为这是对象,不能用赋值操作,要镜像一个datacolumn出来,再加到另一表中
ojekleen 2007-11-16
  • 打赏
  • 举报
回复
给别人看的是girdview,or datagridview, or datagrid,or ....HeaderName啊,不是Datatable的columnName....
whatwherewhyhow 2007-11-16
  • 打赏
  • 举报
回复
@ojekleen(三尾)
改列名我是知道的.但是列都是动态生成的.我用了随机数加列名

但是绑定数据的时候列不能那样显示给别人看呀!
ojekleen 2007-11-16
  • 打赏
  • 举报
回复
我倒,你要两列一样是肯定不行的啊。你可以改下列名啊。
ID1,Name1,ID2,Name2
whatwherewhyhow 2007-11-16
  • 打赏
  • 举报
回复
@ojekleen(三尾)

你那样的代码肯定是可以的

但是要是添加第2个myDataColumn.ColumnName = "id";的话肯定也是提示

名为“ID”的列已属于此DataTable
显示为
ID NAME
1 1
2 2
3 3
4 4
如果第2个DataTable架构和这个DataTable架构相同数据不同
要做成并列显示,这样就不好做了:
ID NAME ID NAME
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
上面的结果显示在同一个DataTable里
在添加第3列ID列的时候报错:名为“ID”的列已属于此DataTable
whatwherewhyhow 2007-11-16
  • 打赏
  • 举报
回复
@ojekleen(三尾)

你那样的代码肯定是可以的

但是要是添加第2个myDataColumn.ColumnName = "id";的话肯定也是提示

名为“ID”的列已属于此DataTable
显示为
ID NAME
1 1
2 2
3 3
4 4
如果第2个DataTable架构和这个DataTable架构相同数据不同
要做成并列显示,这样就不好做了:
ID NAME ID NAME
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
上面的结果显示在同一个DataTable里
在添加第3列ID列的时候报错:名为“ID”的列已属于此DataTable
netusemaster 2007-11-16
  • 打赏
  • 举报
回复
1)在把DataTable2的列添加入DataTable1的时候提示名为“XXXX”的列已属于此DataTable

DataTable1 中有2列同样的列

DataTable2 和 DataTable1 肯定不一样...

2)SQL能不能对现有的DataTable操作?

内存里的表,不支持sql语句

但也有查询,比较一些功能
xh831213 2007-11-16
  • 打赏
  • 举报
回复
1
DataRow[] foundRows = datatable2.Select();
for(int i= 0;i<foundRows.Length;i++)
{
datatable1.ImportRow(foundRows[i]);
}

2 datatable2.Select();里面可以写条件来操作
加载更多回复(7)
【面试题库网整理 .net 面试题(附答案)(四)】 7. 某一密码仅使用K、L、M、N、O共5个字母,密码中的单词从左向右排,密码单词必须遵循如下规则: (1) 密码单词的最小长度是两个字母,可以相同,也可以不同 (2) K不可能是单词的第一个字母 (3) 如果L出现,则出现次数不止一次 (4) M不能使最后一个也不能是倒数第二个字母 (5) K出现,则N就一定出现 (6) O如果是最后一个字母,则L一定出现 问题一:下哪一个字母可以放在LO中的O后面,形成一个3个字母的密码单词? A) K B)L C) M D) N 答案:B 问题二:如果能得到的字母是K、L、M,那么能够形成的两个字母长的密码单词的总数是多少? A)1个 B)3个 C)6个 D)9个 答案:A 问题三:下哪一个是单词密码? A) KLLN B) LOML C) MLLO D)NMKO 答案:C 8. 62-63=1 等式不成立,请移动一个数字(不可以移动减号和等于号),使得等式成立,如何移动? 答案:62移动成2的6次方 new有几种用法 第一种:new Class(); 第二种:覆盖方法 public new XXXX(){} 第三种:new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。 2.如何把一个array复制到arrayList里 foreach( object o in array )arrayList.Add(o); 3.datagrid.datasouse可以连接什么数据源 [dataset,datatable,dataview] dataset,datatable,dataview , IList 4.概述反射和序化 反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性 序化:序化是将对象转换为容易传输的格式的过程。例如,可以序化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序化将从该流重新构造对象。 5.概述o/r mapping 的原理 利用反射,配置 将类于数据库表映射 7.用sealed修饰的类有什么特点 sealed 修饰符用于防止从所修饰的类派生出其它类。如果一个密封类被指定为其它类的基类,则会发生编译时错误。 密封类不能同时为抽象类。 sealed 修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。 11.详述.NET里class和struct的异同! class:放在 ? struct放在? struct值传递 类与结构有很多相似之处:结构可以实现接口,并且可以具有与类相同的成员类型。然而,结构在几个重要方面不同于类:结构为值类型而不是引用类型,并且结构不支持继承。结构的值存储在“在堆栈上”或“内联”。细心的程序员有时可以通过聪明地使用结构来增强性能。 12.概述.NET里对 remoting 和 webservice 两项技术的理解和实际中的应用。 远程逻辑调用,remoing接口只能用在.net中 13.什么是code-behind技术 aspx and cs 14.概述三层结构体系 web/business/dataaccess 15.asp.net如何实现MVC模式,举例说明! web/business/dataaccess 2.什么是ASP.net中的用户控件 答:用户控件就是.ascx扩展名的东西喽,可以拖到不同的页面中调用,以节省代码.比如登陆可能在多个页面上有,就可以做成用户控件,但是有一个问题就是用户控件拖到不同级别的目录下后里面的图片等的相对路径会变得不准确,需要自已写方法调整. 3.什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释? 答:装箱就是把值类型转成引用类型,从MS IL角度看好像是boxing,没记错的话是把值从堆栈转到堆中.拆箱相反,重载就是指一个方法名同,参数个数不同,返回值可以相同的方法.CLR是通用语言运行时,其它的不清楚. 4.举一下你所了解的XML技术及其应用 答:XML可是好东西,保存配置,站与站之间的交流,WEB SERVICE都要用它. 5.值类型和引用类型的区别?写出C#的样例代码。 答:结构是值类型,类是引用类型,所以传结构就是值类型的应用啦,传对象或类就是引用类型的,这个不用多写了吧. 6.ADO.net中常用的对象有哪些?分别描述一下。 答:connection command sqladapter dataset datatable dataview等等.写不完了. 7.如何理解委托? 答:据说相当于函数指针,定义了委托就可以在不调用原方法名称的情况下调用那个方法. msdn2005中是这样解释的: 委托具有以下特点: 委托类似于 C++ 函数指针,但它是类型安全的。 委托允许将方法作为参数进行传递。 委托可用于定义回调方法。 委托可以链接在一起;例如,可以对一个事件调用多个方法。 方法不需要与委托签名精确匹配。有关更多信息,请参见协变和逆变。 C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。 【面试题库网整理 .net 面试题(附答案)(三)】 22.您要创建一个显示公司员工表的应用程序。您使用一个DataGrid控件显示员工的表。您打算修改这个控件以便在这个Grid的Footer显示员工合计数。请问您应该怎么做?( C? ) A.重写OnPreRender事件,当Grid的Footer行被创建时显示合计数。 B.重写OnItemCreated事件,当Grid的Footer行被创建时显示合计数。 C.重写OnItemDataBound事件,当Grid的Footer行被创建时显示合计数。 D. 重写OnLayout事件,当Grid的Footer行被创建时显示合计数。 23.您要创建ASP.NET应用程序用于运行AllWin公司内部的Web站点,这个应用程序包含了50个页面。您想要配置这个应用程序以便当发生一个HTTP代码错误时它可以显示一个自定义的错误页面给用户。您想要花最小的代价完成这些目标,您应该怎么做?(多选)( CD )   A.在这个应用程序的Global.asax文件中创建一个Application_Error过程去处理ASP.NET代码错误。   B.在这个应用程序的Web.config文件中创建一个applicationError节去处理ASP.NET代码错误。   C.在这个应用程序的Global.asax文件中创建一个CustomErrors事件去处理HTTP错误。   D.在这个应用程序的Web.config文件中创建一个CustomErrors节去处理HTTP错误。   E.在这个应用程序的每一页中添加一个Page指示符去处理ASP.NET 代码错误。   F. 在这个应用程序的每一页中添加一个Page指示符去处理ASP.NET HTTP错误。 24.您的公司有一个DB Server,名为AllWin,其上装了MS SQLSERVER 2000。现在需要您写一个数据库连接字符串,用以连接AllWin上SQL SERVER中的一个名为PubBase实例的Test库。请问,应该选择下面哪一个字符串?( B )   A. “Server=AllWin;Data Source=PubBase;Initial Catalog=Test;Integrated Security=SSPI”   B. “Server= AllWin;Data Source=PubBase;Database=Test;Integrated Security= SSPI”   C. “Data Source= AllWin \PubBase;Initial Category=PubBase;Integrated Security= SSPI”   D. “Data Source= AllWin \ PubBase;Database=Test;Integrated Security= SSPI” 25.您为AllWin公司创建了一个ASP.NET应用程序。这个应用程序调用一个 Xml Web Service。这个 Xml Web Service 将返回一个包含了公司雇员表的DataSet对象。请问您该如何在这个程序中使用这个 Xml Web Service?( ? )   A.在“引用”对话框的.Net标签中选择 System.Web.Services.dll。   B.在“Web引用”对话框中输入这个 XML Web service 的地址。   C.在您的 Global.asax.cs 中添加一条 using 语句并指定这个 XML Web service 的地址。   D.在您的 Global.asax.cs 中写一个事件处理器导入这个 Xml Web Service 相应的 .wsdl 和 .disco 文件。 26.您要创建一个ASP.NET应用程序在DataGrid控件中显示一个经过排序的表。产品数据被存放于一个名为PubBase的Microsoft SQL Server 数据库。每个产品的主键是ProductID,Numeric型并且每个产品有一个字母描述字段,名为ProductName。您使用一个SqlDataAdapter对象和一个SqlCommand对象通过调用一个存储过程从数据库中获取产品数据。您将SqlCommand对象的CommandType属性设置为CommandType.StoredProcedure,并将它的CommandText属性设置为procProductList。您成功的获取了一个DataTable对象,其中是已经按ProductID降序排的产品表。您打算显示以相反的字母顺序排的ProductName,请问该怎么做? ( B )   A. 将SqlCommand对象的CommandType属性修改为CommandType.Text,将CommandText属性修改为”SELECT * FROM procProductList ORDER BY ProductName DESC”。然后将这个DataTable对象绑定到DataGrid控件。   B. 创建一个基于这个DataTable对象的新的DataView并将这个DataView的Sort属性设置为“ProductName DESC”。然后将这个DataView对象绑定到DataGrid控件。   C. 将DataGrid控件的AllowSorting属性设置为True,并将DataGridColumn的SortExpression属性设置为 “ProductName DESC”.以显示ProductName。然后将这个DataTable对象绑定到DataGrid控件。   D. 将DataTable对象的DisplayExpression属性设置为 “ORDER BY ProductName DESC”.。然后将这个DataTable对象绑定到DataGrid控件。 76.C#代码实现,确保windows程序只有一个实例(instance) /// ///应用程序的主入口点。 /// [STAThread] staticvoid Main() { //防止程序多次运行 if(!OneInstance.IsFirst("GetPayInfo")) { MessageBox.Show ("警告:程序正在运行中! 请不要重复打开程序!可在右下角系统栏找到!","程序错误提示:",MessageBoxButtons.OK,MessageBoxIcon.Stop); return; } Application.Run(new Form1()); } // ******************* 防止程序多次执行 ************************** publicabstractclass OneInstance { /// ///判断程序是否正在运行 /// ///程序名称 ///如果程序是第一次运行返回True,否则返回False publicstaticbool IsFirst(string appId) { bool ret=false; if(OpenMutex(0x1F0001,0,appId)==IntPtr.Zero) { CreateMutex(IntPtr.Zero,0,appId); ret=true; } return ret; } [DllImport("Kernel32.dll",CharSet=CharSet.Auto)] privatestaticextern IntPtr OpenMutex( uint dwDesiredAccess, // access int bInheritHandle, // inheritance option string lpName // object name ); [DllImport("Kernel32.dll",CharSet=CharSet.Auto)] privatestaticextern IntPtr CreateMutex( IntPtr lpMutexAttributes, // SD int bInitialOwner, // initial owner string lpName // object name ); } 【面试题库网整理 .net 面试题(附答案)(二)】 8.以下代码段中能否编译通过?请给出理由。 try { } catch(FileNotFoundException e1) { } catch(Exception e2) { } catch(IOException e3) { } catch { } 9.对于一个实现了IDisposable接口的类,以下哪些项可以执行与释放或重置非托管资源相关的应用程序定义的任务?(多选) ( ABC ) A.Close B.DisposeC.Finalize D.using E.Quit 10.Net依赖以下哪项技术实现跨语言互用性?( C ) A.CLR B.CTS C.CLS D.CTT 11.请问: String类与StringBuilder类有什么区别?为什么在.Net类库中要同时存在这2个类?(简答) 如果要操作一个不断增长的字符串,尽量不用String类,改用StringBuilder类。两个类的工作原理不同:String类是一种传统的修改字符串的方式,它确实可以完成把一个字符串添加到另一个字符串上的工作没错,但是在.NET框架下,这个操作实在是划不来。因为系统先是把两个字符串写入内存,接着删除原来的String对象,然后创建一个String对象,并读取内存中的数据赋给该对象。这一来二去的,耗了不少时间。而使用System.Text命名空间下面的StringBuilder类就不是这样了,它提供的Append方法,能够在已有对象的原地进行字符串的修改,简单而且直接。当然,一般情况下觉察不到这二者效率的差异,但如果你要对某个字符串进行大量的添加操作,那么StringBuilder类所耗费的时间和String类简直不是一个数量级的。 12.以下哪个类是int的基类?( ) A.Int32 B.Object C.ValueType D.Int16 二、C# 部分* 13.以下哪些可以作为接口成员? (多选) ( ABDE ) A.方法B.属性C.字段D.事件E.索引器 F.构造函数G.析构函数 14.以下关于ref和out的描述哪些项是正确的?(多选) ( ACD ) A.使用ref参数,传递到ref参数的参数必须最先初始化。 B.使用out参数,传递到out参数的参数必须最先初始化。 C.使用ref参数,必须将参数作为ref参数显式传递到方法。 D.使用out参数,必须将参数作为out参数显式传递到方法。 15.“访问范围限定于此程序或那些由它所属的类派生的类型”是对以下哪个成员可访问性含义的正确描述?( B ) A.public B.protected C.internal D.protected internal 16.class Class1 { private static int count = 0; static Class1() { count++; } public Class1() { count++; } } Class1 o1 = new Class1(); Class1 o2 = new Class1(); 请问,o1.Count的值是多少?( C ) A.1 B.2 C.3 D.4 17.abstract class BaseClass { public virtual void MethodA() { } public virtual void MethodB() { } } class Class1: BaseClass { public void MethodA(string arg) { } public override void MethodB() { } } class Class2: Class1 { new public void MethodB() { } } class MainClass { public static void Main(string[] args) { Class2 o = new Class2(); Console.WriteLine(o.MethodA()); } } 请问,o.MethodA调用的是: ( A ) A.BaseClass.MethodAB.Class2.MethodA C.Class1.MethodAD.都不是 【.net 面试题系文章一(附答案)】 1 (1)面向对象的语言具有__继承性_性、_封装性_性、_多态性 性。 (2)能用foreach遍历访问的对象需要实现 _ IEnumerable 接口或声明_ GetEnumerator 方法的类型。1.c#中的三元运算符是__?:__ 2.当整数a赋值给一个object对象时,整数a将会被__装箱___? 3.类成员有__3__种可访问形式? 4.public static const int A=1;这段代码有错误么?是什么? const成员都是static所以应该去掉static 5.float f=-123.567F; int i=(int)f; i的值现在是_-123____? 6.利用operator声明且仅声明了==,有什么错误么? 要同时修改Equale和GetHash() ? 重载了"==" 就必须重载 "!=" 7.委托声明的关键字是___ delegate ___? 8.用sealed修饰的类有什么特点?不可被继承 9.在Asp.net中所有的自定义用户控件都必须继承自_ System.Web.UI.UserControl _______? 10.在.Net中所有可序化的类都被标记为__[serializable]___? 11.在.Net托管代码中我们不用担心内存漏洞,这是因为有了_ gC __? 12.下面的代码中有什么错误吗?_ abstract override 是不可以一起修饰______ using System; class A { public virtual void F(){ Console.WriteLine("A.F"); } } abstract class B:A { public abstract override void F(); } 13.当类T只声明了私有实例构造函数时,则在T的程序文本外部,_不可以_(可以 or 不可以)从T派生出新的类,_不可以_(可以 or 不可以)直接创建T的任何实例。 14.下面这段代码有错误么?case():不行 default; switch (i){ case(): CaseZero(); break; case 1: CaseOne(); break; case 2: dufault; CaseTwo(); break; } 15.在.Net中,类System.Web.UI.Page 可以被继承么?可以

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧

手机看
关注公众号

关注公众号

客服 返回
顶部