想做一个Web网页,
通过一dropdownlist选择班级,
通过Radiobuttonlist显示该班的所有课程,而后在同一页用label显示出radiobuttonlist选中的课程的任教老师的信息.想通过设定一全局变量保留Radiobuttonlist的选择,但每次选择课程自动刷新后(已将autopostback属性设为true),无法保留原来的选择.如何处理既能显示教师停息,又能保留课程的?
代码:
int i=1;               //全局变量i   我在窗体LOAD语句前设的应该是全局变量吧?刚学不知对不对
private void Page_Load(object sender, System.EventArgs e)
{
    if(!IsPostBack)
    {
    dataSet11.Clear();                           //dataset11为班级信息数据库
    sqlDataAdapter1.Fill (dataSet11); 
    DropDownList1.DataBind();
    }
    sqlDataAdapter2.SelectCommand.Parameters[0].Value=DropDownList1.SelectedItem.Text;
    dataSet21.Clear();                           //dataset21为教师信息
    sqlDataAdapter2.Fill (dataSet21);
    RadioButtonList1.DataBind();
    
    Label3.Text=dataSet21.Tables["班级"].Rows[0]["教师姓名"].ToString();
    Label4.Text=dataSet21.Tables["班级"].Rows[0]["性别"].ToString();
    RadioButtonList1.SelectedIndex=i;               //恢复radiobuttonlist状态
}
private void RadioButtonList1_SelectedIndexChanged(object sender, System.EventArgs )
{
    i=RadioButtonList1.SelectedIndex;                   //将radiobuttonlist 状态保存在i中
}

解决方案 »

  1.   

    你的写法不对,
    把 RadioButtonList1 的 DataBind 事件,写到 if(!Page.IsPostBack) 内部
      

  2.   

    最好把选择的教师保存在类似session变量中。
    然后在
    RadioButtonList1.DataBind();之前把session中的变量与待绑定的数据集比较,获得相等的的那一项的item的index,接下来就是RadioButtonList1.SelectedIndex=index就行了。我是这么做的。
      

  3.   

    写到 if(!Page.IsPostBack) 内部不行,radiobuttonlist要根据dropdownlist的选择刷新的,这样写就无法根据dropdownlist的选择刷新了.
    按hww001的说法重写了一下,但通不过编译,我Session没用过,
    能不能帮我看看,通不过编译.for (i=0;i<=RadioButtonList1.Items.Count-1;i++)
    {
    if(Session["课程名称"].ToString()==RadioButtonList1.Items[i].Text)   //此处编译出错了
    RadioButtonList1.SelectedIndex=i;      
    }
      
    private void RadioButtonList1_SelectedIndexChanged(object sender, System.EventArgs e)
    {
    Session["课程名称"]=RadioButtonList1.SelectedIndex;      }
      

  4.   

    有没人能帮一下忙?
    Session["课程名称"]=RadioButtonList1.SelectedIndex;RadioButtonList1.SelectedIndex=Session["课程名称"];
    第二句为什么会提示无法将"Object"隐式转换为"int",Session前加(int)强制转换则编译提示出错
      

  5.   

    RadioButtonList1.SelectedIndex=int.Parse(Session["课程名称"];)
      

  6.   

    if(Session["rbIndex"] != null)
    {
      RadioButtonList1.SelectedIndex = int.Parse(Session["rbIndex"]);  //恢复radiobuttonlist状态
    }private void RadioButtonList1_SelectedIndexChanged(object sender, System.EventArgs )
    {
        Session["rbIndex"] = RadioButtonList1.SelectedIndex;                  
    }
      

  7.   

    alex加了个非空判断,应该是对的,但
    RadioButtonList1.SelectedIndex=int.Parse(Session["课程名称"];)
    此处系统提示语法错误:无法从"object "转换为"string"
    SelectedIndex 的返回值为int ,为什么Session保存后,不能重新赋值回Selectdindex中?
    强制转换为int也不行
    应该有人碰到过同样的问题吧?
    帮帮忙
      

  8.   

    RadioButtonList1.SelectedIndex=int.Parse(Session["课程名称"].ToString())
      

  9.   

    用ALEX的方法再结合JOHNMA的,编译通过了,但仍保存不了Radiobuttonlist的状态,单击刷新后,仍是未选中任何选项,有没有高人指点一下,拜托了,ViewState也试过了,用法与Session差不多,也是这个问题if(Session["课程名称"] != null)
    {
      RadioButtonList1.SelectedIndex = int.Parse(Session["课程名称"].Tostring());  }private void RadioButtonList1_SelectedIndexChanged(object sender, System.EventArgs )
    {
        Session["课程名称"] = RadioButtonList1.SelectedIndex;                  
    }
      

  10.   

    sqlDataAdapter2.SelectCommand.Parameters[0].Value=DropDownList1.SelectedItem.Text;
        dataSet21.Clear();                           //dataset21为教师信息
        sqlDataAdapter2.Fill (dataSet21);
        RadioButtonList1.DataBind();这段程序应该放在IsPostBack里面
      

  11.   

    写到 if(!Page.IsPostBack) 内部不行,radiobuttonlist要根据dropdownlist的选择刷新的,这样写就无法根据dropdownlist的选择刷新了
      

  12.   

    算了,不问了,做WEB想做出互动性较强的效果好象比较难,看了几个网站都是完成全部选项后再提交的,换种做法,先将所有选项列出,再一次性提交好了