ITPUB??ì3
12月微软Hyper-V虚拟化沙龙主题征集
ITPUB论坛 » WEB程序开发 » 有关在DataGrid中更新DataSet的问题

新一届的微软MVP评选已经开始,欢迎各位推荐!

标题: 有关在DataGrid中更新DataSet的问题
离线 c15010101
一般会员



精华贴数 0
个人空间 0
技术积分 258 (7637)
社区积分 7 (13044)
注册日期 2003-8-3
论坛徽章:0
      
      

发表于 2004-7-28 23:51 
有关在DataGrid中更新DataSet的问题(问题已解决)

我想实现如图中所示的功能:
在分别填写完所有项的“实收量”后,再按“提交”按钮。这时才将所有项的“实收量”从数据集中写入数据库的相关表中。我在实际运用中遇到2个问题一时无法解决。
1、使用类型化数据集更新现有记录,
 private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
    DataSet1.表[e.Item.ItemIndex].列名 = 100;
 DataGrid1.AcceptChanges();
 DataGrid1.EditItemIndex=-1;
  DataGrid1.DataBind();
}
这样每次按“更新”后会在相应字段中显示新值,但再按下一个“编辑”按钮,之前的值又变为旧值,后来我在上面的代码中又加了写入数据库的部分
DataSet ds=DataSet1.GetChanges();
SqlDataAdapter1.Update(ds);
这样才保持了新值,但这就与我的原先的设想不同了,因为我要在所有项的“实收量”更新完后才一起写入数据库的。不知这点问题出在哪儿?

2、因为DataGrid中的用品名称是别的表中的数据不是当前表的,当前表中只有用品编号,所以我要手写SQL,“select od_id,thg_name,od_price,od_order_amount,od_receive_amount,(od_price*od_receive_amount) as sum from order_detail ,thing where thg_no=od_thing ”
所以这里的DataSet只能用非类型化数据集。(不知我理解的对不对?)代码相应改为:
 private void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
    DataSet1.表[e.Item.ItemIndex].列名 = 100;
 DataGrid1.Tables[0].Rows[e.Item.ItemIndex].ItemArray[4] = 100;
    DataSet ds=DataSet1.GetChanges();
    SqlDataAdapter1.Update(ds);
 DataGrid1.AcceptChanges();
 DataGrid1.EditItemIndex=-1;
    DataGrid1.DataBind();
}
但是运行后报错,dataSet引用为空。我检查发现100没付给“DataGrid1.Tables[0].Rows[e.Item.ItemIndex].ItemArray[4]”以所以引起“SqlDataAdapter1.Update(ds);”出错。
上面的2个问题如何解决啊!
真希望有人能帮帮我!为感!




c15010101 上传了这个附件:
2004-7-28 23:51
tmp.jpg (16.74 KB)
 

只看该作者    顶部
离线 c15010101
一般会员



精华贴数 0
个人空间 0
技术积分 258 (7637)
社区积分 7 (13044)
注册日期 2003-8-3
论坛徽章:0
      
      

发表于 2004-7-31 11:06 
up


只看该作者    顶部
离线 LingChen
中级会员


精华贴数 0
个人空间 0
技术积分 632 (3059)
社区积分 219 (2316)
注册日期 2003-12-20
论坛徽章:0
      
      

发表于 2004-7-31 16:13 
关注中


__________________
于千万人之中遇见你所遇见的人,于千万年之中,时间的无涯的荒野里,没有早一步,也没有晚一步,刚巧赶上了,那也没有别的话可说,惟有轻轻的问一声:"噢,你也在这里吗?"
只看该作者    顶部
离线 c15010101
一般会员



精华贴数 0
个人空间 0
技术积分 258 (7637)
社区积分 7 (13044)
注册日期 2003-8-3
论坛徽章:0
      
      

发表于 2004-8-4 22:10 
我的用意是:
在数据库中有两张表,订单表和订单明细表,明细表中有所订物品的详细情况,我想在一个页面中用DataGrid显示订单明细表的内容,然后直接在DataGrid中更改,把所有同一张订货单的货品实收数量填写完后,再一起提交(写到数据库中,一是更新订单明细表,二是更新相应的订单表中某一条记录的“订单状态”字段)。
那在按提交之前,对于在DataGrid中所做的操作我只想先写到数据集(DataSet)中。

现在我就是不知道如何实现把DataGrid中某行某列的值写到DataSet的相应的位置中。


只看该作者    顶部
离线 cowherd
不如做了和尚


精华贴数 1
个人空间 0
技术积分 8322 (153)
社区积分 8044 (193)
注册日期 2001-9-24
论坛徽章:59
管理团队成员NBA2008季后赛纪念徽章2008北京奥运纪念徽章:棒球2008北京奥运纪念徽章:皮划艇激流回旋2008北京奥运纪念徽章:曲棍球2008北京奥运纪念徽章:射击
2008北京奥运纪念徽章:马术2008北京奥运纪念徽章:皮划艇静水2008北京奥运纪念徽章:铁人三项   

发表于 2004-8-5 08:38 


