datalist的itemtemplte中绑定了RadioButtonList
现在可以给RadioButtonList赋值ABCD四个选项当用户选择当这选择题答案时...用户要离开这个页面..那么我就要保存用户的答案....我如何将这RadioButtonList 的答案对应保存起来??我根据什么区别RadioButtonList是哪道题目的????
现在可以给RadioButtonList赋值ABCD四个选项当用户选择当这选择题答案时...用户要离开这个页面..那么我就要保存用户的答案....我如何将这RadioButtonList 的答案对应保存起来??我根据什么区别RadioButtonList是哪道题目的????
viewstate.add(string keyName, object value);
A.答案A B答案B c 答案 d出答案
我就想保存这个...要怎么去做??能说得详细点吗???
学生点击保存试卷按钮。在浏览器端先收集学生表单上的答案。然后向服务器发送异步的Post请求保存答案。服务器收到请求后从学生的表单中收集并保存答案。然后返回给浏览器保存信息。浏览器接到异步请求返回信息后提示学生保存结果。
保存的JS函数这样写function savePaperButton_click(sender,e)
{
var wRequest = new Sys.Net.WebRequest();
wRequest.set_url("SaveAnswer.ashx");
wRequest.set_httpVerb("POST");
wRequest.add_completed(onSaveAnswerCompleted);
var requestBody = getRequestBody($get("form1")) ;
wRequest.set_body(requestBody);
wRequest.get_headers()["Content-Length"] = requestBody.length;
wRequest.invoke();
$get("SaveProgress").innerHTML="<img src='../Images/indicator.gif' />正在保存..!" ;
}该函数启动一个对SaveAnswer.ashx的异步请求。并通过getRequestBody方法获取Post内容字符串。并注册了请求返回后的回调函数onSaveAnswerCompleted用于提示用户保存成功。 收集学生答案用到的函数function getRequestBody(oForm)
{
var aParams=new Array();
for(var i=0;i<oForm.elements.length;i++)
{
var element=oForm.elements[i];
if(element.type=="radio" || element.type=="checkbox")
{
if(element.checked==false)
continue;
}
var sParam=encodeURIComponent(element.name);
sParam+="=";
sParam+=encodeURIComponent(element.value);
aParams.push(sParam);
}
return aParams.join("&");
}保存答案的PaperHelper类的SaveAnswer方法public static void SaveAnswer(HttpContext context)
{
QuestionService service = new QuestionService();
foreach (String key in context.Request.Form.AllKeys)
{
long questionId = 0;
if (long.TryParse(key, out questionId))
{
service.GetById(questionId).StudentAnswer = context.Request.Form[key];
}
}
}
下面给出SaveAnswer.ashx的实现。
public class SaveAnswer : IHttpHandler {
public void ProcessRequest (HttpContext context) {
try
{
PaperHelper.SaveAnswer(context);
context.Response.Write("保存成功!<br/>时间:"+DateTime.Now);
}
catch (Exception e)
{
context.Response.Write(e);
}
}
}
浏览器的处理服务端端返回信息的onSaveAnswerCompleted函数。
[code=JScript]
function onSaveAnswerCompleted(executor, eventArgs)
{
if(executor.get_responseAvailable())
{
$get("SaveProgress").innerHTML=executor.get_responseData();
}
}
[/code]
学生点击保存试卷按钮。在浏览器端先收集学生表单上的答案。然后向服务器发送异步的Post请求保存答案。服务器收到请求后从学生的表单中收集并保存答案。然后返回给浏览器保存信息。浏览器接到异步请求返回信息后提示学生保存结果。
保存的JS函数这样写function savePaperButton_click(sender,e)
{
var wRequest = new Sys.Net.WebRequest();
wRequest.set_url("SaveAnswer.ashx");
wRequest.set_httpVerb("POST");
wRequest.add_completed(onSaveAnswerCompleted);
var requestBody = getRequestBody($get("form1")) ;
wRequest.set_body(requestBody);
wRequest.get_headers()["Content-Length"] = requestBody.length;
wRequest.invoke();
$get("SaveProgress").innerHTML="<img src='../Images/indicator.gif' />正在保存..!" ;
}该函数启动一个对SaveAnswer.ashx的异步请求。并通过getRequestBody方法获取Post内容字符串。并注册了请求返回后的回调函数onSaveAnswerCompleted用于提示用户保存成功。 收集学生答案用到的函数function getRequestBody(oForm)
{
var aParams=new Array();
for(var i=0;i<oForm.elements.length;i++)
{
var element=oForm.elements[i];
if(element.type=="radio" || element.type=="checkbox")
{
if(element.checked==false)
continue;
}
var sParam=encodeURIComponent(element.name);
sParam+="=";
sParam+=encodeURIComponent(element.value);
aParams.push(sParam);
}
return aParams.join("&");
}保存答案的PaperHelper类的SaveAnswer方法public static void SaveAnswer(HttpContext context)
{
QuestionService service = new QuestionService();
foreach (String key in context.Request.Form.AllKeys)
{
long questionId = 0;
if (long.TryParse(key, out questionId))
{
service.GetById(questionId).StudentAnswer = context.Request.Form[key];
}
}
}
下面给出SaveAnswer.ashx的实现。
public class SaveAnswer : IHttpHandler {
public void ProcessRequest (HttpContext context) {
try
{
PaperHelper.SaveAnswer(context);
context.Response.Write("保存成功!<br/>时间:"+DateTime.Now);
}
catch (Exception e)
{
context.Response.Write(e);
}
}
}
浏览器的处理服务端端返回信息的onSaveAnswerCompleted函数。
[code=JScript]
function onSaveAnswerCompleted(executor, eventArgs)
{
if(executor.get_responseAvailable())
{
$get("SaveProgress").innerHTML=executor.get_responseData();
}
}
[/code]
viewstate.add("anser1", "答案A");
viewstate.add("anser2", "答案B");
viewstate.add("anser3", "答案C");
我们说的只是个思路,如果觉得可行就用,如果自己目前有方法可以解决的话就自己先用自己的方法看看能不能解决。要不会受干扰。
1.获得题号
2.获得选择的答案
3.构造sql语句,例如string sql = "insert into tablename(题号,答案) values(1,'A');insert into tablename(题号,答案) values(2,'A');"
用循环就可以构造了.
就这句话我不会....因为没有保存行号!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!