⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 navigation.ascx.cs

📁 在线考试系统源代码
💻 CS
字号:
//Session["QList"]="10101";问题列表,0=未做,1=已做
//Session["MList"]="01100";标记列表,0=未标,1=标记
namespace OnlineExamine
{
	using System;
	using System.Data;
	using System.Drawing;
	using System.Web;
	using System.Web.UI.WebControls;
	using System.Web.UI.HtmlControls;
	using System.Collections;

	/// <summary>
	///		Navigation 的摘要说明。
	/// </summary>
	public partial class Navigation : System.Web.UI.UserControl
	{

		
		int qno;
		int qnum,objqnum,expqnum,trueqnum;
		string qList;
		string mList;
		char[] perfix=new char[10] {'A','B','C','D','F','G','H','J','K','L'};
		ObjQuestion objQuestion;
		ExpQuestion expQuestion;
		TrueQuestion trueQuestion;

		protected void Page_Load(object sender, System.EventArgs e)
		{
			// 在此处放置用户代码以初始化页面
			if(!IsPostBack)
			{
				ReadData();
				ShowNavigation();
				ShowQuestion();
				ShowAnswer();
			}
		}

		public void ReadData()
		{			
			if(Request["QNo"]!=null)
			{
				qno=Convert.ToInt32(Request["QNo"]);
			}
			else
			{
				qno=1;
			}
			lblQno.Text=qno.ToString();

			
			QuestionControl ctlQuestion=new QuestionControl();

			//Read Question Count
			objqnum=ctlQuestion.GetObjQuestions().Length;
			expqnum=ctlQuestion.GetExpQuestions().Length;
			trueqnum=ctlQuestion.GetTrueQuestions().Length;
			qnum=objqnum+expqnum+trueqnum;

			//Read Answered Question on the first time
			ObjQuestion[] questions=ctlQuestion.GetObjQuestions();
			for(int i=0;i<questions.Length;i++)
			{
				char[] questionlist=Session["QList"].ToString().ToCharArray();
				if(questions[i].ObjAnswer!=null&&questions[i].ObjAnswer.Item!=null&&!questions[i].ObjAnswer.Item.Equals(string.Empty))
					questionlist[i]='1';
				else
					questionlist[i]='0';
				qList="";
				foreach(char c in questionlist)
					qList+=c.ToString();
				Session["QList"]=qList;
			}

			//Read Session
			if(Session["QList"]==null||(string)Session["MList"]==null)
				throw new Exception("Please initialize QuestionList and MarkedList");
			qList=(string)Session["QList"];
			mList=(string)Session["MList"];
		}

		public void ShowNavigation()
		{
			Repeater1.DataSource=CreateNavigationDataList();
			Repeater1.DataBind();
		}

		public void ShowQuestion()
		{
			QuestionControl ctlQuestion=new QuestionControl();

			if(qno==1)
				btnPrev.Enabled=false;
			else if(qno>=qnum)
				btnNext.Enabled=false;

			if(qno<=objqnum)
			{
				objQuestion=ctlQuestion.GetObjQuestion(qno);

				lblQuestionInfo.Text=objQuestion.Info;

				if(objQuestion.Type==0)
				{
					chklItems.Visible=false;
					rblItems.DataSource=CreateQuestionDataList();
					rblItems.DataTextField="ItemInfo";
					rblItems.DataValueField="ItemId";
					rblItems.DataBind();		
				}
				else
				{
					rblItems.Visible=false;
					chklItems.DataSource=CreateQuestionDataList();
					chklItems.DataTextField="ItemInfo";
					chklItems.DataValueField="ItemId";
					chklItems.DataBind();	
				}
			}
			else if(qno<=objqnum+expqnum)
			{
				expQuestion=ctlQuestion.GetExpQuestion(qno-objqnum);
				lblQuestionInfo.Text=expQuestion.Info;
				hlLink.Visible=true;
				hlLink.NavigateUrl=expQuestion.Link;
			}
			else
			{
				trueQuestion=ctlQuestion.GetTrueQuestion(qno-objqnum-expqnum);
				lblQuestionInfo.Text=trueQuestion.Info;
			}
		}

		public void ShowAnswer()
		{
			if(mList[qno-1]=='1')
				chkMarked.Checked=true;
			if(qno<=objqnum)
			{
				if(objQuestion.ObjAnswer!=null&&objQuestion.ObjAnswer.Item!=null&&!objQuestion.ObjAnswer.Item.Equals(string.Empty))
				{
					string[] answerItems=objQuestion.ObjAnswer.Item.Split(new Char[]{','},10);
					foreach(string answerItem in answerItems)
					{
						if(objQuestion.Type==0)
						{
							for(int i=0;i<rblItems.Items.Count;i++)
								if(rblItems.Items[i].Value==answerItem)
									rblItems.Items[i].Selected=true;
						}
						else
						{
							for(int i=0;i<chklItems.Items.Count;i++)
								if(chklItems.Items[i].Value==answerItem)
									chklItems.Items[i].Selected=true;
						}
					}
				}
			}
		}

