我写了以下代码不起作用,不知道为什么
 public partial class _Default : System.Web.UI.Page
  {
  protected void Page_Load(object sender, EventArgs e)
  {
  HttpPostedFile p;
  if (Request.QueryString["type"] == "true")
  {
  ViewState["a"] = '5';
  }
  if (!Page.IsPostBack)
  {
  System.Data.DataSet ds = new System.Data.DataSet();
  System.Data.DataTable dataTable1 = new System.Data.DataTable("BlogUser");
  System.Data.DataRow dr;
  dataTable1.Columns.Add(new System.Data.DataColumn("UserId", typeof(System.Int32)));
  dataTable1.Columns.Add(new System.Data.DataColumn("UserName", typeof(System.String)));  for (int i = 0; i < 8; i++)
  {
  dr = dataTable1.NewRow();
  dr[0] = i;
  dr[1] = "【孟子E章】" + i.ToString();
  dataTable1.Rows.Add(dr);
  }
  ListView1.DataSource = dataTable1;
  ListView1.DataBind();   
  }
  }  protected void Button1_Click(object sender, EventArgs e)
  {
  String UserId = "";
  for (int i = 0; i < ListView1.Items.Count; i++)
  {
  CheckBox chktemp = ListView1.Items[i].FindControl("CheckBox1") as CheckBox;
  if (chktemp != null && chktemp.Checked == true)
  {
  UserId += ListView1.DataKeys[i].Value + ",";  }
  if (i == 4)
  {
  ViewState["a"] = '1';
  Response.Write("<script>location.href='Default.aspx?type='+confirm('该学生此学科成绩已存在,是否覆盖此成绩?');</script");
  if (Request.QueryString["type"] == "true")
  {
  Response.Write(ViewState["a"].ToString());
  }
  }
  }
  Page.ClientScript.RegisterStartupScript(Page.GetType(), "x", "alert('有选中 id=" + UserId + "')", true);
  }
      }

