gridview明细画面问题

sqn1982 2012-03-08 09:16:41
我设计了两张表,一张是主表main(m_id,m_value),一张是明细表detail(m_id,det_id,det_value),然后在主画面用一个gridview来编辑保存主表的数据(注:数据并不是即时保存到数据库中的,而是先保存在dataset中,最后统一通过数据适配器更新到数据库),主表的数据编辑保存很好做,问题是明细数据。我的思路是主gridview每行有一个链接,点击后能够弹开相应行的明细画面(新页面),新页面上能够编辑、插入、删除明细数据,点击确定后更新完的数据能够返回到主页面(另外一个dataset?),问题是主画面与明细画面间该如何通信?明细数据可以用dataset传递到明细画面吗?

求成熟的解决方案!
...全文
129 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
netstudy0105 2012-03-09
  • 打赏
  • 举报
回复
一个dataset就可以,你更新的是明细表,而不是主表,主表上只不过有个副键指向明细表的响应条目,当你更新明细表时候,不要更新这个副键就可以,主表到明细表的页面跳转可以用query接收
还想懒够 2012-03-09
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 somethingjack 的回复:]

引用 16 楼 somethingjack 的回复:

引用 15 楼 jjkk168 的回复:

没必要用session

弹出窗口后,直接编辑,直接在子窗口里面保存进数据表,然后由子窗口returnValue返回一个值给主窗口,主窗口收到这个值后,直接刷新就可以了

我一般用session- - 愿闻其详 这种做法

或者从父页面打开新窗体的时候URL一个ID参数到子页面……
[/Quote]

GridView仅用作于展示,而所有的数据操作都在子页面中。
新增的时候,主窗体传给子窗体一个空值或者是ID=0,子窗体收到0的消息后,就判断为新增,直接在子窗体里面插入数据库。
而修改的时候,点击GridView的某一行中的按钮或链接或行,拼出Url http://***/**.aspx&ID=2,这样子窗体就收到了ID=2的消息,就可以判定为修改,直接修改进数据库。

新增或修改完成以后,设置window.returnValue=非空值,当父窗体的showModalDialog收到的值为非空,就直接刷新页面即可,这样的话,GridView又重新加载一次,就将新数据展示出来了
SomethingJack 2012-03-09
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 somethingjack 的回复:]

引用 15 楼 jjkk168 的回复:

没必要用session

弹出窗口后,直接编辑,直接在子窗口里面保存进数据表,然后由子窗口returnValue返回一个值给主窗口,主窗口收到这个值后,直接刷新就可以了

我一般用session- - 愿闻其详 这种做法
[/Quote]
或者从父页面打开新窗体的时候URL一个ID参数到子页面`
SomethingJack 2012-03-09
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 jjkk168 的回复:]

没必要用session

弹出窗口后,直接编辑,直接在子窗口里面保存进数据表,然后由子窗口returnValue返回一个值给主窗口,主窗口收到这个值后,直接刷新就可以了
[/Quote]
我一般用session- - 愿闻其详 这种做法
是你_不懂 2012-03-09
  • 打赏
  • 举报
回复
至于你说的明细表,用DetailView就可以啊,Gridview中加个模板列,增加删除,修改的链接,另外从Gridview中根据id或是其他的,在Detailview中保存一下,就可以了。。。
是你_不懂 2012-03-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sqn1982 的回复:]
另外gridview点击“编辑”的时候,为什么gridview自动变高了?我的行高其实也设的挺高的,不知道为什么!
[/Quote]
他会变高是因为你给他设了高度,吧height去掉就可以了!!!
sqn1982 2012-03-08
  • 打赏
  • 举报
回复
怎么没有人了
sqn1982 2012-03-08
  • 打赏
  • 举报
回复
大家多讨论啊
还想懒够 2012-03-08
  • 打赏
  • 举报
回复
没必要用session

弹出窗口后,直接编辑,直接在子窗口里面保存进数据表,然后由子窗口returnValue返回一个值给主窗口,主窗口收到这个值后,直接刷新就可以了
sqn1982 2012-03-08
  • 打赏
  • 举报
回复
麻烦孟子E章说的再仔细点!
xiemeimeilove 2012-03-08
  • 打赏
  • 举报
回复
Gridview不是个好东西
sqn1982 2012-03-08
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 net_lover 的回复:]
你可以使用
gridview + detailsview

最好直接存入到数据库


gridview点击“编辑”的时候,为什么gridview自动变高了?

看你的编辑代码执行的什么
[/Quote]


detailsview可以放在心画面吗?如果就是要通过dataset传值该如何做呢?
直接存入数据库如果人多的话打开数据库那么太频繁了!


gridview点击“编辑”的时候,什么也没做,就是放了三个模板列,其中两个textbox,一个linkbutton
generhappy 2012-03-08
  • 打赏
  • 举报
回复
别用dridview,用datalist,自定义模板,比gridview好用得多
孟子E章 2012-03-08
  • 打赏
  • 举报
回复
你可以使用
gridview + detailsview

最好直接存入到数据库


gridview点击“编辑”的时候,为什么gridview自动变高了?

看你的编辑代码执行的什么
sqn1982 2012-03-08
  • 打赏
  • 举报
回复
放在session里那么服务器负载不是很大?
yuguojiangnan 2012-03-08
  • 打赏
  • 举报
回复
A也页面超链接跳到B页面 把A页面的的DateSet 存入session中,B页面根据A页面跳转时候传过来的被编辑行的ID,对Session里面的DataSet操作即可
sqn1982 2012-03-08
  • 打赏
  • 举报
回复
另外gridview点击“编辑”的时候,为什么gridview自动变高了?我的行高其实也设的挺高的,不知道为什么!
shenyong123 2012-03-08
  • 打赏
  • 举报
回复
求解!
sqn1982 2012-03-08
  • 打赏
  • 举报
回复
求解!
jshi123 2012-03-08
  • 打赏
  • 举报
回复
数据量不大的话,dataset可以放在session中或设成静态变量,大的话直接读写数据库。
detailsview可以放在同一页,也可以放在新的页面,通过url参数传递选中的主表id。
gridview为什么要允许编辑?你不是要在detailsview里面编辑吗?

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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