		public void InsertAnswer()
		{
			if(Request["QNo"]!=null)
			{
				qno=Convert.ToInt32(Request["QNo"]);
			}
			else
			{
				qno=1;
			}

			//Book Marked
			char[] questionlist=Session["MList"].ToString().ToCharArray();
			if(chkMarked.Checked)
				questionlist[qno-1]='1';
			else
				questionlist[qno-1]='0';
			mList="";
			foreach(char c in questionlist)
				mList+=c.ToString();
			Session["MList"]=mList;

			QuestionControl ctlQuestion=new QuestionControl();
			objqnum=ctlQuestion.GetObjQuestions().Length;

			if(qno<=objqnum)
			{
				//Insert Answer
				objQuestion=ctlQuestion.GetObjQuestion(qno);			
				string answerItem="";
				if(objQuestion.Type==0)
				{
					if(objQuestion.ObjAnswer==null)
						objQuestion.ObjAnswer=new ObjAnswer();
					answerItem=rblItems.SelectedValue;
					objQuestion.ObjAnswer.Item=answerItem;
				}
				else
				{
					if(objQuestion.ObjAnswer==null)
						objQuestion.ObjAnswer=new ObjAnswer();
					foreach(ListItem item in chklItems.Items)
						if(item.Selected)
							answerItem+=item.Value+",";
					if(answerItem.Length>0)
						answerItem.Remove(answerItem.Length-1,1);
					objQuestion.ObjAnswer.Item=answerItem;
				}

				//Answered Question
				questionlist=Session["QList"].ToString().ToCharArray();
				if(!answerItem.Equals(string.Empty))
					questionlist[qno-1]='1';
				else
					questionlist[qno-1]='0';
				qList="";
				foreach(char c in questionlist)
					qList+=c.ToString();
				Session["QList"]=qList;
			}
		}

		private string FormatID(int intID)
		{
			string strID = intID.ToString();
			int intCharlong = 2-strID.Length;
			return  strID.PadLeft(strID.Length + intCharlong,'0');
		}
	
		#region Create DataList

		private DataView CreateNavigationDataList()
		{
			DataTable dt=new DataTable();
			dt.Columns.Add(new DataColumn("AnswerValue", typeof(string)));
			dt.Columns.Add(new DataColumn("AnswerNumber", typeof(string)));
			dt.Columns.Add(new DataColumn("AnswerColor", typeof(string)));

			qList=(string)Session["QList"];
			DataRow dr;
			for(int i=1;i<=qList.Length;i++)
			{
				dr = dt.NewRow();
				dr[0]=FormatID(i);
				dr[1]=FormatID(i);
				if(qList.Substring(i-1,1).Equals("1"))
					dr[2]="greenButton";
				else
					dr[2]="blackButton";

				if(mList.Substring(i-1,1).Equals("1"))
					dr[2]="yellowButton";

				dt.Rows.Add(dr);
			}
			DataView dv = new DataView(dt);
			return dv;
		}

		private DataView CreateQuestionDataList()
		{
			DataTable dt = new DataTable();
			DataRow dr; 
			dt.Columns.Add(new DataColumn("ItemId", typeof(Int32)));
			dt.Columns.Add(new DataColumn("ItemInfo", typeof(string)));

			for(int i=0;i<objQuestion.ObjItems.Length;i++)
			{
				dr = dt.NewRow();
 
				dr[0]=objQuestion.ObjItems[i].ItemId;
				dr[1]=perfix[i].ToString()+". "+objQuestion.ObjItems[i].Info;
				dt.Rows.Add(dr);
			}
			DataView dv = new DataView(dt);
			return dv;
		}

		#endregion

		#region Event
		private void Repeater1_ItemCommand(object source, System.Web.UI.WebControls.RepeaterCommandEventArgs e)
		{
			InsertAnswer();
			string Url = "Examine.aspx?qno="+e.CommandArgument.ToString();
			Response.Redirect(Url);
		}
		
		protected void btnSubmit_Click(object sender, System.EventArgs e)
		{
			InsertAnswer();
			ShowNavigation();
		}
		#endregion

		#region Web 窗体设计器生成的代码
		override protected void OnInit(EventArgs e)
		{
			//
			// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
			//
			InitializeComponent();
			base.OnInit(e);
		}
		
		/// <summary>
		///		设计器支持所需的方法 - 不要使用代码编辑器
		///		修改此方法的内容。
		/// </summary>
		private void InitializeComponent()
		{
			this.Repeater1.ItemCommand += new System.Web.UI.WebControls.RepeaterCommandEventHandler(this.Repeater1_ItemCommand);

		}
		#endregion

		protected void btnPrev_Click(object sender, System.EventArgs e)
		{
			InsertAnswer();
			string Url = "Examine.aspx?qno="+(qno==1?1:qno-1);
			Response.Redirect(Url);
		}

		protected void btnNext_Click(object sender, System.EventArgs e)
		{
			InsertAnswer();
			string Url = "Examine.aspx?qno="+(qno==qnum?qnum:qno+1);
			Response.Redirect(Url);
		}

	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -