【问题标题】:UpdatePanel Breaks JQuery Script on datalistUpdatePanel 破坏数据列表上的 JQuery 脚本
【发布时间】:2014-08-07 06:57:32
【问题描述】:

我有一个更新面板,在更新面板中我有一个数据列表。

在数据列表上我有多个 div

<div class="prod_details_tab">
    <div class="prod_details_sell">
        <a href="Handler.ashx?action=addToBasket&productID=4" onclick="return false;">
            <img src="images/cart.gif" alt='<%#String.Format("{0}", Eval("k_name1")) %>'
                width="16" height="16" id='<%#String.Format("{0}", Eval("k_name1")) %>'
                class="left_IB" />
        </a>
    </div>
</div>

我写了一个 jQuery 代码,当一个人点击 cart.gif pic 时运行 jQuery

 $(".prod_details_sell a img").click(function () {
        //some code is here
});

在 datalist 的第一页 jquery 运行良好,一切正常。

但是在第二页上,当我点击cart.gif pic 时,jQuery 没有运行。

请帮我解决它

谢谢

编辑:我在这里写下一个按钮和上一个按钮点击

   protected void cmdNext_Click(object sender, EventArgs e)
   {
        // Set viewstate variable to the previous page
        CurrentPage += 1;

        PagedDataSource pagedDS = new PagedDataSource();
        pagedDS.DataSource = ((DataTable)Cache["DataTable-cach"]).DefaultView;// cacheItem.DefaultView;
        pagedDS.AllowPaging = true;
        pagedDS.PageSize = 6;
        pagedDS.CurrentPageIndex = CurrentPage;

        dlPaging.DataSource = pagedDS;
        dlPaging.DataBind();

        // Disable Prev or Next buttons if necessary
        cmdPrev.Enabled = !pagedDS.IsFirstPage;
        cmdNext.Enabled = !pagedDS.IsLastPage;
    }

   protected void cmdPrev_Click(object sender, EventArgs e)
    {
        // Set viewstate variable to the previous page
        CurrentPage -= 1;
            PagedDataSource pagedDS = new PagedDataSource();
            pagedDS.DataSource = ((DataTable)Cache["DataTable-cach"]).DefaultView;// cacheItem.DefaultView;
            pagedDS.AllowPaging = true;
            pagedDS.PageSize = 6;
            pagedDS.CurrentPageIndex = CurrentPage;
            dlPaging.DataSource = pagedDS;
            dlPaging.DataBind();
            lblCurrentPage.Text = pagedDS.PageCount.ToString() + " صفحه    " + (CurrentPage + 1).ToString() + " از ";
            // Disable Prev or Next buttons if necessary
            cmdPrev.Enabled = !pagedDS.IsFirstPage;
            cmdNext.Enabled = !pagedDS.IsLastPage;

    }
     public int CurrentPage
    {
        get
        {
            // look for current page in ViewState
            object o = this.ViewState["_CurrentPage"];
            if (o == null)
                return 0; // default page index of 0
            else
                return (int)o;
        }

        set
        {
            this.ViewState["_CurrentPage"] = value;
        }
    }

【问题讨论】:

    标签: javascript jquery asp.net updatepanel datalist


    【解决方案1】:

    谢谢朋友
    我编辑html文件

     <ContentTemplate>
                  <script type="text/javascript">
                      Sys.Application.add_load(BindEvents);
                   </script>
                   .
                   .
                   .
    

    并编辑我的 jquery 文件

    function BindEvents() {
    //my jquery codes
    }
    

    快乐

    【讨论】:

      【解决方案2】:

      当您转到数据列表的下一页时,onclick 事件会解除绑定,因为更新面板会刷新 div 内的内容。所以必须再次添加 onclick 事件才能得到预期的结果。 在 datalist 绑定代码下方的 cs 页面中尝试以下操作。

      ScriptManager.RegisterClientScriptBlock(id of update panel, 
                          typeof(UpdatePanel), "string", 
                          "$(function () {$('.prod_details_sell a img').click(function () {
                         //some code is here
                         });)", true);
      

      【讨论】:

      • 谢谢你,我的 jquery 代码太长了,我不得不在 cs 文件上写很长的 jquery 代码
      • 谢谢你,我的 jquery 代码太长了,用你的方式我不得不在 cs 文件上写很长的 jquery 代码,我也测试了你的代码但不起作用!!
      • 只需要写一个函数,在dom准备好后调用。你不必写两次长代码。可以展示一点cs代码吗?分页是怎么实现的?
      • 如果您还需要任何其他信息,请告诉我。感谢您的帮助
      【解决方案3】:

      只需替换这个:

      $(".prod_details_sell a img").click(function () {
              //some code is here
      });
      


      用这个:

      Sys.Application.add_load(initJavaScripts);
      function initJavaScripts() {
          $(".prod_details_sell a img").click(function () {
              //some code is here
          });
      }
      

      【讨论】:

      • 感谢您的回答。我在 jquery 文件上替换它并且 jquery 不起作用(在第一页和其他页面上)。然后根据 pmtamal 的响应,Sys.Application.add_load(initJavaScripts) 写入 cs 文件但肠道语法错误。
      猜你喜欢
      • 2011-04-02
      • 2011-03-13
      • 2015-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-29
      • 1970-01-01
      • 2011-10-09
      相关资源
      最近更新 更多