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

解决方案 »

  1.   

    另外gridview点击“编辑”的时候,为什么gridview自动变高了?我的行高其实也设的挺高的,不知道为什么!
      

  2.   

    A也页面超链接跳到B页面  把A页面的的DateSet 存入session中,B页面根据A页面跳转时候传过来的被编辑行的ID,对Session里面的DataSet操作即可
      

  3.   

    放在session里那么服务器负载不是很大?
      

  4.   

    你可以使用
    gridview + detailsview最好直接存入到数据库
    gridview点击“编辑”的时候,为什么gridview自动变高了?看你的编辑代码执行的什么
      

  5.   

    别用dridview,用datalist,自定义模板,比gridview好用得多
      

  6.   

    detailsview可以放在心画面吗?如果就是要通过dataset传值该如何做呢?
    直接存入数据库如果人多的话打开数据库那么太频繁了!
    gridview点击“编辑”的时候,什么也没做,就是放了三个模板列,其中两个textbox,一个linkbutton
      

  7.   

    数据量不大的话,dataset可以放在session中或设成静态变量,大的话直接读写数据库。
    detailsview可以放在同一页,也可以放在新的页面,通过url参数传递选中的主表id。
    gridview为什么要允许编辑?你不是要在detailsview里面编辑吗?
      

  8.   

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

  9.   

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

  10.   

    或者从父页面打开新窗体的时候URL一个ID参数到子页面`
      

  11.   


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

  12.   

    一个dataset就可以,你更新的是明细表,而不是主表,主表上只不过有个副键指向明细表的响应条目,当你更新明细表时候,不要更新这个副键就可以,主表到明细表的页面跳转可以用query接收
      

  13.   

    他会变高是因为你给他设了高度,吧height去掉就可以了!!!
      

  14.   

    至于你说的明细表,用DetailView就可以啊,Gridview中加个模板列,增加删除,修改的链接,另外从Gridview中根据id或是其他的,在Detailview中保存一下,就可以了