大家一起讨论一下关于考试的试卷生成和判分问题datalist,来者有分

zhenkai 2004-04-30 11:08:31
我看到一篇关于网上考试的文章,其中的考试题目是通过datareader,然后
while rd.read()
---
end while
中间用rd.item("***")这么来构成的一片试卷。
我想我的试卷是这样生成
因为我的试卷数据来源是从硬盘上的.xml文件倒成dataset,所以就用不了reader了
而且我还希望通过datalist来生成,可是问题来了。
1、怎么判断试题的种类。我的数据表中有"class“字段,用于区分"单选","多选"
就这两种题型。我的选项子段分别是"xx_1","xx_2","xx_3","xx_4"用于记录选项
怎么能通过radiolist,checkboxlist将我这些字段分别根据题型的不同,采用不同的list来显示
2、怎么判分


最关键的问题其实就是,如何更好的操作datalist,让他随心所欲。希望大家讨论给我指点。共同学习
谢谢谢谢。来者有分
...全文
37 19 打赏 收藏 举报
写回复
19 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
  • 打赏
  • 举报
回复
zhuyaowei 2004-04-30
没这方面的经验,帮顶
  • 打赏
  • 举报
回复
softchao 2004-04-30
顶!
你是工作要做出这样的东西,还是单为了学习要做这样的东西?
要是为了工作我想能用其他的专业软件,做这样的课件就简单多了
要是为了学习我帮你顶一下!
  • 打赏
  • 举报
回复
bitsbird 2004-04-30
datareader能用,SqlDataAdapter也一样的,只要你会用
  • 打赏
  • 举报
回复
dger 2004-04-30
顶!
  • 打赏
  • 举报
回复
leoAAAA 2004-04-30
1.根据答案多少判断生成控件是什么

2. 问答题要考虑进来.

3. 选择题判分应该在提交试卷的时候就已经完成了,问答题单做

4. 注意时间控制
5. 同时在线的人数,如果人数过多,同时提交的时候,SqlServer有时候会溢出,一部分数据丢失,所以写程序的时候要考虑压力测试.
  • 打赏
  • 举报
回复
zhenkai 2004-04-30
大家看看我这么判分错在哪
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim dataitem As DataListItem
Dim answer As String = ""
For Each dataitem In DataList2.Items
If dsall.Tables("all").Rows(dataitem.ItemIndex).Item("class") = "单选" Then
Dim radiobutton As RadioButtonList
radiobutton = dataitem.FindControl("rd2")

If answer = "" Then
answer = index2abcd(radiobutton.SelectedIndex)
Else : answer += index2abcd(radiobutton.SelectedIndex)
End If
Else : Dim checkboxlist As CheckBoxList
checkboxlist = dataitem.FindControl("ch1")
Dim listitem As ListItem
For Each listitem In checkboxlist.Items
If answer = "" Then
answer = index2abcd(checkboxlist.SelectedIndex)
Else : answer += index2abcd(checkboxlist.SelectedIndex)
End If
Next
End If
Next
End Sub

一运行报错“/webchem”应用程序中的服务器错误。
--------------------------------------------------------------------------------

未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误:


行 59: Dim answer As String = ""
行 60: For Each dataitem In DataList2.Items
行 61: If dsall.Tables("all").Rows(dataitem.ItemIndex).Item("class") = "单选" Then
行 62: Dim radiobutton As RadioButtonList
行 63: radiobutton = dataitem.FindControl("rd2")

  • 打赏
  • 举报
回复
bitsbird 2004-04-30
^_^,我给你出注意,给我多点:)
  • 打赏
  • 举报
回复
zhenkai 2004-04-30
我知道怎么回事了
我的选项含有html代码<p></P>
现在搞定了
可是怎么进行评分大家帮我处处注意呀
  • 打赏
  • 举报
回复
zhenkai 2004-04-30
我试了很多次了
还是文字在复选框下面,郁闷阿
  • 打赏
  • 举报
回复
1979xt 2004-04-30
学习
  • 打赏
  • 举报
回复
vzxq 2004-04-30
Nod 帮你UP
  • 打赏
  • 举报
回复
zhenkai 2004-04-30
我看了思归大侠在http://expert.csdn.net/Expert/topic/2759/2759689.xml?temp=.4232599的大作,有所启发用下面的代码基本实现了试题选项的安插
Private Sub DataList2_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles DataList2.ItemDataBound
If e.Item.ItemType Then
If DataBinder.Eval(e.Item.DataItem, "class").ToString = "单选" Then
Dim rdlist As RadioButtonList
rdlist = e.Item.FindControl("rd2")
Dim array As New ArrayList
array.Add(DataBinder.Eval(e.Item.DataItem, "xx_a").ToString)
array.Add(DataBinder.Eval(e.Item.DataItem, "xx_b").ToString)
array.Add(DataBinder.Eval(e.Item.DataItem, "xx_c").ToString)
array.Add(DataBinder.Eval(e.Item.DataItem, "xx_d").ToString)
rdlist.DataSource = array
rdlist.DataBind()
Else : Dim rdlist As CheckBoxList
rdlist = e.Item.FindControl("ch1")
Dim array As New ArrayList
array.Add(DataBinder.Eval(e.Item.DataItem, "xx_a").ToString)
array.Add(DataBinder.Eval(e.Item.DataItem, "xx_b").ToString)
array.Add(DataBinder.Eval(e.Item.DataItem, "xx_c").ToString)
array.Add(DataBinder.Eval(e.Item.DataItem, "xx_d").ToString)
rdlist.DataSource = array
rdlist.DataBind()
End If
End If
End Sub
但还有问题,就是文字都在复选框的下面,怎么调整一下呀,还有前三个复选框在水平线上,第四个总比前三个低一些。
接着就是判分的问题了
  • 打赏
  • 举报
回复
zhaozhongju 2004-04-30
在DataList的ITEMTEMPLATE中分别放上checkboxlist和Radiolist,

根据"class"是单还是多,来用不同的List,

判分时,还是要从头到尾的查找DataList,根据不同的问题来查出其分值,
  • 打赏
  • 举报
回复
zhenkai 2004-04-30
我的试题库是这样的
题干(tigan),选项A(xx_1),选项B(xx_2),选项c(xx_3),选项d(xx_4),答案(answer),题型(class),分值(mark)
我不打算把考生的成绩记录,只是为了作作练习,当场判出来得分就行
  • 打赏
  • 举报
回复
leoAAAA 2004-04-30
如果答案是大于一个时,显示的控件为checkboxlist,如果为一个控件为Radiolist,动态添加空件,
还要注意保存用户的答案.
你的题库里应该包含正确答案,根据这个正确答案的数目可以判断
  • 打赏
  • 举报
回复
zhenkai 2004-04-30
谢谢大家
我就想怎么安插radiolist,或checkboxlist
然后根据答案判断,评分
大家帮我好好想想谢谢
  • 打赏
  • 举报
回复
babyjavalover 2004-04-30
有意思,想想。
  • 打赏
  • 举报
回复
wangsaokui 2004-04-30
好像阿球也在做个考试的,你可以问问他的心得。
  • 打赏
  • 举报
回复
相关推荐
发帖
.NET社区
加入

6.0w+

社区成员

.NET技术交流专区
社区管理员
  • ASP.NET
  • R小R
  • 喵叔哟
帖子事件
创建了帖子
2004-04-30 11:08
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。