有以下任务,请各位高手指点应怎样实现为好:1:数据为主从结构(如主表:学生姓名、班级;从表:每科成绩)
2、要求在一个[页面A]上完成主从表数据录入。主表字段可用TextBox;从表用DataGrid,并加Button(添加),每按一次“添加”弹出[页面B],输入从表(每科成绩),提交后在[页面A]的DataGrid中反映(添加行显示)。
3、所有数据录入完成后,提交[页面A],保存数据到数据库。请各位说说现实方法。多谢。

解决方案 »

  1.   

    DataTable 帮定DataGrid最后在把DataTable更新数据库 就可以了!
      

  2.   

    你可以在点提交按钮的时同时弹出 页面B ,在页面B的Page_Load判断主表字段可用TextBox,这样可以根据主表字段可用TextBox显示输入从表(每科成绩)的内容。最后保存数据到数据库
      

  3.   

    在B页面,和通常的添加记录相同,关键在,B页面录入完成之后,如何把值写入到A页面的输入框中.
    我想,你可以在B页面中,放一个按钮,在录入完成之后,点击此按钮,然后至后台代码中,循环DATAGRID控件,取出每一行中各列的值,用脚本的方式向A页面中的输入框写入值,语句如下:
    for(int i.....)//循环datagrid
    {
    this.Response.Write("<script>opener.document.all('A页面中输入框的客户端ID').value = '" + 循环中取到的值 + "';</script>");
    }如上,B页面中添加的值,可顺利返回到A页面中.不过,我觉得楼主的方法不是很好.我觉得应当在一个页面中实现.而且最好用DATALIST控件实现.点击某行记录,提交页面,将该行变成一个新的DATAGRID控件,然后顺序添加,也就是在DATALIST控件中再套一个DATAGRID控件.
    当然这样做会麻烦一点,但用户界面可能会更好一点.
      

  4.   

    我不是很明白搂主的意思
    要是做主从表的录入就是先录主表 在录从表 注意主外健的关系就好了
    没有什么大不了的
    要是做先缓存 最后点提交按钮一次保存的话就有点复杂了我可以提供几个思路
    1、主从表都加以个字段IsTemp,临时存的数据IsTemp字段都存Y,点保存的时候Update .. set IsTemp='N' Where  ... and IsTemp='Y';
    2、建林师表存这些东西 最后提交的时候 insert into 正式表 select * from 临时表 where 条件
    第一第二种方法注意区分各个用户 不要搞混了
    3、将主从表的东西取出到dataset中 然后将dataset保存在Session中 增加的时候对dataset进行操作 最后提交的时候再保存进数据库
    4、方法同3,不同点为dataset保存为xml文件 而不是session
      

  5.   

    可以用JavaScript实现。你先实义好一个按键btnFresh并创建一个点击事件,再装它的高、宽都设为1px,这样就看不到了。不能设为不可视!同时用一个strAry保存一下你要传到B页面的值。你在btnFresh.click()的事件中定义好重新绑定DataGrid就行了。window.showModalDialog('NewWindows.aspx',strAry,'dialogWidth:' + strWidth + ';dialogHeight:' + strHeight + ';scroll:no;resizable:no;status:no;help:no');
    //当打开的窗口关闭时会执行下面的语句
    document.all.btnFresh.click();
      

  6.   

    关于datagrid的增删改,去看看msdn帮助呀,明白的很,还可以省分呀
      

  7.   

    下面是我的思路:从表中加一字段。isAdd来标志是否正式添加加Button(添加),每按一次“添加”弹出[页面B],将主表学生的唯 一标志传过去。将从表数据录入从表。isAdd标志为0。然后点击B页面的一个关闭按钮。关闭B页面并刷新A页面。
    在A页面的Page_Load()事件中的isPost外面也就是每次刷新都能起作用。加入对DataGrid的谤定事件。注意每次都谤定当前学生对应的从表数据。当然标志isAdd为0的。也就是每次在B页面中加完从表数据。回到A页面都重新谤定一下A页面的从表datagrid.最后点保存将主表内容录入。从表从容更新。即把isAdd标志UPDATE为1为避免在添加新学生主从表时从表中存在isAdd为0 的.可以在A页面的page_Load事件的!isPostBack中删除从表中isAdd为0的数据。因为数据库中只有isAdd为1的数据是有用的。为0的只是过度数据。当点击A页面的保存时从表中就不存在isAdd为1的数据。
      

  8.   

    我觉得还是重新谤定datagrid比较好。
      

  9.   

    本人初学ASP.NET,感谢各位指导,参与者一律有分。xzq686(瞬):你的方法我也想过,但是修改时怎么处理。因为修改时要求 页面A 显示数据库中的原有数据,从表数据也要显示到DATAGRID,这时从表 isadd 应为1。你说觉得重新绑定DATAGRID比较好,能不能讲具体点。snakegod(蛇姬) ( ):第2、3的方法都很好,能讲具体点吗,最好有个实例。
      

  10.   

    补充我的思路:
    1、打开 页面A 时,根据主表KEY,从数据库中取出主表、从表数据,以XML形式或DataSet返回客户端,将数据显示在 页面A;
    2、对 页面A 中的数据进行编辑(主表字段用TEXTBOX,从表用DATAGRID);对从表DataSet进行增删改,可以在同一页面,不一定要打开另外的页面;
    3、将修改好的 页面A 中的数据以XML或DataSet返回服务器,将数据存入数据库。不知道这个流程怎么实现,恳请各位高手赐教!