超难问题.关于DataSet和DataGird的问题

顾君彦 2003-05-20 05:17:11
例程在
http://asp.6to23.com/connect/onedecl.zip

点击FILL后,为什么在修改货物清单原有数据时,会报向原始数据存储区提交行时出错的错误框?

这种问题怎么解决?

注:货物清单中的TypeName是一个计算列. 表达式为 Parent.TypeName

请高手解答
...全文
31 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
顾君彦 2003-05-29
  • 打赏
  • 举报
回复
我的问题已经解决了,解决方法是,使用framework1.1
问题就解决了,原来这是1.0的一个大BUG.让我损失了100分,不过
大家好热情,我好感动,给分啦
xiaha3 2003-05-24
  • 打赏
  • 举报
回复
我的办法是在表中添加一列(不是计算列),然后在添加新行时算出新列的值。
然后在updata的时候移出计算列,更新后再把它添加进来

anyshot 2003-05-22
  • 打赏
  • 举报
回复
upupupup!!! 有没有人会啊?
anyshot 2003-05-22
  • 打赏
  • 举报
回复
up
顾君彦 2003-05-22
  • 打赏
  • 举报
回复
up
顾君彦 2003-05-21
  • 打赏
  • 举报
回复
up
顾君彦 2003-05-21
  • 打赏
  • 举报
回复
请大家不要怀疑代码的正确性
大家可以将代码中的
this.dataSet11.Goods_List.TypeNameColumn.Expression="Parent.TypeName"
注释掉,程序就能正常运行 ,但是,在从表中,主无法显示关联主表的类型名称了。
我要所需要的,就是这个类型名称。如何让这个datagrid2即能显示主表的类型名称,又能正常编辑呢?

继续讨论,分有的就是,不够我再加贴
顾君彦 2003-05-21
  • 打赏
  • 举报
回复
TypeName不能删除,删除了TypeName我这个程序就没有意义了。
关于绑定,我在DataGrid2上绑定是的relation 这样的话,在我AddNew()时,会按照我对reLation设置的外键约束自动在子表中加上当前外键的值。

我的这段程序,主要就是为了实现在从表中附带显示主表的类别名称。而不是显示类别代码。
我想,这种要求,在很多程序中都是需要实现的。
在grid中代码转名称,其它字段并需要实现可以进行编辑。
或是pb程序员,我想,用dw的话,很容易实现,也是用得最多的一种方式,我在c#中,找了很久,只能找到这种方式,就是用计算列,加上relation的方式,但是,这样一来,编辑确能出问题。
高手,大侠,快快相助啊!!!!!!!!!!!
MVP呢?这么早就吃饭啦
GreenSpring 2003-05-21
  • 打赏
  • 举报
回复
有自定列时,对他的修改,要单独处理呀,
dzyduan 2003-05-21
  • 打赏
  • 举报
回复
我试了试,你在Goods_list表中多定义了TypeName一列,而该列在数据库的源表中不存在,故会出错,我改后已正常.
zhongjy001 2003-05-21
  • 打赏
  • 举报
回复
private void button1_Click(object sender, System.EventArgs e)
{
this.dataSet11.Clear();
this.oleDbDataAdapter1.Fill(this.dataSet11.TypeList);
this.oleDbDataAdapter2.Fill(this.dataSet11.Goods_List);
this.dataSet11.Goods_List.TypeNameColumn.Expression="Parent.TypeName";
}
flowerriver 2003-05-21
  • 打赏
  • 举报
回复
其他信息:未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值
PoorAngel 2003-05-21
  • 打赏
  • 举报
回复
关注!
Knight94 2003-05-21
  • 打赏
  • 举报
回复
我大概看了一下,觉得在datagrid2绑定有些问题,它绑定的好像是ViewTable(即Goods_List和TypeList两表的视图),那么在修改视图数据的时候是不可能成功。
xiaha3 2003-05-21
  • 打赏
  • 举报
回复
我的办法是在表中添加一列(不是计算列),然后在添加新行时算出新列的值。我还没想出好办法,让包含父表数据表修改数据成功
anyshot 2003-05-21
  • 打赏
  • 举报
回复
up!!
yaotang 2003-05-21
  • 打赏
  • 举报
回复
关注
顾君彦 2003-05-21
  • 打赏
  • 举报
回复
to:Knight94(愚翁)
谢谢.
你那种方式我之前已经想过,若这样的话,在你输入TYPEID后,GRID中不会立刻将TYPEID的TYPENAME显示到GRID上.你那种方式,仅能满足显示,而我上面的那种方式,从显示角度上来说,已经完全满足了,现在的问题就是在编辑时无法进行.

你所提到的AddNew(),这个似乎没法做修改,因为,在AddNew时,我是使用bindingmanagerbase来操作的,根据得不到row,只有在EndCurrentEdit时,BindingManagerBase才会将添加的行加入到绑定的表中。
TypeId本身就是不需要输入的,因为我在数据集中,已经将它设为cascade了,在新增时,会自动
按当前的类别进行填写。这只是一个例子,用来说明这种现象,和实现这种输入。
Knight94 2003-05-21
  • 打赏
  • 举报
回复
不过需要在AddNew做些修改,同时我认为TypeID应该是选择而不是输入。
Knight94 2003-05-21
  • 打赏
  • 举报
回复
方法很简单:
删除
this.dataSet11.Goods_List.TypeNameColumn.Expression="Parent.TypeName";

修改
this.oleDbSelectCommand2.CommandText = "SELECT Goods_Name, ID, TypeId FROM Goods_List";
改为
this.oleDbSelectCommand2.CommandText = "SELECT Goods_List.Goods_Name, "
+"Goods_List.ID, Goods_List.TypeId,TypeList.TypeName FROM Goods_List,TypeList "
+"where Goods_List.TypeId=TypeList.TypeId";

就行了。
加载更多回复(12)

110,536

社区成员

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

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

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