【问题标题】:pageload() not being called after postback回发后未调用 pageload()
【发布时间】:2011-05-31 21:55:19
【问题描述】:

我的 div “附件”在回发后没有刷新,并且没有调用 pageLoad()

    <div id ="attachments">
<asp:UpdatePanel ID="updtPnlAttachements" runat ="server"  >

    <ContentTemplate>
         <asp:GridView ID="gvAttachments" runat="server"  ClientIDMode = "Static"   Width ="100%">
           <Columns>


           </Columns>
           <EmptyDataTemplate>
           <div> Sorry Empty</div>
           </EmptyDataTemplate>               
         </asp:GridView>

     </ContentTemplate>

</asp:UpdatePanel>

调用此按钮后

 public void ReportLinkButton_Click(object sender, EventArgs e)
{

  LinkButton Lbtn = (LinkButton)sender;
  string assessmentString = Lbtn.CommandArgument;
  Guid assessmentID = new Guid(assessmentString);

  DR_Data db = new DR_Data();
  var reports = db.GetAttachmentsByAssessmentID(assessmentID).ToList();

  gvAttachments.DataSource = reports;
  gvAttachments.DataBind();

  if (reports.Count() > 0)
  {
      gvAttachments.HeaderRow.TableSection = TableRowSection.TableHeader;
      gvAttachments.FooterRow.TableSection = TableRowSection.TableFooter;
  }


}

我的脚本是这样的

       function pageLoad() {var totalRows = $("#<%=gvAttachments.ClientID %> tr").length;

    if (totalRows > 0) {

        $("#dialog:ui-dialog").dialog("destroy");

        $("#attachments").dialog({
            hide: "fold",
            show: "blind",
            height: 500,
            width: 800,
            modal: true
        });
    }

    $('#gvNcReports').dataTable({
        "bJQueryUI": true,
        "sPaginationType": "full_numbers"
    });
}`

任何建议。谢谢

*更新**

我有多个更新面板,一旦我删除它们就可以了。

【问题讨论】:

  • 我没有看到函数 pageLoad 在任何地方被调用...这可能是你的问题吗?

标签: javascript jquery asp.net webforms


【解决方案1】:

试试:

using Sys.Application.add_load(function(sender, e) {

});

看看这是否会有所作为。当更新面板请求结束时,您还可以使用:

var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(function(sender, e) {

});

HTH。

【讨论】:

    【解决方案2】:

    我最终将它添加到 Page_Load 并且它可以工作

     string script = @"<script> 
                       function pageLoad() {
                        $('#gvNcReports').dataTable({
                          "bJQueryUI": true,
                          "bPaginate": false
                                });
                       $("#dialog:ui-dialog").dialog("destroy");
                       $("#updtPnlAttachements").dialog({
                        hide: "fold",
                        show: "blind",
                        height: 500,
                        width: 800,
                        modal: true
                       });
                    }
                    });</script>";
    
     Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"hover",script);
    

    但是我仍然必须在标头中添加 $(document).ready 和相同的脚本,以确保在最初呈现时一切正常,这是不好的做法吗?

    【讨论】:

      猜你喜欢
      • 2012-02-09
      • 1970-01-01
      • 1970-01-01
      • 2011-05-19
      • 2013-11-12
      • 1970-01-01
      • 2014-11-08
      • 1970-01-01
      • 2014-06-23
      相关资源
      最近更新 更多