解决方案 »

  1.   

     Response.Write("<script>if(confirm('该学生此学科成绩已存在,是否覆盖此成绩?')location.href='Default.aspx';</script");
      

  2.   

    源代码是
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <asp:ListView ID="ListView1" runat="server" DataKeyNames="UserId">
            <LayoutTemplate>
                <table>
                    <thead>
                        <tr>
                            <th>选择</th>
                            <th>工号</th>
                            <th>姓名</th>
                        </tr>
                    </thead>
                    <tbody>
                        <asp:PlaceHolder runat="server" ID="itemPlaceholder" />
                    </tbody>
                </table>
            </LayoutTemplate>
            <ItemTemplate>
                <tr>
                    <td>
                        <asp:CheckBox ID="CheckBox1" runat="server" />
                    </td>
                    <td>
                        <%# Eval("UserId")%>
                    </td>
                    <td>
                        <%# Eval("UserName")%>
                    </td>
                </tr>
            </ItemTemplate>
        </asp:ListView>
        <asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
        </form>
    </body>
    </html>
      

  3.   

    不觉得漏了个括号么</script
      

  4.   

    少了个括号
    Response.Write("<script>if(confirm('该学生此学科成绩已存在,是否覆盖此成绩?'))location.href='Default.aspx';</script>");
      

  5.   

    你要转变思想,不要以winform程序的思想来开发Web程序。服务器端执行完毕才能发送给客户端,客户端才能重新对话框。用户确定之后,再次提交到服务器。服务器端的代码是不能中断的。
      

  6.   

    是起作用了,但是我如何获得用户选择的结果呢, 比如说用户选择的是 "是", 我如何在asp.net程序中获取到,而根据用户的选择,做出相应的对策呢?
      

  7.   

    如同我在winform 中如下代码:
    DialogResult dgr = MessageBox.Show(this, "你确定要删除吗", "删除警告", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
      if (dgr != DialogResult.Yes)
      return;
      

  8.   

    Response.Write("<script>location.href='Default.aspx?userid=" +  + "&type='+confirm('该学生此学科成绩已存在,是否覆盖此成绩?');</script");
    Response.Write("<script>if(confirm('该学生此学科成绩已存在,是否覆盖此成绩?')location.href='Default.aspx?userid=" + UserId + "';后台querystring["userid"]处理这个用户的东西
      

  9.   

    好的做法是
    for (int i = 0; i < ListView1.Items.Count; i++)
      {
      CheckBox chktemp = ListView1.Items[i].FindControl("CheckBox1") as CheckBox;
      if (chktemp != null && chktemp.Checked == true)
      {
      UserId += ListView1.DataKeys[i].Value + ",";  }得到所有要处理的学生id,然后返回给客户端,客户端使用ajax对每个学生进行处理
      

  10.   

    或者把例子发到我的QQ邮箱 [email protected]
      

  11.   


    function confrim()
    {
    if (confirm("是否继续执行?")) {
        document.getElementById("hidFalg").value = "1";
        // 通过__doPostBack调用后台方法
        __doPostBack('ctl00$main$btnFunction', '');
    }
    else
    {
        document.getElementById("hidFalg").value = "0";
    }
    |
    // 需要在画面上加个隐藏域hidFalg
    If "0".Equals(hdnTouroku.Value) = True Then
                ' 确认之前的处理写在这里
                ' 确认消息
                ScriptManager.RegisterClientScriptBlock(Me, Me.GetType(), DateTime.Now.ToString().Replace(":", " "), _
                   "confirm();", True)            'hdnTouroku.Value = "1"
            ElseIf "1".Equals(hdnTouroku.Value) = True Then
    ' 确认之后要继续的处理写在这里
    end if这是个大概思路,就是通过隐藏域来表示操作的状态,并通过dopostback来调用js方法
      

  12.   

    不是少了个>吗
    Response.Write("<script>location.href='Default.aspx?type='+confirm('该学生此学科成绩已存在,是否覆盖此成绩?');</script>");
      

  13.   

    问题是 后台代码调用前台js返回值呢 ,前台js返回一个 "是" 与 "否" 值, 在后台如何捕获这个信息呢
      

  14.   

    一个完整的例子
    aspx<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
      <title></title>
        <script src="jquery-1.8.0.min.js" type="text/javascript"></script>
        <script type="text/javascript">
            var uid = [],usercount;
            function GetUser() {
                uid = [];
                var userIds = document.getElementsByName("UserId");
                for (i = 0; i < userIds.length; i++) {
                    if (userIds[i].checked) {
                        uid.push(userIds[i].value);
                    }
                }
                if (uid.length == 0) {
                    alert("请选择用户");
                    return;
                }
                usercount = 0;
                ProcessUserData();
            }        function ProcessUserData() {
                if (usercount >= uid.length) {
                    alert("所选用户处理完毕!");
                    $("#Debug").html("所选用户处理完毕!");
                    return;
                }
                $("#Debug").html("正在处理 id = " + uid[usercount]);
                $.ajax({
                    url: '<%=Request.FilePath %>?UserId=' + uid[usercount] + "&step=1&t=" + (new Date()).valueOf(),
                    dataType: "text",
                    success: function (data) {
                        if (data.indexOf("用户成绩已经存在") > -1) {
                            var ret = window.confirm("id=" + uid[usercount] + " 的用户成绩已经存在,你要否要覆盖??");
                            if (ret) {
                                //用户选择了“是”,就进行覆盖操作
                                $.ajax({
                                    url: '<%=Request.FilePath %>?UserId=' + uid[usercount] + "&step=2&t=" + (new Date()).valueOf(),
                                    dataType: "text",
                                    success: function (msg) {
                                        alert(msg);
                                        usercount++;
                                        ProcessUserData()
                                    }
                                });
                            }
                            else {
                                usercount++;
                                ProcessUserData()
                            }
                        }
                        else {
                            usercount++;
                            ProcessUserData()
                        }
                    }
                });
            }
        </script>
    </head>
    <body>
      <form id="form1" runat="server">
      <asp:ListView ID="ListView1" runat="server">
      <LayoutTemplate>
      <table>
      <thead>
      <tr>
      <th>选择</th>
      <th>工号</th>
      <th>姓名</th>
      </tr>
      </thead>
      <tbody>
      <asp:PlaceHolder runat="server" ID="itemPlaceholder" />
      </tbody>
      </table>
      </LayoutTemplate>
      <ItemTemplate>
      <tr>
      <td>
      <input name="UserId" type="checkbox" value='<%# Eval("UserId")%>' />
      </td>
      <td>
      <%# Eval("UserId")%>
      </td>
      <td>
      <%# Eval("UserName")%>
      </td>
      </tr>
      </ItemTemplate>
      </asp:ListView>
      <asp:Button ID="Button1" runat="server" Text="测试处理" OnClientClick="GetUser();return false;" />
      <div id="Debug"></div>
      </form>
    </body>
    </html>C#代码
    protected void Page_Load(object sender, EventArgs e)
    {
        String step = Request.QueryString["step"];
        if (String.IsNullOrEmpty(step))
        {
            //首次进来,执行绑定
            if (!Page.IsPostBack)
            {
                System.Data.DataSet ds = new System.Data.DataSet();
                System.Data.DataTable dataTable1 = new System.Data.DataTable("BlogUser");
                System.Data.DataRow dr;
                dataTable1.Columns.Add(new System.Data.DataColumn("UserId", typeof(System.Int32)));
                dataTable1.Columns.Add(new System.Data.DataColumn("UserName", typeof(System.String)));            for (int i = 0; i < 8; i++)
                {
                    dr = dataTable1.Rows.Add(new Object[] { i, "【孟子E章】" + i.ToString() });
                }
                ListView1.DataSource = dataTable1;
                ListView1.DataBind();
            }
        }
        else
        {
            Response.ContentType = "text/plain";
            Response.Expires = -100;
            String UserId = Request.QueryString["UserId"];
            if (step.Equals("1"))
            {
                //判断用户成绩是否存在,这里假定id=2,3,6的用户存在,实际应用是查数据库判断
                if (UserId.Equals("2") || UserId.Equals("3") || UserId.Equals("6"))
                {
                    Response.ClearContent();
                    Response.Write("用户成绩已经存在");
                    Response.End();            }
                else
                {
                    Response.ClearContent();
                    Response.Write("");
                    Response.End();
                }
                return;
            }
            else if (step.Equals("2"))
            {
                //进行覆盖操作
                Response.ClearContent();
                Response.Write("用户" + UserId + "已经被覆盖。");
                Response.End();
                return;
            }
        }
    }
      

  15.   

    以上代码直接复制粘贴测试jquery-1.8.0.min.js文件下载
    http://jquery.com/
      

  16.   

    上面是完整的思路,具体的事情还要自己处理,如错误处理,安全性等。如果提交更多数据,可以使用post
      

  17.   

    报错了,错误提示如下:
    警告 1 更新 JScript IntelliSense 时出错: F:\接受教材\asp.net\listview经典例子\WebApplication1\jquery-1.8.0.min.js: 对象不支持此属性或方法 @ 1:19272 F:\接受教材\asp.net\listview经典例子\WebApplication1\Default.aspx 1 1 WebApplication1
    如何解决呢
      

  18.   

    IntelliSense 出错
    不是代码出错
      

  19.   

    我觉得注册脚本更好一些  Page.ClientScript.RegisterStartupScript(this.GetType(), "MyScript", "if(confirm('该学生此学科成绩已存在,是否覆盖此成绩?');location.replace('Default.aspx');", true);
      

  20.   

    警告 1 更新 JScript IntelliSense 时出错: F:\接受教材\asp.net\listview经典例子\WebApplication1\jquery-1.8.0.min.js: 对象不支持此属性或方法 @ 1:19272 F:\接受教材\asp.net\listview经典例子\WebApplication1\Default.aspx 1 1 WebApplication1我试了很多办法,还是更新出错,真晕
      

  21.   

    新建网站也是报错,错误如下:警告 1 更新 JScript IntelliSense 时出错: F:\测试\wesite\jquery-1.8.0.min.js: 对象不支持此属性或方法 @ 1:19272 F:\测试\wesite\Default.aspx 1 1 F:\测试\wesite\
      

  22.   

    警告 1 更新 JScript IntelliSense 时出错: F:\测试\wesite\jquery-1.8.0.min.js: 对象不支持此属性或方法这个警告只是在你写代码的时候,智能提示不显示,不影响你代码的运行的另外,现在都VS2012了,使用VS2010没有这样的问题
      

  23.   

    哦,也就是非常要升级到VS 2012 才可以用吗? 有没有在VS 2008 下也可以用的代码呢
      

  24.   

    看看这样可以不?Response.Write("<script>location.href='Default.aspx?type='+if(confirm('该学生此学科成绩已存在,是否覆盖此成绩?'))retrun 'trun';</script");
      

  25.   

    只跳出来一个测试处理,没有listView数据,