Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更新面板时javascript不工作_Javascript_C#_Asp.net - Fatal编程技术网

更新面板时javascript不工作

更新面板时javascript不工作,javascript,c#,asp.net,Javascript,C#,Asp.net,我的页面中有几个选项卡,当我选择第一个下拉列表时,我试图在一个选项卡中更改另一个下拉列表。我正在使用updatepanel和脚本管理器。问题是我编写了一个datepicker javascript函数,如果我没有选择下拉框,它第一次可以正常工作,但是当我选择下拉框时,javascript就不工作了。如果有人能找出我做错了什么,这将是很有帮助的 <asp:ScriptManager ID="ScriptManager1" runat ="server"></asp:ScriptM

我的页面中有几个选项卡,当我选择第一个下拉列表时,我试图在一个选项卡中更改另一个下拉列表。我正在使用updatepanel和脚本管理器。问题是我编写了一个datepicker javascript函数,如果我没有选择下拉框,它第一次可以正常工作,但是当我选择下拉框时,javascript就不工作了。如果有人能找出我做错了什么,这将是很有帮助的

<asp:ScriptManager ID="ScriptManager1" runat ="server"></asp:ScriptManager>
<div id="requestHistory" class="tab-pane">
<asp:UpdatePanel ID="UpdatePanelCRHistory" runat="server" CssClass="row"     DefaultButton="btnSearch" UpdateMode="Conditional">
 <ContentTemplate>
  <div class="colmd-3 col-sm-3 col-xs-3 responsive-filterbar">
   <asp:DropDownList runat="server" ID="drpCRHistoryFramework" ClientIDMode="AutoID" DataTextField="title" DataValueField="frameworkID" CssClass="form-control" AutoPostBack="true" OnSelectedIndexChanged="drpCRHistoryFramework_SelectedIndexChanged">
    <asp:ListItem  Selected="true" Text ="--Framework--" value="0" ></asp:ListItem>
   </asp:DropDownList>                
  </div>
  <div class="colmd-3 col-sm-3 col-xs-3 responsive-filterbar">
   <asp:DropDownList runat="server" ID="drpCRHSkillName" ClientIDMode="AutoID" DataTextField="skillName" DataValueField="skillID" CssClass="form-control" AutoPostBack="true" OnSelectedIndexChanged="drpCRHSkillName_SelectedIndexChanged">
   </asp:DropDownList>
   </div>
   <div class="colmd-3 col-sm-3 col-xs-3 responsive-filterbar">
   <asp:DropDownList runat="server" ID="drpCRHLevel" ClientIDMode="AutoID"  CssClass="form-control" AutoPostBack="true" OnSelectedIndexChanged="drpCRHLevel_SelectedIndexChanged">
   </asp:DropDownList>
   </div>

   <div class="colmd-3 col-sm-3 col-xs-3 responsive-filterbar input-group date" style="padding-left: 15px;" id="dpDate">
   <asp:TextBox runat="server" ID="txtFromDate" ClientIDMode="Static" TextMode="SingleLine" CssClass="form-control datepicker" placeholder="0"></asp:TextBox>
            <span class="input-group-addon">
            <span class="glyphicon glyphicon-calendar"></span>
            </span>

   <asp:TextBox runat="server" ID="txtToDate" ClientIDMode="Static" TextMode="SingleLine" CssClass="form-control datepicker" placeholder="0"></asp:TextBox>
             <span class="input-group-addon">
             <span class="glyphicon glyphicon-calendar"></span>
             </span>
         </div><br /><br />
        <div class="col-md-3 col-sm-12 col-xs-12 responsive-filterbar">
          <div class="input-group">
            <asp:TextBox runat="server" ID="canidateRequestHistorySearchTextBox" ClientIDMode="Static" CssClass="form-control"></asp:TextBox>
            <span class="input-group-btn">
                <asp:LinkButton runat="server" ID="canidateRequestHistorySearchLinkButton" ClientIDMode="Static" OnClick="btncandidateRequestHistorySearch" CssClass="btn btn-primary" CausesValidation="false" ><span class="glyphicon glyphicon-search"></span></asp:LinkButton>
            </span>
          </div>
        </div>
         <br/><br/>
         </ContentTemplate>
         </asp:UpdatePanel>

问题在于,您将javascript设置为仅在页面准备就绪时调用。使用“更新”面板进行更新时,不会再次加载页面,但会更新单独的部分。这些部分包含需要javascript函数再次初始化控件的html

通过将其添加到母版页底部或特定页面底部,您可以使用以下命令(在MacBook上键入此命令,以便无法测试)触发初始加载和更新面板的初始化控件:

<script type="text/javascript">
function PartialPostBackFinished(sender, args) {
    var updatePanels = args.get_panelsUpdated();
    for (i = 0; i < updatedPanels.length; i++) {
        //Do whatever needs to be triggered for each updated update panel
        InitializeControls(updatedPanels[i]);
    }
}

function InitializeControls(container) {
    $('.datepicker', container).datepicker(); //Initialise any date pickers
}

if (Sys != undefined) {
    //There's a ScriptManager on the page
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_endRequest(PartialPostBackFinished);

    if (!prm.get_isInAsyncPostBack()) {
        //Trigger initialization for synchronous post back triggered outside updatepanels
        InitializeControls(document);
    }
}
else {
    //Trigger initialization for pages without ScriptManager
    InitializeControls(document);
}
</script> 

函数partialPostSuffished(发送方,参数){
var updatePanels=args.get_panelsUpdated();
对于(i=0;i
这也将取代注册ClientScriptBlock的需要,因此将其从代码隐藏中删除

<script type="text/javascript">
function PartialPostBackFinished(sender, args) {
    var updatePanels = args.get_panelsUpdated();
    for (i = 0; i < updatedPanels.length; i++) {
        //Do whatever needs to be triggered for each updated update panel
        InitializeControls(updatedPanels[i]);
    }
}

function InitializeControls(container) {
    $('.datepicker', container).datepicker(); //Initialise any date pickers
}

if (Sys != undefined) {
    //There's a ScriptManager on the page
    var prm = Sys.WebForms.PageRequestManager.getInstance();
    prm.add_endRequest(PartialPostBackFinished);

    if (!prm.get_isInAsyncPostBack()) {
        //Trigger initialization for synchronous post back triggered outside updatepanels
        InitializeControls(document);
    }
}
else {
    //Trigger initialization for pages without ScriptManager
    InitializeControls(document);
}
</script>