我在Page_Load中动态创建了一组单选控件也做了控件事件,控件绑订的值是从数据库中读出来绑订上去的,我在事件里要做一些选中值的判断,其中数据库中有个字段是控制读出来的数据是否随机排序读取,我设置AutoPostBack=true,我页面也用了ajax实现了无刷新,但是如果这些是随机排序读取值的时候,每次选中后要回调服务器,每次回调服务器后页面读取出来的值又重新排列了1次,我要如何实现,如果是随机排序的,我选中后回调服务器后页面不在执行1次啊
如果我加上if (!IsPostBack)的话,选中后,返回页面就什么都没有了

解决方案 »

  1.   

    是不是AutoPostBack=true和ajax调用有冲突啊!
      

  2.   

    AutoPostBack往返时,相当于重新刷新页面(不完全是),会丢失一些前台控件或是变量的数据,如果想要用自动回发,必须要保存这些值。既然用了AJAX,实际上就没有必要再用AutoPostBack了。
      

  3.   

    if (type == "单选")
                            {
                                if (randoma == "True")
                                {
                                    sql4 = "select top " + topn + " * from answer where QuestionID1=" + Label1.Text + " and ProjectID1='" + suryeysID + "' order By Inputable1 DESC,Rnd(" + (-1 * intRandomNumber) + "*id)";
                                }
                                else
                                {
                                    sql4 = "select top " + topn + " * from answer where QuestionID1=" + Label1.Text + " and ProjectID1='" + suryeysID + "'";
                                }
                                comm = new OleDbCommand(sql4, conn);
                                OleDbDataReader read4 = comm.ExecuteReader();
                                while (read4.Read())
                                {
                                    input = read4["Inputable1"].ToString();
                                    i = i + 1;
                                    RadioButton rd = new RadioButton();
                                    rd.ID = "rd1" + i.ToString();
                                    rd.GroupName = "rd1";
                                    rd.Text = read4["Answer1"].ToString();
                                    rd.CheckedChanged += new EventHandler(rd_CheckedChanged);
                                    rd.AutoPostBack = true;
                                    UpdatePanel1.ContentTemplateContainer.Controls.Add(rd);
                                    if (input == "True")
                                    {
                                        Literal kg = new Literal();
                                        kg.Text = " ";
                                        Special.Enabled = false;
                                        UpdatePanel1.ContentTemplateContainer.Controls.Add(kg);
                                        UpdatePanel1.ContentTemplateContainer.Controls.Add(Special);
                                    }
                                    Literal br = new Literal();
                                    br.Text = "<br/><br/>";
                                    UpdatePanel1.ContentTemplateContainer.Controls.Add(br);
                                }
                            }
    protected void rd_CheckedChanged(object sender, EventArgs e)
        {
            foreach (Control ctl in UpdatePanel1.ContentTemplateContainer.Controls)
            {
                if (ctl is RadioButton)
                {
                    RadioButton rb = (RadioButton)ctl;
                    if (rb.Checked == true)
                    {
                        dx = rb.Text;
                    }
                }
            }
            string sql = "select * from answer where Answer1='" + dx + "' and QuestionID1=" + Label1.Text + " and ProjectID1='" + suryeysID + "'";
            conn = new OleDbConnection(strConnection);
            conn.Open();
            comm = new OleDbCommand(sql,conn);
            OleDbDataReader read1 = comm.ExecuteReader();
            if(read1.Read())
            {
                string tu = read1["Inputable1"].ToString();
                if (tu == "True")
                {
                    Special.Enabled = true;
                }
                else
                {
                    Special.Enabled = false;
                }
            }
            conn.Close();这是一小部分代码,上面的部分是在page_load中的,下面的是单选控件事件中的代码
      

  4.   

    AJAXY就不用autopostback了dropdownlist onchange='ajax func'
      

  5.   

    看来必须得全部用AJAX来完成,POSTBACK的时候,前台数据丢失是必然的。