QUOTE:
最初由 c15010101 发布
我的用意是:
在数据库中有两张表,订单表和订单明细表,明细表中有所订物品的详细情况,我想在一个页面中用DataGrid显示订单明细表的内容,然后直接在DataGrid中更改,把所有同一张订货单的货品实收数量填写完后,再一起提交(写到数据库中,一是更新订单明细表,二是更新相应的订单表中某一条记录的“订单状态”字段)。
那在按提交之前,对于在DataGrid中所做的操作我只想先写到数据集(DataSet)中。

现在我就是不知道如何实现把DataGrid中某行某列的值写到DataSet的相应的位置中。


这有什么难的;

在DataGrid中中取得某关键字列的值,然后在将值修改DataSet,再
重新榜定一次DataGrid不就行了。

比如关键字列为id,你先取得编辑行的DataGrid的iD列的值和
其他行的值,对DataSet执行update语句就可以了。

你不知道如何实现的问题到底出在那里?


__________________
我就是一个罗罗嗦嗦、唧唧歪歪、磨磨蹭蹭、说到哪儿算哪儿的唐僧
---------------------------------------------------------------------------------------------------------------------------
自2008-3-13号以后,如果发现本ID以不雅口气回帖或者发帖,欢迎向本ID举报,每次会有888b币赠送!
        -----本条款解释权归孤魂一笑
只看该作者    顶部
离线 init.ora
一般会员



精华贴数 0
个人空间 0
技术积分 168 (11118)
社区积分 15 (8871)
注册日期 2004-5-20
论坛徽章:1
ITPUB新首页上线纪念徽章     
      

发表于 2004-8-6 10:05 
up


只看该作者    顶部
离线 cowherd
不如做了和尚


精华贴数 1
个人空间 0
技术积分 8322 (153)
社区积分 8044 (193)
注册日期 2001-9-24
论坛徽章:59
管理团队成员NBA2008季后赛纪念徽章2008北京奥运纪念徽章:棒球2008北京奥运纪念徽章:皮划艇激流回旋2008北京奥运纪念徽章:曲棍球2008北京奥运纪念徽章:射击
2008北京奥运纪念徽章:马术2008北京奥运纪念徽章:皮划艇静水2008北京奥运纪念徽章:铁人三项   

发表于 2004-8-6 11:27 
这有什么好顶的!


__________________
我就是一个罗罗嗦嗦、唧唧歪歪、磨磨蹭蹭、说到哪儿算哪儿的唐僧
---------------------------------------------------------------------------------------------------------------------------
自2008-3-13号以后,如果发现本ID以不雅口气回帖或者发帖,欢迎向本ID举报,每次会有888b币赠送!
        -----本条款解释权归孤魂一笑
只看该作者    顶部
离线 c15010101
一般会员



精华贴数 0
个人空间 0
技术积分 258 (7637)
社区积分 7 (13044)
注册日期 2003-8-3
论坛徽章:0
      
      

发表于 2004-8-6 15:15 
楼上的朋友,没你说的那么复杂吧!根本不需要ID列,e.Item.ItemIndex就能指定是哪一行了。我只不过不能解决的是Update之前的内容,就是如何修改DataSet的值!


只看该作者    顶部
离线 cowherd
不如做了和尚


精华贴数 1
个人空间 0
技术积分 8322 (153)
社区积分 8044 (193)
注册日期 2001-9-24
论坛徽章:59
管理团队成员NBA2008季后赛纪念徽章2008北京奥运纪念徽章:棒球2008北京奥运纪念徽章:皮划艇激流回旋2008北京奥运纪念徽章:曲棍球2008北京奥运纪念徽章:射击
2008北京奥运纪念徽章:马术2008北京奥运纪念徽章:皮划艇静水2008北京奥运纪念徽章:铁人三项   

发表于 2004-8-6 15:27 


QUOTE:
最初由 c15010101 发布
楼上的朋友,没你说的那么复杂吧!根本不需要ID列,e.Item.ItemIndex就能指定是哪一行了。我只不过不能解决的是Update之前的内容,就是如何修改DataSet的值!

你要是分页了怎么办?
排序变了怎么办?
你用e.Item.ItemIndex就能指定是哪一行!!!

如何修改DataSet的值有办法啊;

直接改通过添加、更新或删除 DataRow 对象更改单个 DataTable 对象中的数据。
ds.Tables[0].Rows[index]["dfsdfsdf"]=sdfsdaf;
ds.Tables[0].Rows[index]["dfsdfsdf"]=sdfsdaf;
ds.Tables[0].Rows[index]["dfsdfsdf"]=sdfsdaf;
ds.Tables[0].Rows[index]["dfsdfsdf"]=sdfsdaf;


这样不行吗?


__________________
我就是一个罗罗嗦嗦、唧唧歪歪、磨磨蹭蹭、说到哪儿算哪儿的唐僧
---------------------------------------------------------------------------------------------------------------------------
自2008-3-13号以后,如果发现本ID以不雅口气回帖或者发帖,欢迎向本ID举报,每次会有888b币赠送!
        -----本条款解释权归孤魂一笑
只看该作者    顶部
 
    

相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问