小妹最近遇上一头疼的问题:程序要求点击主界面上一按钮,弹出一窗口,在新窗口的表格里写入大量数据后,要求将表格的这大量数据返回到主界面中重新显示到表格中(同时主界面中其它数据不能丢失),苦思良久,再网上查了资料,我采用的是用window.openModalDialog打开新窗口,在新窗口的表格中写入的数据要转化为javascript的数组才可以从新窗口中返回到主窗口,但即使返回来了,这是个javascript的数组,怎么让它变成.net的datatabele在datagrid中显示呢? 各位大哥大姐看在小妹第一次发贴的份上,给我指点一下吧!!!谢谢大家

解决方案 »

  1.   

    你首先要弄清楚地是 datagrid 到客户端显示的时候 其实就是一个table 。所以你要用js在页面的datagrid 里写数据就是怎么在table 里写数据。
    那接下来的问题就是在写数据的时候怎么在 table 里面定位的问题。
    但就算真的写上了,,这些数据也不会被提交的服务端,你最后要在服务端操作这些数据罢?
      

  2.   

    to:lanmao98(搞不定了)
    谢谢你,终于有人理我了汗 。。
    其实我的意思就是先要把javascript代码调用返回的一个数组赋给datatable,但好像我直接这样做不行
    string strScript = "<script>" + "\r\n";
    strScript += "function OpenWin(){" + "\r\n";
    strScript += "var str=window.showModalDialog('WebForm3.aspx','','')" + "\r\n";
    strScript += "if(str!=null) " +dt.Rows[0][0]+ " =String(str[0][0])" + "\r\n";

    见上面的代码,我直接把javascript返回的数组str的元素str[0][0]赋给datatable dt的元素dt.Rows[0][0],不行啊,要怎么才能赋值呢 strScript += "}" + "\r\n";
    strScript += "</script>" + "\r\n";
      

  3.   

    你这是写cs端的代码,,dt.Rows[0][0] 是一个cs端的变量 
    你是不能这样直接把客户端的数据赋值给cs变量
      

  4.   

    就是说这样作的话,无论如何不可能赋值啦?但是我要弹出一个新的页面,并且从那个页面返回表格的数据,好像只能用javascript代码激发阿,或者你用更好的建议没呢?
      

  5.   

    小妹:
    window.openModalDialog打开的新窗口的数据输入完毕点击确认后把这些数据存入特定Session,写一段当ModalDialog关闭后刷新主页面的Javascript让主页面刷新使其获得Session,当然这个Session用Datatable存取,在主页面Onload的时候对原有数据和这个Session的数据进行合并。
      

  6.   

    这位大哥的思路对我很有启发,本来我也觉得用session是个不错的选择,结果搞着搞着就糊涂了,以为只能靠javascript和.net直接转化。现在总算明白了这样是行不通的,既然风翼大哥给指明了一条路,我就按着法子试试了。再次感谢回复我的两位前辈!