首先来说说我负责这部分,主要是在配置手动试卷这一块。功能:手动配置各学院试卷,提供预览,下载;根据用户的需求不同,需要纸质化考试。这块东西基本上都是CS的,因为界面用的是ASP的,所以基本上很少涉及到前台界面上的数据。前期主要是调试错误,优化。主要来谈谈这次维护。
1.后端控制页面
其实要是html页面的话,就不存在这个问题了。所以很多地方相对在善良公社里面都是不一样的,数据的处理方面更接近牛腩。
usingSystem.Web.UI.HtmlControls;
privateSystem.Web.UI.HtmlControls.HtmlGenericControl isExaming;
Lable labelcontent=newLable();
Labelcontent.text="测试";
isExaming.Controls.Add(labelcontent);
这样就能够在页面上显示我们需要显示的内容了。
实际运用:
//利用循环取出答案-陈方林-2014.2.16
for (int i = 0; i <arrAllQuestion.Count; i++)
{
//将arraylist转换为datarow-陈方林-2014.2.16
DataRow dranswer =(DataRow)(arrAllQuestion[i]);
//取出答案的字段-陈方林-2014.2.16
string answer =dranswer["CorrectAnswer"].ToString();
//将答案显示在界面上-陈方林-2014.2.16
Label answerlbl = new Label();
answerlbl.Text = answer;
Label answerTitle = newLabel();
int countTest = i + 1;
Label answerTitleFirst = newLabel();
answerTitleFirst.Text = "计算选择题答案" +" ";
isExaming.Controls.Add(answerTitleFirst);
answerTitle.Text = "第" +countTest.ToString() + "题 答案是:" + " ";
isExaming.Controls.Add(answerTitle);
//添加一行
AddOneRow();
isExaming.Controls.Add(answerlbl);
AddOneRow();
}
这段就是用来显示答案的代码。主要是循环遍历arralist并转换为datarow来拿出答案。其实大可不必来用一个方法来添加一行,+"&nbsb"就可以解决。
2.导出页面Word文件
public void ExpertControl(System.Web.UI.Control source, DocumentType type)
{
//设置Http的头信息,编码格式
if (type == DocumentType.Word)
{
//添加文件的名字,result.doc
Response.AppendHeader("Content-Disposition", "attachment;filename=result.doc");
//输出的文件类型,程序调用系统自带的微软的word
Response.ContentType = "application/ms-word";
}
//utf-8是网页默认格式,word出现乱码是因为它的默认格式不是utf-8是gb2312
Response.Charset = "utf-8";
//将源文件的格式加密为utf-8
Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8");
//关闭控件的视图状态
source.Page.EnableViewState = false;
//初始化HtmlWriter
System.IO.StringWriter writer = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWriter = new System.Web.UI.HtmlTextWriter(writer);
source.RenderControl(htmlWriter);
//输出
Response.Write(writer.ToString());
Response.End();
}
这里主要用到的是web.UI.Control类和Response对象的的输入,输出。说的很官方,其实也就是一些方法。MSDN上都有相应的例子和解释。
总结
之上仅仅是系统中冰山一角,仅仅总结了我在维护过程中的一小块。通过ksxt和slgs的对比,还是能看到很多不一样的东西。ksxt主要是.net的东西涉及的比较多,slgs则是可能更接近bs的一些常用技术,js和easyui的框架、json的一些东西。还有就是在学习别人的代码过程中,总有这些的体会。往往很多实现功能很复杂的东西,核心的代码只有一两行,因为其他的一些代码还是能够写出来的。每每抓住这些必要核心几句简单的代码,效率上还是不错的。