datalist的itemtemplte中绑定了RadioButtonList
现在可以给RadioButtonList赋值ABCD四个选项当用户选择当这选择题答案时...用户要离开这个页面..那么我就要保存用户的答案....我如何将这RadioButtonList  的答案对应保存起来??我根据什么区别RadioButtonList是哪道题目的????

解决方案 »

  1.   

    用viewstate保存
    viewstate.add(string keyName, object value); 
      

  2.   

    还有就是通过使用xml在用户本地,最后交卷的时候进行上传并删除文件! 
      

  3.   

    我现在做的就是本地使用xml我现在就是把选择的答案保存在xml中用viewstate????
      

  4.   

    viewstate和session,cookie一样都是用来保存数据的。但是后两者容易丢值。
      

  5.   

    1.题目1
    A.答案A   B答案B   c 答案   d出答案
    我就想保存这个...要怎么去做??能说得详细点吗???
      

  6.   

    还有一种方法我都贴给你,你具体研究一下。
    学生点击保存试卷按钮。在浏览器端先收集学生表单上的答案。然后向服务器发送异步的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]
      

  7.   

    还有一种方法我都贴给你,你具体研究一下。
    学生点击保存试卷按钮。在浏览器端先收集学生表单上的答案。然后向服务器发送异步的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]
      

  8.   

    单选的话就取他的value然后viewstate["答案"]=他的value.多选的话就遍历。你的RadioButtonList再datalist里就用findcontrol先找
      

  9.   

    添加JS事件,通过JS赋值给变量或COOKIE
      

  10.   

    单选的话就取他的value然后viewstate["答案"]=他的value.多选的话就遍历。你的RadioButtonList再datalist里就用findcontrol先找
      

  11.   

    没想象中的难呀,你现在那里不明白么思路也给你了。比如:你选择了A答案,你的RadioButtonList再datalist里就用findcontrol先找到他。然后取值保存到viewstate里。如果多选就这样
    viewstate.add("anser1", "答案A"); 
    viewstate.add("anser2", "答案B"); 
    viewstate.add("anser3", "答案C"); 
    我们说的只是个思路,如果觉得可行就用,如果自己目前有方法可以解决的话就自己先用自己的方法看看能不能解决。要不会受干扰。
      

  12.   

    用户提交的时候直接遍历datalist找到每行的RadioButtonList 和事先保存在该行的行号.执行如下操作
    1.获得题号
    2.获得选择的答案
    3.构造sql语句,例如string sql = "insert into tablename(题号,答案) values(1,'A');insert into tablename(题号,答案) values(2,'A');"
    用循环就可以构造了.
      

  13.   

    用户提交的时候直接遍历datalist找到每行的RadioButtonList 和事先保存在该行的行号你知道吗??
    就这句话我不会....因为没有保存行号!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      

  14.   

    datalist的遍历就不用在说了吧,用findcontrol可以找到每行的控件了.如果这个遍历不会到网上找吧.到处都是终于反映过来了,都说了"事先保存在该行的行号"