高分求教怎样删除自定义控件中checkboxlist里面的item
怎样删除checkboxlist里面的item
我做了一个多选题题目控件,用于一个考试系统。每次提交答案后,我想把已有的item删除,于是我调用了clear()方法,但是控件并没有从页面中消失
下面是我的控件的代码
namespace hanlin.program.Components.problems
{
using System;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Collections.Specialized;
/// <summary>
/// MultiChoice 的摘要说明。
/// </summary>
public class MultiChoice : System.Web.UI.UserControl,IProblem
{
protected System.Web.UI.WebControls.Label txtproblem;
protected System.Web.UI.WebControls.CheckBoxList choices;
private char curindex='A';
private Int64 id;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
}
public Int64 uid
{
get
{
return id;
}
set
{
id=value;
}
}
public StringDictionary getChoices()
{
StringDictionary sd=new StringDictionary ();
foreach (ListItem li in choices.Items )
{
sd.Add (li.Text ,li.Value );
}
return sd;
}
/// <summary>
/// 用于自增题目选项的标号(a,b,c等)
/// </summary>
private char index
{
get
{
char i=curindex;
//curindex+=1;
return i;
}
}
private void IncreIndex()
{
curindex=(char)((byte)curindex+1);
}
/// <summary>
/// 为题目添加选项
/// </summary>
/// <param name="s"></param>
///
public void init()
{
//choices.Items.Clear ();
//choices.Controls .Clear ();
}
virtual public void addChoice(string s)
{
ListItem li=new ListItem (index.ToString ()+". "+s,index.ToString ());
IncreIndex();
choices.Items.Add (li);
}
/// <summary>
/// 题干
/// </summary>
virtual public string problem
{
get
{
return txtproblem.Text ;
}
set
{
txtproblem.Text =value;
}
}
/// <summary>
/// 获取所选的若干构成的标号字符串
/// </summary>
/// <param name="e"></param>
///
public string choice
{
get
{
string s=" ";
foreach (ListItem li in choices.Items )
{
if(li.Selected )s+=li.Value ;
}
curindex='A';
choices.Items.Clear ();//获取答案后,已有的选项就被删除
return s.Trim ();
}
set
{//
if(value==null)
return;
foreach (ListItem li in choices.Items )
{
if(value.IndexOf(li.Value )>=0)//contains it
li.Selected =true;
}
}
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器
/// 修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}