StringBuilder strHtml = new StringBuilder();
   strHtml.Append("<a onclick=\"GetPId(dt.rows[i][\"productID\"].ToString())\"><img src=\"../images/buttons_coll.jpg\" /></a>");
后台怎样动态给A标签添加onclick事件?我是这样想的:利用AJAX前台调用后台,然后把前台的方法传到onclick事件中,可是A标签点击事件没效果
后台方法:  
        string str;
        /// <summary>
        /// 收藏产品方法
        /// </summary>
        [AjaxPro.AjaxMethod]
        public string GetSave(string pid)
        {
           
            Poucan.BLL.CustomerFavorites bll = new Poucan.BLL.CustomerFavorites();
            Poucan.Model.CustomerFavorites model = new Poucan.Model.CustomerFavorites();            if (PageProduct.getCustomerName() != null)
            {                if (bll.Exists(int.Parse(pid), PageProduct.getCustomerName()) == false)
                {
                    model.Sorts = "1";
                    model.pid = int.Parse(pid);
                    model.Customer = PageProduct.getCustomerName();//用户
                    bll.Add(model); 
                }
                else
                {
                   
                }
            }
            return str;
        }
前台方法:      function GetPId(pid) {
          alert("aaaaaaaaaaaaaaaa");
          var Save = TextVerify.GetSave(document.getElementById("pid").value).value;
          if (Save != "") 
          {
              if (Save > 0) 
              {
                  alert("收藏成功!");
              }
              else {
                  alert("收藏失败!");
              }
          }
          else {
              alert("不能收藏,请登录",window.location="/User/login.aspx");
          }
      }

解决方案 »

  1.   

    StringBuilder strHtml = new StringBuilder();
      strHtml.Append("<a onclick=\"GetPId(dt.rows[i][\"productID\"].ToString())\"><img src=\"../images/buttons_coll.jpg\" /></a>");后台这样不就给a添加了onclick事件了吗?
      

  2.   

    var Save = TextVerify.GetSave(document.getElementById("pid").value).value;
    ===============
    var Save = TextVerify.GetSave(document.getElementById(pid).value).value;
      

  3.   

    strHtml.Append("<a onclick=\"GetPId(dt.rows[i][\"productID\"].ToString())\"><img src=\"../images/buttons_coll.jpg\" /></a>");
    =======
    strHtml.Append("<a onclick=\"GetPId("+dt.rows[i]["productID"].ToString()+")\"><img src=\"../images/buttons_coll.jpg\" /></a>");
      

  4.   

    总觉得有占别接。这样想也可以如果这样想。。最好添加click事件也放前台去。。后台输出时给A标签加个name属性比如:aaa前台:   $(function(){
          $("a[name='aaa']").click(){
              //这里处理
          }
       })
      

  5.   

    查看页面前台源码
    看a标签的onclick事件解析后是什么样子的
      

  6.   

    <a onclick="GetPId(dt.rows[i]["productID"].ToString())"><img src="../images/buttons_coll.jpg" /></a>这是解析后的
      

  7.   

    老朋友   鸭绒看看     先是顶下    顺便接分 后台拼接的html代码到了前台 有可能不能用 
    你把JS代码放在from里面试一试你现在放在head里面吧    
      

  8.   

    按照4L的写法修改代码
    并单步调试
    查看dt.rows[i]["productID"].ToString()是否有值
      

  9.   

     function GetPId(pid) {
            alert("aaaaaaaaaaaaaaaa");
            var Save = TextVerify.GetSave(document.getElementById(pid).value).value;
            alert("bbbbbbbbbbbbbbbbbbb");
            if (Save != "") {
                if (Save > 0) {
                    alert("收藏成功!");
                }
                else {
                    alert("收藏失败!");
                }
            }
            else {
                alert("不能收藏,请登录", window.location = "/User/login.aspx");
            }
        }
    能执行到  alert("aaaaaaaaaaaaaaaa");
    后面不执行了,应该是后台方法没有调用到
      

  10.   

    前台做了一下更改:
      function GetPId(pid) {
    //        alert("aaaaaaaaaaaaaaaa");
            var Save = TextVerify.GetSave(pid).value;
    //        alert("bbbbbbbbbbbbbbbbbbb");
            if (Save !="") {
                if (Save=="1") {
                    alert("收藏成功!");
                }
                else {
                    alert("收藏失败!");
                }
            }
            else {
                alert("不能收藏,请登录", window.location = "/User/login.aspx");
            }
        }
    可以调用方法了,但是老是收藏失败!
      

  11.   

    问题已经解决了,var Save = TextVerify.GetSave(pid).value;把value去掉就可以了
      

  12.   

    后台:  
     /// <summary>
            /// 收藏产品方法
            /// </summary>
            [AjaxPro.AjaxMethod]
            public string GetSave(string pid)
            {
                string str=null;            Poucan.BLL.CustomerFavorites bll = new Poucan.BLL.CustomerFavorites();
                Poucan.Model.CustomerFavorites model = new Poucan.Model.CustomerFavorites();            if (PageProduct.getCustomerName() != null)
                {                if (bll.Exists(int.Parse(pid), PageProduct.getCustomerName()) == false)
                    {
                        model.Sorts = "1";
                        model.pid = int.Parse(pid);
                        model.Customer = PageProduct.getCustomerName();//用户
                        int ID = bll.Add(model);
                        str = ID.ToString();
                        str = "1";
                    }
                    else
                    {
                        str = "2";  
                    }
                }
                else
                {
                    str = "3";
                }
              return str;  
            }前台:
      function GetPId(pid) {
            var SaveProduct = TextVerify.GetSave(pid,callback);
        }      //回调函数
        function callback(aa) 
        {        if (aa.value == "1") {
                alert("收藏成功!");        }
            else if (aa.value == "2") {
                alert("商品已存在,不能重复收藏!!");        }
            else if (aa.value == "3") {
            alert("不能收藏,请登录.........", window.location = "/User/login.aspx");
            }
            
          }
      这是我完整的代码