从 DataGridView 到 dataSet

gaoyipu 2008-03-27 10:38:02
我需要从 DataGridView 到 dataSet

我现在要得到一个DataSet 从DataGridView 中得到。

DataSet ds = new DataSet();
DataTable dt = new DataTable();
dt = (DataTable)DataGridView.DataSource;
ds.Tables.Add(dt);

出现这样一个错误:
DataTable 已属于另一个 DataSet。
...全文
285 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaoyipu 2008-03-27
  • 打赏
  • 举报
回复
谢谢了。问题 解决了。可又出新问题了。

public bool updateSearch(string str, DataSet ds)
{
bool bl = false;
//若连接数据库失败抛出错误

DataSet dataSet = ds;
m_sqlCommand.CommandType = System.Data.CommandType.Text;
m_sqlCommand.CommandText = str;
m_sqlDataAdapter = new OleDbDataAdapter();
m_sqlDataAdapter.SelectCommand = m_sqlCommand;
try
{
OleDbCommandBuilder SqlCd = new OleDbCommandBuilder(m_sqlDataAdapter);

m_sqlDataAdapter.Update(ds, ds.Tables[0].TableName);
}
catch (OleDbException e)
{
}
return bl;
}
报出这样一个错误:
  对于不返回任何键列信息的 SelectCommand,不支持 UpdateCommand 的动态 SQL 生成。
怎么解决呢。
liubingonline 2008-03-27
  • 打赏
  • 举报
回复
DataSet,DataTable均是引用类型,所以使用的时候要注意,一楼的方法是可以实现的.
dt.copy():新的 DataTable,它具有与该 DataTable 相同的结构(表架构和约束)和数据。
apollolb2005 2008-03-27
  • 打赏
  • 举报
回复
DataSet ds = new DataSet();
DataTable dt = new DataTable();
dt = (DataTable)DataGridView.DataSource;
ds.Tables.Add(dt.copy());
gaoyipu 2008-03-27
  • 打赏
  • 举报
回复
问题解决了。
是因为在select 语句中没有选择主键
java_renyusheng 2008-03-27
  • 打赏
  • 举报
回复
使用OleDbCommandBuilder 自动生成dataadapter的insertcommand, updatecommand, 和deletecommand属性。 为了支持自动生成, 指定的selectcommand必须包含主键或唯一性列。 如果没有, 则无法生成insertcommand, updatecommand, 和deletecommand,并会抛出invalidoperation异常。
Jacran 2008-03-27
  • 打赏
  • 举报
回复
这样转换是不行的,因为类型不同.

111,119

社区成员

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

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

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