问卷生成系统,如何按一个BUTTON按钮触发所有问卷里的子控件,将填写问卷的结果全部录入数据库中?(C#)

我是一位C#菜鸟,正在尝试做一个问卷系统。因为用户制作问卷时,问卷里设置多少个问题是自由的和问题类型也是自由选择(如单选题,多选题……)。当用户制作好问卷给其他用户填写时,我想在填写完毕后,只要按一个提交按钮就可以将填写的问卷结果写入数据库中!
但是不知道如何去实现那个提交按钮,将问题里的结果全部写入数据库!
希望高手们帮忙解决设计思路,万分感谢!
具体说是存取入XML里面!

问题很好,实用性很强, 我给你写写我的思路 大家共同进步
首先说说如何生成问卷系统
在数据库见一个表,假如表名叫questions_tb ,表里存放了全部题目,字段大致为 id,题目标题,题目内容,题目类型(单选或多选),用户类型(不同的问卷有不同的用户,默认为空),题目标记选择(0表示没选,1表示选择,生成问卷时用,这里全部是0)

出题目的人生成问卷页面
可以用gridview来显示questions_tb ,但是还要在gridview添加一列checkbox列,用于选择题目,这个是用于和字段题目标记选择来对应的。另外还要有一个textbox或者dropdownlist这个在gridview外的来确定用户类型
生成问卷按钮后台代码这样写
大致如下 foreach (GridViewRow gr in GridView1.Rows)
{
string 用户=DropDownList1.SelectedValue;//获取用户类型
int qid= Convert.ToInt32( GridView1.DataKeys[ gr.RowIndex]);//获取更新行id
if (((CheckBox)gr.FindControl("checkbox1")).Checked == true)
{ 执行更新函数,最好是三层的代码来编写,这里只要写上表现层函数就行了,更新sql字符串为"update questions_tb set 题目标记选择=1,用户类型=用户 where id=qid"}
}

}
这样就循环更新完数据库了,也就生成了问卷

用户填写问卷页面
这个要略微复杂一点,假如问卷有单选和多选两种题型,建议用两个gridview来显示,根据题目类型,题目标记选择,用户类型来执行select语句,这个不难吧,然后在单选题的gridview里加一列RadioButtonList标记A,B,C多选题的gridview里加一列CheckBoxList标记A,B,C,这样用户就可以答题了,问卷提交, 提交到数据库的答案表中,字段可以id,用户名(考试人),单选题所有答案,多选题答案,假如这四个个字段,
方法还是用上面的方法循环遍历gridview,依次累加RadioButtonList的SelectedValue;譬如A,A,B,C,C,A,C依次累加CheckBoxList的SelectedValue不过循环遍历gridview的同时里面也得对CheckBoxList的listitem做循环,因为他是多选的,累加后结果譬如AC,ABC,B,BC...
字符串累加函数只要做个技巧让他们中间个开个逗号就可以了,这个也不难吧。提交的时候insert into 答案(用户名,单选题所有答案,多选题答案)values(,,,)这样基本上就完成了,采用这种建表的思想可以节省数据库资源,假如几万人参与调查,只能将他们的答案写于一个表中。
今天降温天很冷 我来写思路 手冻得通红 一定可以实现你所说的功能的,因为我曾做个类似的项目。
希望能得到你的分 呵呵
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-02-10
可以通过循环页面上的控件,打比方是写在textbox里面 就可以通过循环页面控件,然后判断是否是textbox 如果是则取值
第2个回答  2010-02-10
就像百度知道这个页面,你的问题在Panel_A中,所有回复在Panel_B中,此时我实在回复你的问题,我正在Panel_C中写东西.
这3个panel就可以理解成"问题类型"(单选,多选,填空....)
(感觉你不懂数据库,确切的说是数据库设计)
方法一:用户每填写完毕一道题,就自动记录结果.
方法二:循环访问每个Panel中子控件,然后读取"用户填写的结果",记录到数据库.
加载页面时候,要从数据库读取试题,然后根据类型添加到不同的Panel中,如:单选题,放在RadioPanel中,问题的题目用label显示,然后用RadioButton显示选项.
foreach(var control in RadioPanel.Children)
RadioButton radio = control as RadioButton;
//...

第二个方法是你希望的,可是这个需要的数据库设计,
第3个回答  2010-02-10
不用全部写入数据库,因为你已经知道答案.
只需要把答案用固定的比如x或Y来代表答案写入数据库.
当然在读出的时候当你读到X的时候你在显示的时候转化为答案就行了.
第4个回答  2010-02-10
功能到好实现,但是不知道用户制作问卷是不是保存模板了?我的意思是用户制作出个问卷,改问卷的名称以及内容地址保存在数据库没?只要把问卷里所有的问题类型的控件的name设置成相同的,在后台代码中Request就可以了,不管用户问卷设置多少个问题都可以全部取到,然后将这些数据组合在一起,读取的时候先读取问卷模板,然后在分解数据,然后在顺序的填充就可以了!
第5个回答  2010-02-10
写入xml文件如果用来做数据统计是不合适的,用来做试卷倒是非常合适,比如有如下一个试卷:
<试卷 title="你吃了吗?" endDate="" author="" guid="">
<ques title="品种" score="5" type="多项" guid="">
<item value="1">大米</item>
<item value="2">面粉</item>
<item value="3">米田共</item>
</ques>

<ques title="性别" score="5" type="单选" guid="">
<item value="1">男</item>
<item value="2">女</item>
<item value="3">未知</item>
</ques>

<ques title="年龄" score="5" type="单选" guid="">
<item value="1">1-20</item>
<item value="3">20-40</item>
<item value="4">40-60</item>
<item value="5">60-100</item>
<item value="6">100-?</item>
<item value="7">胚胎</item>
<item value="8">未知</item>
</ques>

