要做一个对各种方案进行两两比较的投票问题,待比较的方案数n由用户输入,用户确定方案数以后,在一个n*n的矩阵中输入两个方案的比较结果,比较结果为整数,不同的整数代表不同的结果。比如在第2行第3列中输入1,就表示方案2比方案3要好,输入0就表示方案2比方案3差。原先的思路是先设一个textbox和一个“确定”button1,用户在textbox里输入待比较方案数n,然后点确定button1,触发事件button1_onclick。在onclick事件里动态添加n*n个textbox,控制它们的位置,使得它们刚好排成一个表,在表里用户可以输入比较结果。另外在button1_onclick里还添加一个“确定”button2,使它的位置在textbox表下,点击该button2将textbox里的数据用session送到下一个页面去输出,下一个页面里用饼图,矩阵图可视化地表现投票结果。现在发现上面的思路走不通,在button1_onclick里添加button2后,当第一次输入n时,显示的textbox表是正确的,但如果重新输入一个更大的n(比如第一次输7,第二次输8),那么第50个textbox就一定会莫名其妙地错位到button2的上方,并且上面的text显示为“确定”,另外还有一些textbox也会错位。但如果输入的n是递减的,就没有这个问题。
考虑一下,可能跟vs2005里的内存分配有关。因为每次生成textbox以后,都是由vs2005自己撤销的textbox,而不是自己remove(我也想不出好办法remove)的。于是又想办法,先在webform里添加button2,开始设它visible为false。然后点击button1以后,再设它为true,并控制位置在textbox表下方。这样生成的表倒是没问题呢。但是,在button2_onclick里用Session["a01"] = TextBox1.Text;传值,编译通不过,提示找不到在button1_onclick里动态添加的TextBox1.
实在想不出办法呢,请各位大虾指教,提提解决问题的思路。小弟寒风中跪拜求教——

解决方案 »

  1.   

    上面说的意思就是:不通过asp文件,而是在C#程序里用
                         form1.Controls.Add(TextBox);
    向当前form添加控件textbox,然后如何将textbox里输入的text传送到其他网页(page)?
      

  2.   

    为什么不用手动创建的datatable,然后做绑定,这样你在传递信息的时候,也方便很多。
      

  3.   

    我不会用datatable,愚翁大哥或那位大侠给个学习的链接或范例?