想做一个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中
}
通过一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中
}
把 RadioButtonList1 的 DataBind 事件,写到 if(!Page.IsPostBack) 内部
然后在
RadioButtonList1.DataBind();之前把session中的变量与待绑定的数据集比较,获得相等的的那一项的item的index,接下来就是RadioButtonList1.SelectedIndex=index就行了。我是这么做的。
按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; }
Session["课程名称"]=RadioButtonList1.SelectedIndex;RadioButtonList1.SelectedIndex=Session["课程名称"];
第二句为什么会提示无法将"Object"隐式转换为"int",Session前加(int)强制转换则编译提示出错
{
RadioButtonList1.SelectedIndex = int.Parse(Session["rbIndex"]); //恢复radiobuttonlist状态
}private void RadioButtonList1_SelectedIndexChanged(object sender, System.EventArgs )
{
Session["rbIndex"] = RadioButtonList1.SelectedIndex;
}
RadioButtonList1.SelectedIndex=int.Parse(Session["课程名称"];)
此处系统提示语法错误:无法从"object "转换为"string"
SelectedIndex 的返回值为int ,为什么Session保存后,不能重新赋值回Selectdindex中?
强制转换为int也不行
应该有人碰到过同样的问题吧?
帮帮忙
{
RadioButtonList1.SelectedIndex = int.Parse(Session["课程名称"].Tostring()); }private void RadioButtonList1_SelectedIndexChanged(object sender, System.EventArgs )
{
Session["课程名称"] = RadioButtonList1.SelectedIndex;
}
dataSet21.Clear(); //dataset21为教师信息
sqlDataAdapter2.Fill (dataSet21);
RadioButtonList1.DataBind();这段程序应该放在IsPostBack里面