<ques title="你对房价和CPI如何看待?" score="20" type="问答" guid="" />

<ques title="中国最大的房地产是谁?" score="60" type="单选" guid="">
<item>地方政府</item>
</ques>

</试卷>
这就是一个试卷了,至于要如何解析成你要的格式,这个属于技术问题,这里只讨论思路。
数据该如何保存呢
1.数据库字段,用最简单的方法
主键, 试卷guid, 问题guid, 问题value, score, 创建用户, 创建时间, 创建IP
2.页面值的收集问题
因为试卷页面是自动生成的,所以你可以随意了。
<input id="品种_1" name="品种" guid="" value="1" type="checkbox">

<input id="性别_1" name="性别" guid="" type="radio">

你对房价和CPI如何看待?<input id="你对房价和CPI如何看待?" guid="" type="text">

checkbox可以得到多个值 1,2,3,5
使用分开插入 "1,2,3,5".Split(',')

查询方法 where 试卷guid=? and 问题guid=? and 问题value=?

在页面用jQuery可以实现你需要的所有功能

点击按钮 ajax.post(url,data,callback);

public enum QesType{ 多选, 单选, 问答 };

public interface QesInsert{

bool Insert(Guid 试卷guid);//问题上传

}

public abstract class 问题基类 : QesInsert {//问题对象

public string Title{get;set;}//问题标题

public QesType Type{get;set;}//问题类型

public string Value{get;set;}//问题值

public int Score{get;set;}//问题分数

public Guid Guid{get;set;}//问题主键

public abstract bool Insert(Guid 试卷guid);//实现接口

}

public class 试卷{

public string Title{get;set;}

public string Author{get;set;}

public DateTime EndDate{get;set;}

public Guid Guid{get;set;}

public IList<问题基类> Question{get;set;}

public 试卷(){
Question = new List<问题>();
}

}

public class 多选问题 : 问题基类{

public 多选问题(){

this.Type = QesType.多选;

}

//具体实现接口
public bool Insert(Guid 试卷guid){
string[] value = this.Value.Split(',');
foreach(string i in value){
Sql.Insert()//执行数据库插入操作。
}
}

}

问卷生成系统,如何按一个BUTTON按钮触发所有问卷里的子控件,将填写问卷...
首先说说如何生成问卷系统 在数据库见一个表,假如表名叫questions_tb ,表里存放了全部题目,字段大致为 id,题目标题,题目内容,题目类型(单选或多选),用户类型(不同的问卷有不同的用户,默认为空),题目标记选择(0表示没选,1表示选择,生成问卷时用,这里全部是0)出题目的人生成问卷页面 可...

调查问卷统计: 如何在excel中设置一个按键,按键每点击一次,对应单元...
找到工具栏的 控制工具箱 选择设计模式 选择 commandbutton 放在想放置的位置 双击按钮 在中间添上下面代码:比如相应的单元格是A3 range("A3").value = range("A3").value+1

QRadioButton分组且无边框的简单实现
在进行QT+VS2008项目开发时,面对问卷调查形式的综合测评表设计,原计划采用下拉框以包含所有选项,但考虑后发现此方案不够直观,用户需进行额外操作。随后,选择使用单选按钮(QRadioButton)进行设计。在实现过程中,初始界面呈现出一行行小圆孔按钮,直观效果良好,但在编译与运行时发现,整个界面上只有一...

如何通过Python实现自动填写调查问卷
\/\/选中每题的第一个 (".matrix").each(function(){ (this).find("a").get(0).click();});\/\/提交 ("#next_button").click();

PHP问卷系统如何做到防止用户有未填写的题目就提交问卷?
说实在的,这个判断有点复杂,你说的这个肯定先用js来判断,然后后台也必须再判断这次,以防止js被人破坏。后台判断就不写了,写个JS给你吧。以下代码已经过测试。<form action="" id="test" method="post"><input type="radio" name="test[1]" value="1" \/><br \/><input type="radio" ...

C#做windows Form的调查问卷,如何实现一页中有多个题目?
其实 还是可以用 label button 来实现的啊。 数据有多少 。你就在代码里面 new 多少个label 和button 然后设置 label button 的位置 。 left right top bottom 这样的值。 还有他们size。 就行了 不过 这个需要慢慢调 才能设置好啊。 我现在唯一想到的就是这个方法了 ...

“问卷调查”如果按下一个键,一个不相关的人就会死去,但你会获得五万...
不会,就像如果你是那个不相关的人的话,你一定不会按键!

如何用excel 点一下,计一个数
1 问卷1 b 2 问卷2 a 3 问卷3 c ...400 问卷400 选a的人数=countif(C2:C401,"a")选b的人数=countif(D2:D401,"b")选c的人数=countif(E2:E401,"c")选d的人数=countif(F2:F401,"d")

用javascript做一个问卷答案形式的问题,判断有没有选择问题(是radio...
break;} } if(flg ==0){ alert("请选择数据");} } <\/script> <body> <input type="radio" name="sex" value="man">Man<\/input> <input type="radio" name="sex" value="femail">Femail<\/input> <input type="button" onclick="test()" value="submit"\/> <\/body> <\/html> ...

如何用excel vba操控IE在按下网页上的按钮?
点f12,找你想要的那个。当然你也可以通过更改forms(x)去一个个试,总能找到你要的那个。当然你也可以去找那个按钮的值,用按钮点击的方法。ie.document.getElementById(按钮的值).click ActiveSheet.WebBrowser1.Document.form1.Button1.Click 页面.webbrowser控件.网页.表单名.按钮名.点击 ...

相似回答